diff --git a/src/client/java/minicraft/entity/furniture/Bed.java b/src/client/java/minicraft/entity/furniture/Bed.java index f9515c00a..bd849a494 100644 --- a/src/client/java/minicraft/entity/furniture/Bed.java +++ b/src/client/java/minicraft/entity/furniture/Bed.java @@ -4,22 +4,45 @@ import minicraft.core.Updater; import minicraft.core.io.Localization; import minicraft.entity.mob.Player; +import minicraft.gfx.SpriteAnimation; import minicraft.gfx.SpriteLinker.LinkedSprite; import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.item.DyeItem; import minicraft.level.Level; +import minicraft.util.MyUtils; +import org.jetbrains.annotations.NotNull; import java.util.HashMap; public class Bed extends Furniture { + private static final HashMap sprites = new HashMap<>(); + private static final HashMap itemSprites = new HashMap<>(); + + @Override + public @NotNull Furniture copy() { + return new Bed(color); + } + + static { + for (DyeItem.DyeColor color : DyeItem.DyeColor.values()) { + sprites.put(color, new LinkedSprite(SpriteType.Entity, color.toString().toLowerCase() + "_bed")); + itemSprites.put(color, new LinkedSprite(SpriteType.Item, color.toString().toLowerCase() + "_bed")); + } + } + private static int playersAwake = 1; private static final HashMap sleepingPlayers = new HashMap<>(); + public final DyeItem.DyeColor color; + /** * Creates a new furniture with the name Bed and the bed sprite and color. */ - public Bed() { - super("Bed", new LinkedSprite(SpriteType.Entity, "bed"), new LinkedSprite(SpriteType.Item, "bed"), 3, 2); + public Bed() { this(DyeItem.DyeColor.WHITE); } + public Bed(DyeItem.DyeColor color) { + super(MyUtils.capitalizeFully(color.toString().replace('_', ' ')) + " Bed", sprites.get(color), itemSprites.get(color), 3, 2); + this.color = color; } /** diff --git a/src/client/java/minicraft/entity/furniture/Crafter.java b/src/client/java/minicraft/entity/furniture/Crafter.java index 9326b41b7..a3e2af5f2 100644 --- a/src/client/java/minicraft/entity/furniture/Crafter.java +++ b/src/client/java/minicraft/entity/furniture/Crafter.java @@ -19,7 +19,8 @@ public enum Type { Furnace(new LinkedSprite(SpriteType.Entity, "furnace"), new LinkedSprite(SpriteType.Item, "furnace"), 3, 2, Recipes.furnaceRecipes), Anvil(new LinkedSprite(SpriteType.Entity, "anvil"), new LinkedSprite(SpriteType.Item, "anvil"), 3, 2, Recipes.anvilRecipes), Enchanter(new LinkedSprite(SpriteType.Entity, "enchanter"), new LinkedSprite(SpriteType.Item, "enchanter"), 7, 2, Recipes.enchantRecipes), - Loom(new LinkedSprite(SpriteType.Entity, "loom"), new LinkedSprite(SpriteType.Item, "loom"), 7, 2, Recipes.loomRecipes); + Loom(new LinkedSprite(SpriteType.Entity, "loom"), new LinkedSprite(SpriteType.Item, "loom"), 7, 2, Recipes.loomRecipes), + DyeVat(new LinkedSprite(SpriteType.Entity, "dyevat"), new LinkedSprite(SpriteType.Item, "dyevat"), 0, 0, Recipes.dyeVatRecipes); public ArrayList recipes; protected LinkedSprite sprite; @@ -45,12 +46,12 @@ public enum Type { * @param type What type of crafter this is. */ public Crafter(Crafter.Type type) { - super(type.name(), type.sprite, type.itemSprite, type.xr, type.yr); + super((type.name().equalsIgnoreCase("DyeVat") ? "Dye Vat" : type.name()), type.sprite, type.itemSprite, type.xr, type.yr); this.type = type; } public boolean use(Player player) { - Game.setDisplay(new CraftingDisplay(type.recipes, type.name(), player)); + Game.setDisplay(new CraftingDisplay(type.recipes, (type.name().equalsIgnoreCase("DyeVat") ? "Dye Vat" : type.name()), player)); return true; } @@ -61,6 +62,6 @@ public boolean use(Player player) { @Override public String toString() { - return type.name() + getDataPrints(); + return (type.name().equalsIgnoreCase("DyeVat") ? "Dye Vat" : type.name()) + getDataPrints(); } } diff --git a/src/client/java/minicraft/entity/mob/Mob.java b/src/client/java/minicraft/entity/mob/Mob.java index bd2cd181e..c19efad36 100644 --- a/src/client/java/minicraft/entity/mob/Mob.java +++ b/src/client/java/minicraft/entity/mob/Mob.java @@ -196,7 +196,7 @@ public static LinkedSprite[][] compileMobSpriteAnimations(int sheetX, int sheetY private boolean isWooling() { // supposed to walk at half speed on wool if (level == null) return false; Tile tile = level.getTile(x >> 4, y >> 4); - return tile == Tiles.get("wool"); + return tile == Tiles.get("white wool"); } /** diff --git a/src/client/java/minicraft/entity/mob/Sheep.java b/src/client/java/minicraft/entity/mob/Sheep.java index f8c1dc583..63a18cc3a 100644 --- a/src/client/java/minicraft/entity/mob/Sheep.java +++ b/src/client/java/minicraft/entity/mob/Sheep.java @@ -1,5 +1,8 @@ package minicraft.entity.mob; +import minicraft.item.DyeItem; +import org.jetbrains.annotations.Nullable; + import minicraft.core.io.Settings; import minicraft.entity.Direction; import minicraft.gfx.Screen; @@ -11,19 +14,42 @@ import minicraft.level.tile.GrassTile; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; -import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; public class Sheep extends PassiveMob { - private static final LinkedSprite[][] sprites = Mob.compileMobSpriteAnimations(0, 0, "sheep"); - private static final LinkedSprite[][] cutSprites = Mob.compileMobSpriteAnimations(0, 2, "sheep"); + private static final HashMap sprites = new HashMap<>(); + private static final HashMap cutSprites = new HashMap<>(); + + static { + for (DyeItem.DyeColor color : DyeItem.DyeColor.values()) { + LinkedSprite[][] mobSprites = Mob.compileMobSpriteAnimations(0, 0, "sheep"); + for (LinkedSprite[] mobSprite : mobSprites) { + for (LinkedSprite linkedSprite : mobSprite) { + linkedSprite.setColor(color.color); + } + } + sprites.put(color, mobSprites); + mobSprites = Mob.compileMobSpriteAnimations(0, 2, "sheep"); + for (LinkedSprite[] mobSprite : mobSprites) { + for (LinkedSprite linkedSprite : mobSprite) { + linkedSprite.setColor(color.color); + } + } + cutSprites.put(color, mobSprites); + } + } public boolean cut = false; + public DyeItem.DyeColor color; /** * Creates a sheep entity. */ - public Sheep() { - super(sprites); + public Sheep() { this(DyeItem.DyeColor.WHITE); } + public Sheep(DyeItem.DyeColor color) { + super(null); + this.color = color; } @Override @@ -31,7 +57,7 @@ public void render(Screen screen) { int xo = x - 8; int yo = y - 11; - LinkedSprite[][] curAnim = cut ? cutSprites : sprites; + LinkedSprite[][] curAnim = cut ? cutSprites.get(color) : sprites.get(color); LinkedSprite curSprite = curAnim[dir.getDir()][(walkDist >> 3) % curAnim[dir.getDir()].length]; if (hurtTime > 0) { @@ -52,15 +78,17 @@ public void tick() { } public boolean interact(Player player, @Nullable Item item, Direction attackDir) { - if (cut) return false; - if (item instanceof ToolItem) { - if (((ToolItem) item).type == ToolType.Shears) { + if (!cut && ((ToolItem) item).type == ToolType.Shears) { cut = true; - dropItem(1, 3, Items.get("Wool")); + dropItem(1, 3, Items.get(color.toString().replace('_', ' ') + " Wool")); ((ToolItem) item).payDurability(); return true; } + } else if (item instanceof DyeItem) { + color = ((DyeItem) item).color; + ((DyeItem) item).count--; + return true; } return false; } @@ -80,7 +108,7 @@ public void die() { max = 2; } - if (!cut) dropItem(min, max, Items.get("wool")); + if (!cut) dropItem(min, max, Items.get(color.toString().replace('_', ' ') + " Wool")); dropItem(min, max, Items.get("Raw Beef")); super.die(); diff --git a/src/client/java/minicraft/item/ClothingItem.java b/src/client/java/minicraft/item/ClothingItem.java index 49711a92a..f23922640 100644 --- a/src/client/java/minicraft/item/ClothingItem.java +++ b/src/client/java/minicraft/item/ClothingItem.java @@ -25,7 +25,7 @@ protected static ArrayList getAllInstances() { items.add(new ClothingItem("Orange Clothes", new LinkedSprite(SpriteType.Item, "orange_clothes"), Color.get(1, 255, 102, 0))); items.add(new ClothingItem("Purple Clothes", new LinkedSprite(SpriteType.Item, "purple_clothes"), Color.get(1, 102, 0, 153))); items.add(new ClothingItem("Cyan Clothes", new LinkedSprite(SpriteType.Item, "cyan_clothes"), Color.get(1, 0, 102, 153))); - items.add(new ClothingItem("Reg Clothes", new LinkedSprite(SpriteType.Item, "reg_clothes"), Color.get(1, 51, 51, 0))); + items.add(new ClothingItem("Reg Clothes", new LinkedSprite(SpriteType.Item, "reg_clothes"), Color.get(1, 51, 51, 0))); // Dark Green return items; } diff --git a/src/client/java/minicraft/item/DyeItem.java b/src/client/java/minicraft/item/DyeItem.java new file mode 100644 index 000000000..923e905a1 --- /dev/null +++ b/src/client/java/minicraft/item/DyeItem.java @@ -0,0 +1,58 @@ +package minicraft.item; + +import minicraft.gfx.SpriteLinker; +import minicraft.util.MyUtils; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; + +public class DyeItem extends StackableItem { + + protected static ArrayList getAllInstances() { + ArrayList items = new ArrayList<>(); + + for (DyeColor color : DyeColor.values()) { + items.add(new DyeItem(MyUtils.capitalizeFully(color.toString().replace('_', ' ')) + " Dye", new SpriteLinker.LinkedSprite( + SpriteLinker.SpriteType.Item, color.toString().toLowerCase() + "_dye"), color)); + } + + return items; + } + + public final DyeColor color; + + protected DyeItem(String name, SpriteLinker.LinkedSprite sprite, DyeColor color) { + super(name, sprite); + this.color = color; + } + + public enum DyeColor { + BLACK(0x1_1D1D21), + RED(0x1_B02E26), + GREEN(0x1_5E7C16), + BROWN(0x1_835432), + BLUE(0x1_3C44AA), + PURPLE(0x1_8932B8), + CYAN(0x1_169C9C), + LIGHT_GRAY(0x1_9D9D97), + GRAY(0x1_474F52), + PINK(0x1_F38BAA), + LIME(0x1_80C71F), + YELLOW(0x1_FED83D), + LIGHT_BLUE(0x1_3AB3DA), + MAGENTA(0x1_C74EBD), + ORANGE(0x1_F9801D), + WHITE(0x1_F9FFFE); + + public final int color; + + DyeColor(int color) { + this.color = color; + } + } + + @Override + public @NotNull DyeItem copy() { + return new DyeItem(getName(), sprite, color); + } +} diff --git a/src/client/java/minicraft/item/FurnitureItem.java b/src/client/java/minicraft/item/FurnitureItem.java index 780edc594..a6bcb86df 100644 --- a/src/client/java/minicraft/item/FurnitureItem.java +++ b/src/client/java/minicraft/item/FurnitureItem.java @@ -51,13 +51,18 @@ protected static ArrayList getAllInstances() { for (Crafter.Type type : Crafter.Type.values()) { items.add(new FurnitureItem(new Crafter(type))); } + // Add the various lanterns for (Lantern.Type type : Lantern.Type.values()) { items.add(new FurnitureItem(new Lantern(type))); } + // Add the various colors of bed + for (DyeItem.DyeColor color : DyeItem.DyeColor.values()) { + items.add(new FurnitureItem(new Bed(color))); + } + items.add(new FurnitureItem(new Tnt())); - items.add(new FurnitureItem(new Bed())); items.add(new FurnitureItem(new Composter())); return items; diff --git a/src/client/java/minicraft/item/Items.java b/src/client/java/minicraft/item/Items.java index 1cd9a1860..b9ee58b36 100644 --- a/src/client/java/minicraft/item/Items.java +++ b/src/client/java/minicraft/item/Items.java @@ -44,6 +44,8 @@ private static void addAll(ArrayList items) { addAll(SummonItem.getAllInstances()); addAll(HeartItem.getAllInstances()); addAll(WateringCanItem.getAllInstances()); + addAll(DyeItem.getAllInstances()); + addAll(WoolItem.getAllInstances()); } public static ArrayList getAll() { diff --git a/src/client/java/minicraft/item/Recipe.java b/src/client/java/minicraft/item/Recipe.java index d50cdfe3e..3f0a415c7 100644 --- a/src/client/java/minicraft/item/Recipe.java +++ b/src/client/java/minicraft/item/Recipe.java @@ -4,6 +4,7 @@ import minicraft.entity.mob.Player; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.TreeMap; @@ -114,4 +115,10 @@ public int hashCode() { result = 31 * result + amount; return result; } + + @Override + public String toString() { + return product + ":" + amount + + "[" + String.join(";", costs.entrySet().stream().map(e -> e.getKey() + ":" + e.getValue())::iterator) + "]"; + } } diff --git a/src/client/java/minicraft/item/Recipes.java b/src/client/java/minicraft/item/Recipes.java index ebce5bd2b..8f3f5fce7 100644 --- a/src/client/java/minicraft/item/Recipes.java +++ b/src/client/java/minicraft/item/Recipes.java @@ -1,6 +1,7 @@ package minicraft.item; import minicraft.entity.furniture.Bed; +import minicraft.level.tile.FlowerTile; import minicraft.saveload.Save; import org.json.JSONArray; import org.json.JSONObject; @@ -30,6 +31,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -45,6 +47,7 @@ public class Recipes { public static final ArrayList enchantRecipes = new ArrayList<>(); public static final ArrayList craftRecipes = new ArrayList<>(); public static final ArrayList loomRecipes = new ArrayList<>(); + public static final ArrayList dyeVatRecipes = new ArrayList<>(); static { craftRecipes.add(new Recipe("Workbench_1", "Wood_10")); @@ -77,7 +80,8 @@ public class Recipes { workbenchRecipes.add(new Recipe("Chest_1", "Wood_20")); workbenchRecipes.add(new Recipe("Anvil_1", "iron_5")); workbenchRecipes.add(new Recipe("Tnt_1", "Gunpowder_10", "Sand_8")); - workbenchRecipes.add(new Recipe("Loom_1", "Wood_10", "Wool_5")); + workbenchRecipes.add(new Recipe("Loom_1", "Wood_10", "White Wool_5")); + workbenchRecipes.add(new Recipe("Dye Vat_1", "Stone_10", "iron_5")); workbenchRecipes.add(new Recipe("Wood Fishing Rod_1", "Wood_10", "String_3")); workbenchRecipes.add(new Recipe("Iron Fishing Rod_1", "Iron_10", "String_3")); workbenchRecipes.add(new Recipe("Gold Fishing Rod_1", "Gold_10", "String_3")); @@ -100,21 +104,100 @@ public class Recipes { workbenchRecipes.add(new Recipe("Leather Armor_1", "leather_10")); workbenchRecipes.add(new Recipe("Snake Armor_1", "scale_15")); - loomRecipes.add(new Recipe("String_2", "Wool_1")); - loomRecipes.add(new Recipe("red wool_1", "Wool_1", "rose_1")); - loomRecipes.add(new Recipe("blue wool_1", "Wool_1", "Lapis_1")); - loomRecipes.add(new Recipe("green wool_1", "Wool_1", "Cactus_1")); - loomRecipes.add(new Recipe("yellow wool_1", "Wool_1", "Flower_1")); - loomRecipes.add(new Recipe("black wool_1", "Wool_1", "coal_1")); - loomRecipes.add(new Recipe("Bed_1", "Wood_5", "Wool_3")); - - loomRecipes.add(new Recipe("blue clothes_1", "cloth_5", "Lapis_1")); - loomRecipes.add(new Recipe("green clothes_1", "cloth_5", "Cactus_1")); - loomRecipes.add(new Recipe("yellow clothes_1", "cloth_5", "Flower_1")); - loomRecipes.add(new Recipe("black clothes_1", "cloth_5", "coal_1")); - loomRecipes.add(new Recipe("orange clothes_1", "cloth_5", "rose_1", "Flower_1")); - loomRecipes.add(new Recipe("purple clothes_1", "cloth_5", "Lapis_1", "rose_1")); - loomRecipes.add(new Recipe("cyan clothes_1", "cloth_5", "Lapis_1", "Cactus_1")); + dyeVatRecipes.add(new Recipe("white dye_1", "White Lily_1")); + dyeVatRecipes.add(new Recipe("light gray dye_1", "Oxeye Daisy_1")); + dyeVatRecipes.add(new Recipe("light gray dye_1", "Hydrangea_1")); + dyeVatRecipes.add(new Recipe("light gray dye_1", "White Tulip_1")); + dyeVatRecipes.add(new Recipe("blue dye_1", "Lapis_1")); + dyeVatRecipes.add(new Recipe("blue dye_1", "Cornflower_1")); + dyeVatRecipes.add(new Recipe("blue dye_1", "Iris_1")); + dyeVatRecipes.add(new Recipe("green dye_1", "Cactus_1")); + dyeVatRecipes.add(new Recipe("yellow dye_1", "Sunflower_1")); + dyeVatRecipes.add(new Recipe("yellow dye_1", "Dandelion_1")); + dyeVatRecipes.add(new Recipe("light blue dye_1", "Blue Orchid_1")); + dyeVatRecipes.add(new Recipe("light blue dye_1", "Periwinkle_1")); + dyeVatRecipes.add(new Recipe("black dye_1", "Coal_1")); + dyeVatRecipes.add(new Recipe("red dye_1", "Rose_1")); + dyeVatRecipes.add(new Recipe("red dye_1", "Red Tulip_1")); + dyeVatRecipes.add(new Recipe("red dye_1", "Poppy_1")); + dyeVatRecipes.add(new Recipe("magenta dye_1", "Allium_1")); + dyeVatRecipes.add(new Recipe("orange dye_1", "Orange Tulip_1")); + dyeVatRecipes.add(new Recipe("pink dye_1", "Pink Tulip_1")); + dyeVatRecipes.add(new Recipe("pink dye_1", "Peony_1")); + dyeVatRecipes.add(new Recipe("pink dye_1", "Pink Lily_1")); + dyeVatRecipes.add(new Recipe("purple dye_1", "Violet_1")); + dyeVatRecipes.add(new Recipe("orange dye_2", "red dye_1", "yellow dye_1")); + dyeVatRecipes.add(new Recipe("purple dye_2", "blue dye_1", "red dye_1")); + dyeVatRecipes.add(new Recipe("cyan dye_2", "blue dye_1", "green dye_1")); + dyeVatRecipes.add(new Recipe("brown dye_2", "green dye_1", "red dye_1")); + dyeVatRecipes.add(new Recipe("pink dye_2", "white dye_1", "red dye_1")); + dyeVatRecipes.add(new Recipe("light blue dye_2", "white dye_1", "blue dye_1")); + dyeVatRecipes.add(new Recipe("lime dye_2", "white dye_1", "green dye_1")); + dyeVatRecipes.add(new Recipe("gray dye_2", "white dye_1", "black dye_1")); + dyeVatRecipes.add(new Recipe("light gray dye_2", "white dye_1", "gray dye_1")); + dyeVatRecipes.add(new Recipe("light gray dye_3", "white dye_2", "black dye_1")); + dyeVatRecipes.add(new Recipe("magenta dye_2", "purple dye_1", "pink dye_1")); + dyeVatRecipes.add(new Recipe("magenta dye_4", "red dye_2", "white dye_1", "blue dye_1")); + dyeVatRecipes.add(new Recipe("magenta dye_4", "pink dye_1", "red dye_1", "blue dye_1")); + + loomRecipes.add(new Recipe("String_2", "white wool_1")); + loomRecipes.add(new Recipe("white wool_1", "String_3")); + loomRecipes.add(new Recipe("black wool_1", "white wool_1", "black dye_1")); + loomRecipes.add(new Recipe("red wool_1", "white wool_1", "red dye_1")); + loomRecipes.add(new Recipe("green wool_1", "white wool_1", "green dye_1")); + loomRecipes.add(new Recipe("brown wool_1", "white wool_1", "brown dye_1")); + loomRecipes.add(new Recipe("blue wool_1", "white wool_1", "blue dye_1")); + loomRecipes.add(new Recipe("purple wool_1", "white wool_1", "purple dye_1")); + loomRecipes.add(new Recipe("cyan wool_1", "white wool_1", "cyan dye_1")); + loomRecipes.add(new Recipe("light gray wool_1", "white wool_1", "light gray dye_1")); + loomRecipes.add(new Recipe("gray wool_1", "white wool_1", "gray dye_1")); + loomRecipes.add(new Recipe("pink wool_1", "white wool_1", "pink dye_1")); + loomRecipes.add(new Recipe("lime wool_1", "white wool_1", "lime dye_1")); + loomRecipes.add(new Recipe("yellow wool_1", "white wool_1", "yellow dye_1")); + loomRecipes.add(new Recipe("light blue wool_1", "white wool_1", "light blue dye_1")); + loomRecipes.add(new Recipe("magenta wool_1", "white wool_1", "magenta dye_1")); + loomRecipes.add(new Recipe("orange wool_1", "white wool_1", "orange dye_1")); + + loomRecipes.add(new Recipe("white Bed_1", "Wood_5", "white wool_3")); + loomRecipes.add(new Recipe("black Bed_1", "Wood_5", "black wool_3")); + loomRecipes.add(new Recipe("red Bed_1", "Wood_5", "red wool_3")); + loomRecipes.add(new Recipe("green Bed_1", "Wood_5", "green wool_3")); + loomRecipes.add(new Recipe("brown Bed_1", "Wood_5", "brown wool_3")); + loomRecipes.add(new Recipe("blue Bed_1", "Wood_5", "blue wool_3")); + loomRecipes.add(new Recipe("purple Bed_1", "Wood_5", "purple wool_3")); + loomRecipes.add(new Recipe("cyan Bed_1", "Wood_5", "cyan wool_3")); + loomRecipes.add(new Recipe("light gray Bed_1", "Wood_5", "light gray wool_3")); + loomRecipes.add(new Recipe("gray Bed_1", "Wood_5", "gray wool_3")); + loomRecipes.add(new Recipe("pink Bed_1", "Wood_5", "pink wool_3")); + loomRecipes.add(new Recipe("lime Bed_1", "Wood_5", "lime wool_3")); + loomRecipes.add(new Recipe("yellow Bed_1", "Wood_5", "yellow wool_3")); + loomRecipes.add(new Recipe("light blue Bed_1", "Wood_5", "light blue wool_3")); + loomRecipes.add(new Recipe("magenta Bed_1", "Wood_5", "magenta wool_3")); + loomRecipes.add(new Recipe("orange Bed_1", "Wood_5", "orange wool_3")); + + loomRecipes.add(new Recipe("black Bed_1", "White Bed_1", "black dye_1")); + loomRecipes.add(new Recipe("red Bed_1", "White Bed_1", "red dye_1")); + loomRecipes.add(new Recipe("green Bed_1", "White Bed_1", "green dye_1")); + loomRecipes.add(new Recipe("brown Bed_1", "White Bed_1", "brown dye_1")); + loomRecipes.add(new Recipe("blue Bed_1", "White Bed_1", "blue dye_1")); + loomRecipes.add(new Recipe("purple Bed_1", "White Bed_1", "purple dye_1")); + loomRecipes.add(new Recipe("cyan Bed_1", "White Bed_1", "cyan dye_1")); + loomRecipes.add(new Recipe("light gray Bed_1", "White Bed_1", "light gray dye_1")); + loomRecipes.add(new Recipe("gray Bed_1", "White Bed_1", "gray dye_1")); + loomRecipes.add(new Recipe("pink Bed_1", "White Bed_1", "pink dye_1")); + loomRecipes.add(new Recipe("lime Bed_1", "White Bed_1", "lime dye_1")); + loomRecipes.add(new Recipe("yellow Bed_1", "White Bed_1", "yellow dye_1")); + loomRecipes.add(new Recipe("light blue Bed_1", "White Bed_1", "light blue dye_1")); + loomRecipes.add(new Recipe("magenta Bed_1", "White Bed_1", "magenta dye_1")); + loomRecipes.add(new Recipe("orange Bed_1", "White Bed_1", "orange dye_1")); + + loomRecipes.add(new Recipe("blue clothes_1", "cloth_5", "blue dye_1")); + loomRecipes.add(new Recipe("green clothes_1", "cloth_5", "green dye_1")); + loomRecipes.add(new Recipe("yellow clothes_1", "cloth_5", "yellow dye_1")); + loomRecipes.add(new Recipe("black clothes_1", "cloth_5", "black dye_1")); + loomRecipes.add(new Recipe("orange clothes_1", "cloth_5", "orange dye_1")); + loomRecipes.add(new Recipe("purple clothes_1", "cloth_5", "purple dye_1")); + loomRecipes.add(new Recipe("cyan clothes_1", "cloth_5", "cyan dye_1")); loomRecipes.add(new Recipe("reg clothes_1", "cloth_5")); loomRecipes.add(new Recipe("Leather Armor_1", "leather_10")); @@ -188,6 +271,7 @@ public static void main(String[] args) { recipes.addAll(enchantRecipes); recipes.addAll(craftRecipes); recipes.addAll(loomRecipes); + recipes.addAll(dyeVatRecipes); HashMap recipeMap = new HashMap<>(); HashMap> duplicatedRecipes = new HashMap<>(); Function itemNameFixer = item -> { @@ -196,15 +280,30 @@ public static void main(String[] args) { item instanceof ToolItem ? name.replaceAll("(?i)wood", "wooden").replaceAll("(?i)rock", "stone") : name) .toLowerCase().replace(' ', '_'); }; + String[] flowerNames = Arrays.stream(FlowerTile.FlowerVariant.values()).map(FlowerTile.FlowerVariant::getName).toArray(String[]::new); + HashMap resolvedRecipes = new HashMap<>(); // Directly hardcoded + resolvedRecipes.put(new Recipe("light gray dye_2", "white dye_1", "gray dye_1"), "light_gray_dye_from_gray_white_dye"); + resolvedRecipes.put(new Recipe("light gray dye_2", "white dye_1", "black dye_1"), "light_gray_dye_from_black_white_dye"); + resolvedRecipes.put(new Recipe("magenta dye_2", "purple dye_1", "pink dye_1"), "magenta_dye_from_purple_and_pink"); + resolvedRecipes.put(new Recipe("magenta dye_4", "red dye_2", "white dye_1", "blue dye_1"), "magenta_dye_from_blue_red_white_dye"); + resolvedRecipes.put(new Recipe("magenta dye_4", "pink dye_1", "red dye_1", "blue dye_1"), "magenta_dye_from_blue_red_pink"); Function recipeNameFixer = recipe -> { // This is applied when duplication occurs. Item item = recipe.getProduct(); String name = itemNameFixer.apply(item); - /*if (item instanceof DyeItem) { TODO + String resolved; + if ((resolved = resolvedRecipes.get(recipe)) != null) return resolved; + if (item instanceof DyeItem) { Map costs = recipe.getCosts(); - if (costs.size() == 2 && costs.containsKey("WHITE DYE")) + if (costs.size() == 2 && costs.containsKey("WHITE DYE") && + costs.keySet().stream().filter(c -> c.endsWith("DYE")).count() == 1) return name + "_from_white_dye"; - return name; - } else*/ if (item instanceof FurnitureItem && ((FurnitureItem) item).furniture instanceof Bed) { + if (costs.size() == 1) { + String cost = costs.keySet().iterator().next(); + if (Arrays.stream(flowerNames).anyMatch(n -> n.equalsIgnoreCase(cost))) { + return name + "_from_" + cost.toLowerCase().replace(' ', '_'); + } + } + } else if (item instanceof FurnitureItem && ((FurnitureItem) item).furniture instanceof Bed) { if (recipe.getCosts().containsKey("WHITE BED")) return name + "_from_white_bed"; return name; diff --git a/src/client/java/minicraft/item/StackableItem.java b/src/client/java/minicraft/item/StackableItem.java index b66dfac8b..74b931cf2 100644 --- a/src/client/java/minicraft/item/StackableItem.java +++ b/src/client/java/minicraft/item/StackableItem.java @@ -28,7 +28,6 @@ protected static ArrayList getAllInstances() { items.add(new StackableItem("Gold Ore", new LinkedSprite(SpriteType.Item, "gold_ore"))); items.add(new StackableItem("Iron", new LinkedSprite(SpriteType.Item, "iron_ingot"))); items.add(new StackableItem("Gold", new LinkedSprite(SpriteType.Item, "gold_ingot"))); - items.add(new StackableItem("Rose", new LinkedSprite(SpriteType.Item, "red_flower"))); items.add(new StackableItem("Gunpowder", new LinkedSprite(SpriteType.Item, "gunpowder"))); items.add(new StackableItem("Slime", new LinkedSprite(SpriteType.Item, "slime"))); items.add(new StackableItem("Glass", new LinkedSprite(SpriteType.Item, "glass"))); diff --git a/src/client/java/minicraft/item/TileItem.java b/src/client/java/minicraft/item/TileItem.java index 4c4ea0d3e..c6e1d87b4 100644 --- a/src/client/java/minicraft/item/TileItem.java +++ b/src/client/java/minicraft/item/TileItem.java @@ -9,6 +9,7 @@ import minicraft.gfx.SpriteLinker.LinkedSprite; import minicraft.gfx.SpriteLinker.SpriteType; import minicraft.level.Level; +import minicraft.level.tile.FlowerTile; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; import minicraft.screen.AchievementsDisplay; @@ -21,6 +22,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.function.Function; +import java.util.function.IntFunction; public class TileItem extends StackableItem { @@ -28,7 +31,6 @@ protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); /// TileItem sprites all have 1x1 sprites. - items.add(new TileItem("Flower", new LinkedSprite(SpriteType.Item, "white_flower"), new TileModel("flower"), "grass")); items.add(new TileItem("Acorn", new LinkedSprite(SpriteType.Item, "acorn"), new TileModel("tree Sapling"), "grass")); items.add(new TileItem("Dirt", new LinkedSprite(SpriteType.Item, "dirt"), new TileModel("dirt"), "hole", "water", "lava")); items.add(new TileItem("Natural Rock", new LinkedSprite(SpriteType.Item, "stone"), new TileModel("rock"), "hole", "dirt", "sand", "grass", "path", "water", "lava")); @@ -55,13 +57,6 @@ protected static ArrayList getAllInstances() { items.add(new TileItem("Obsidian Door", new LinkedSprite(SpriteType.Item, "obsidian_door"), new TileModel("Obsidian Door"), "Obsidian")); items.add(new TileItem("Obsidian Fence", new LinkedSprite(SpriteType.Item, "obsidian_fence"), new TileModel("Obsidian Fence", placeOverWithID), solidTiles)); - items.add(new TileItem("Wool", new LinkedSprite(SpriteType.Item, "wool"), new TileModel("Wool"), "hole", "water")); - items.add(new TileItem("Red Wool", new LinkedSprite(SpriteType.Item, "red_wool"), new TileModel("Red Wool"), "hole", "water")); - items.add(new TileItem("Blue Wool", new LinkedSprite(SpriteType.Item, "blue_wool"), new TileModel("Blue Wool"), "hole", "water")); - items.add(new TileItem("Green Wool", new LinkedSprite(SpriteType.Item, "green_wool"), new TileModel("Green Wool"), "hole", "water")); - items.add(new TileItem("Yellow Wool", new LinkedSprite(SpriteType.Item, "yellow_wool"), new TileModel("Yellow Wool"), "hole", "water")); - items.add(new TileItem("Black Wool", new LinkedSprite(SpriteType.Item, "black_wool"), new TileModel("Black Wool"), "hole", "water")); - items.add(new TileItem("Sand", new LinkedSprite(SpriteType.Item, "sand"), new TileModel("sand"), "hole", "water", "lava")); items.add(new TileItem("Cactus", new LinkedSprite(SpriteType.Item, "cactus"), new TileModel("cactus Sapling"), "sand")); items.add(new TileItem("Cloud", new LinkedSprite(SpriteType.Item, "cloud"), new TileModel("cloud"), "Infinite Fall")); @@ -84,6 +79,27 @@ protected static ArrayList getAllInstances() { return placeOverWithID.getTileData(model1, target, level, xt, yt, player, attackDir); }), solidTiles)); + Function flowerModelGenerator = variant -> (model1, target, level, xt, yt, player, attackDir) -> variant.ordinal(); + items.add(new TileItem("Rose", new LinkedSprite(SpriteType.Item, "rose"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ROSE)), "grass")); + items.add(new TileItem("Oxeye Daisy", new LinkedSprite(SpriteType.Item, "oxeye_daisy"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.OXEYE_DAISY)), "grass")); + items.add(new TileItem("Sunflower", new LinkedSprite(SpriteType.Item, "sunflower"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.SUNFLOWER)), "grass")); + items.add(new TileItem("Allium", new LinkedSprite(SpriteType.Item, "allium"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ALLIUM)), "grass")); + items.add(new TileItem("Blue Orchid", new LinkedSprite(SpriteType.Item, "blue_orchid"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.BLUE_ORCHID)), "grass")); + items.add(new TileItem("Cornflower", new LinkedSprite(SpriteType.Item, "cornflower"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.CORNFLOWER)), "grass")); + items.add(new TileItem("Dandelion", new LinkedSprite(SpriteType.Item, "dandelion"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.DANDELION)), "grass")); + items.add(new TileItem("Hydrangea", new LinkedSprite(SpriteType.Item, "hydrangea"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.HYDRANGEA)), "grass")); + items.add(new TileItem("Iris", new LinkedSprite(SpriteType.Item, "iris"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.IRIS)), "grass")); + items.add(new TileItem("Orange Tulip", new LinkedSprite(SpriteType.Item, "orange_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ORANGE_TULIP)), "grass")); + items.add(new TileItem("Pink Tulip", new LinkedSprite(SpriteType.Item, "pink_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PINK_TULIP)), "grass")); + items.add(new TileItem("Red Tulip", new LinkedSprite(SpriteType.Item, "red_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.RED_TULIP)), "grass")); + items.add(new TileItem("White Tulip", new LinkedSprite(SpriteType.Item, "white_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.WHITE_TULIP)), "grass")); + items.add(new TileItem("Peony", new LinkedSprite(SpriteType.Item, "peony"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PEONY)), "grass")); + items.add(new TileItem("Periwinkle", new LinkedSprite(SpriteType.Item, "periwinkle"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PERIWINKLE)), "grass")); + items.add(new TileItem("Pink Lily", new LinkedSprite(SpriteType.Item, "pink_lily"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PINK_LILY)), "grass")); + items.add(new TileItem("White Lily", new LinkedSprite(SpriteType.Item, "white_lily"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.WHITE_LILY)), "grass")); + items.add(new TileItem("Poppy", new LinkedSprite(SpriteType.Item, "poppy"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.POPPY)), "grass")); + items.add(new TileItem("Violet", new LinkedSprite(SpriteType.Item, "violet"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.VIOLET)), "grass")); + // Creative mode available tiles: items.add(new TileItem("Farmland", SpriteLinker.missingTexture(SpriteType.Item), new TileModel("farmland"), "dirt", "grass", "hole")); items.add(new TileItem("Hole", SpriteLinker.missingTexture(SpriteType.Item), new TileModel("hole"), "dirt", "grass")); diff --git a/src/client/java/minicraft/item/WateringCanItem.java b/src/client/java/minicraft/item/WateringCanItem.java index 486d1c218..8786ab011 100644 --- a/src/client/java/minicraft/item/WateringCanItem.java +++ b/src/client/java/minicraft/item/WateringCanItem.java @@ -8,6 +8,7 @@ import minicraft.gfx.SpriteLinker; import minicraft.level.Level; import minicraft.level.tile.DirtTile; +import minicraft.level.tile.FlowerTile; import minicraft.level.tile.GrassTile; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; @@ -85,7 +86,8 @@ public boolean interactOn(Tile tile, Level level, int xt, int yt, Player player, level.add(new Particle((int) x, (int) y, 120 + random.nextInt(21) - 40, particleSprite)); } if (random.nextInt(60) == 0) { // Small chance for growing flowers - level.setTile(xt, yt, Tiles.get((short) 2), random.nextInt(2)); + level.setTile(xt, yt, Tiles.get((short) 2), + random.nextInt(FlowerTile.FlowerVariant.values().length)); } } diff --git a/src/client/java/minicraft/item/WoolItem.java b/src/client/java/minicraft/item/WoolItem.java new file mode 100644 index 000000000..ce5f3321b --- /dev/null +++ b/src/client/java/minicraft/item/WoolItem.java @@ -0,0 +1,32 @@ +package minicraft.item; + +import minicraft.gfx.SpriteLinker; +import minicraft.util.MyUtils; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; + +public class WoolItem extends TileItem { + protected static ArrayList getAllInstances() { + ArrayList items = new ArrayList<>(); + + for (DyeItem.DyeColor color : DyeItem.DyeColor.values()) { + items.add(new WoolItem(MyUtils.capitalizeFully(color.toString().replace('_', ' ')) + " Wool", new SpriteLinker.LinkedSprite( + SpriteLinker.SpriteType.Item, color.toString().toLowerCase() + "_wool"), color)); + } + + return items; + } + + public final DyeItem.DyeColor color; + + protected WoolItem(String name, SpriteLinker.LinkedSprite sprite, DyeItem.DyeColor color) { + super(name, sprite, new TileModel(name), "hole", "water"); + this.color = color; + } + + @Override + public @NotNull TileItem copy() { + return new WoolItem(getName(), sprite, color); + } +} diff --git a/src/client/java/minicraft/level/Level.java b/src/client/java/minicraft/level/Level.java index f466a1318..f2e34cc59 100644 --- a/src/client/java/minicraft/level/Level.java +++ b/src/client/java/minicraft/level/Level.java @@ -28,6 +28,7 @@ import minicraft.gfx.Point; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; +import minicraft.item.DyeItem; import minicraft.item.Item; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; @@ -672,7 +673,22 @@ private void trySpawn() { // Spawns the friendly mobs. if (rnd <= (Updater.getTime() == Updater.Time.Night ? 22 : 33)) add((new Cow()), nx, ny); else if (rnd >= 68) add((new Pig()), nx, ny); - else add((new Sheep()), nx, ny); + else { // Sheep spawning + double colorRnd = random.nextDouble(); + if (colorRnd < 0.8) { // 80% for default color, i.e. white + add((new Sheep()), nx, ny); + } else if (colorRnd < 0.85) { // 5% for black + add((new Sheep(DyeItem.DyeColor.BLACK)), nx, ny); + } else if (colorRnd < 0.9) { // 5% for gray + add((new Sheep(DyeItem.DyeColor.GRAY)), nx, ny); + } else if (colorRnd < 0.95) { // 5% for light gray + add((new Sheep(DyeItem.DyeColor.LIGHT_GRAY)), nx, ny); + } else if (colorRnd < 0.98) { // 3% for brown + add((new Sheep(DyeItem.DyeColor.BROWN)), nx, ny); + } else { // 2% for pink + add((new Sheep(DyeItem.DyeColor.PINK)), nx, ny); + } + } spawned = true; } diff --git a/src/client/java/minicraft/level/LevelGen.java b/src/client/java/minicraft/level/LevelGen.java index 771f127ca..17aba4fd1 100644 --- a/src/client/java/minicraft/level/LevelGen.java +++ b/src/client/java/minicraft/level/LevelGen.java @@ -3,6 +3,7 @@ import minicraft.core.Game; import minicraft.core.io.Settings; import minicraft.gfx.Rectangle; +import minicraft.level.tile.FlowerTile; import minicraft.level.tile.Tiles; import minicraft.screen.RelPos; import org.jetbrains.annotations.Nullable; @@ -422,14 +423,14 @@ private static short[][] createTopMap(int w, int h) { // Create surface map for (int i = 0; i < w * h / 400; i++) { int x = random.nextInt(w); int y = random.nextInt(h); - int col = random.nextInt(4); + int col = random.nextInt(4) * random.nextInt(4); for (int j = 0; j < 30; j++) { int xx = x + random.nextInt(5) - random.nextInt(5); int yy = y + random.nextInt(5) - random.nextInt(5); if (xx >= 0 && yy >= 0 && xx < w && yy < h) { if (map[xx + yy * w] == Tiles.get("grass").id) { map[xx + yy * w] = Tiles.get("flower").id; - data[xx + yy * w] = (short) (col + random.nextInt(4) * 16); // Data determines which way the flower faces + data[xx + yy * w] = (short) (col + random.nextInt(3)); // Data determines what the flower is } } } diff --git a/src/client/java/minicraft/level/tile/FlowerTile.java b/src/client/java/minicraft/level/tile/FlowerTile.java index 0fadc749e..eb34b1097 100644 --- a/src/client/java/minicraft/level/tile/FlowerTile.java +++ b/src/client/java/minicraft/level/tile/FlowerTile.java @@ -15,8 +15,39 @@ import minicraft.util.AdvancementElement; public class FlowerTile extends Tile { - private static final SpriteAnimation flowerSprite0 = new SpriteAnimation(SpriteType.Tile, "flower_shape0"); - private static final SpriteAnimation flowerSprite1 = new SpriteAnimation(SpriteType.Tile, "flower_shape1"); + public enum FlowerVariant { + OXEYE_DAISY("Oxeye Daisy", new SpriteAnimation(SpriteType.Tile, "oxeye_daisy")), + ROSE("Rose", new SpriteAnimation(SpriteType.Tile, "rose")), + SUNFLOWER("Sunflower", new SpriteAnimation(SpriteType.Tile, "sunflower")), + ALLIUM("Allium", new SpriteAnimation(SpriteType.Tile, "allium")), + BLUE_ORCHID("Blue Orchid", new SpriteAnimation(SpriteType.Tile, "blue_orchid")), + CORNFLOWER("Cornflower", new SpriteAnimation(SpriteType.Tile, "cornflower")), + DANDELION("Dandelion", new SpriteAnimation(SpriteType.Tile, "dandelion")), + HYDRANGEA("Hydrangea", new SpriteAnimation(SpriteType.Tile, "hydrangea")), + IRIS("Iris", new SpriteAnimation(SpriteType.Tile, "iris")), + ORANGE_TULIP("Orange Tulip", new SpriteAnimation(SpriteType.Tile, "orange_tulip")), + PINK_TULIP("Pink Tulip", new SpriteAnimation(SpriteType.Tile, "pink_tulip")), + RED_TULIP("Red Tulip", new SpriteAnimation(SpriteType.Tile, "red_tulip")), + WHITE_TULIP("White Tulip", new SpriteAnimation(SpriteType.Tile, "white_tulip")), + PEONY("Peony", new SpriteAnimation(SpriteType.Tile, "peony")), + PERIWINKLE("Periwinkle", new SpriteAnimation(SpriteType.Tile, "periwinkle")), + PINK_LILY("Pink Lily", new SpriteAnimation(SpriteType.Tile, "pink_lily")), + WHITE_LILY("White Lily", new SpriteAnimation(SpriteType.Tile, "white_lily")), + POPPY("Poppy", new SpriteAnimation(SpriteType.Tile, "poppy")), + VIOLET("Violet", new SpriteAnimation(SpriteType.Tile, "violet")); + + private final String name; + private final SpriteAnimation sprite; + + FlowerVariant(String name, SpriteAnimation sprite) { + this.name = name; + this.sprite = sprite; + } + + public String getName() { + return name; + } + } protected FlowerTile(String name) { super(name, null); @@ -46,9 +77,7 @@ public boolean tick(Level level, int xt, int yt) { public void render(Screen screen, Level level, int x, int y) { Tiles.get("Grass").render(screen, level, x, y); - int data = level.getData(x, y); - int shape = (data >> 4) % 2; - (shape == 0 ? flowerSprite0 : flowerSprite1).render(screen, level, x, y); + FlowerVariant.values()[level.getData(x, y)].sprite.render(screen, level, x, y); } public boolean interact(Level level, int x, int y, Player player, Item item, Direction attackDir) { @@ -59,8 +88,7 @@ public boolean interact(Level level, int x, int y, Player player, Item item, Dir int data = level.getData(x, y); level.setTile(x, y, Tiles.get("Grass")); Sound.play("monsterhurt"); - level.dropItem((x << 4) + 8, (y << 4) + 8, Items.get("Flower")); - level.dropItem((x << 4) + 8, (y << 4) + 8, Items.get("Rose")); + level.dropItem((x << 4) + 8, (y << 4) + 8, Items.get(FlowerVariant.values()[level.getData(x, y)].name)); AdvancementElement.AdvancementTrigger.ItemUsedOnTileTrigger.INSTANCE.trigger( new AdvancementElement.AdvancementTrigger.ItemUsedOnTileTrigger.ItemUsedOnTileTriggerConditionHandler.ItemUsedOnTileTriggerConditions( item, this, data, x, y, level.depth)); @@ -72,8 +100,7 @@ public boolean interact(Level level, int x, int y, Player player, Item item, Dir } public boolean hurt(Level level, int x, int y, Mob source, int dmg, Direction attackDir) { - level.dropItem((x << 4) + 8, (y << 4) + 8, 0, 1, Items.get("Flower")); - level.dropItem((x << 4) + 8, (y << 4) + 8, 0, 1, Items.get("Rose")); + level.dropItem((x << 4) + 8, (y << 4) + 8, Items.get(FlowerVariant.values()[level.getData(x, y)].name)); level.setTile(x, y, Tiles.get("Grass")); return true; } diff --git a/src/client/java/minicraft/level/tile/Tiles.java b/src/client/java/minicraft/level/tile/Tiles.java index d9695a044..6d1e58a20 100644 --- a/src/client/java/minicraft/level/tile/Tiles.java +++ b/src/client/java/minicraft/level/tile/Tiles.java @@ -1,6 +1,7 @@ package minicraft.level.tile; import minicraft.core.CrashHandler; +import minicraft.item.DyeItem; import minicraft.level.tile.farming.CarrotTile; import minicraft.level.tile.farming.FarmTile; import minicraft.level.tile.farming.HeavenlyBerriesTile; @@ -52,6 +53,7 @@ public static void initTileList() { tiles.put((short) 14, new OreTile(OreTile.OreType.Gold)); tiles.put((short) 15, new OreTile(OreTile.OreType.Gem)); tiles.put((short) 16, new OreTile(OreTile.OreType.Lapis)); + tiles.put((short) 18, new LavaBrickTile("Lava Brick")); tiles.put((short) 19, new ExplodedTile("Explode")); tiles.put((short) 20, new FarmTile("Farmland")); @@ -69,13 +71,26 @@ public static void initTileList() { tiles.put((short) 32, new WallTile(Tile.Material.Wood)); tiles.put((short) 33, new WallTile(Tile.Material.Stone)); tiles.put((short) 34, new WallTile(Tile.Material.Obsidian)); - tiles.put((short) 35, new WoolTile(WoolTile.WoolType.NORMAL)); + tiles.put((short) 35, new WoolTile(DyeItem.DyeColor.WHITE)); + // These are out of order because of the changes on wool and color system. + tiles.put((short) 37, new WoolTile(DyeItem.DyeColor.RED)); + tiles.put((short) 38, new WoolTile(DyeItem.DyeColor.BLUE)); + tiles.put((short) 39, new WoolTile(DyeItem.DyeColor.GREEN)); + tiles.put((short) 40, new WoolTile(DyeItem.DyeColor.YELLOW)); + tiles.put((short) 41, new WoolTile(DyeItem.DyeColor.BLACK)); + tiles.put((short) 60, new WoolTile(DyeItem.DyeColor.BROWN)); + tiles.put((short) 61, new WoolTile(DyeItem.DyeColor.PURPLE)); + tiles.put((short) 62, new WoolTile(DyeItem.DyeColor.CYAN)); + tiles.put((short) 63, new WoolTile(DyeItem.DyeColor.LIGHT_GRAY)); + tiles.put((short) 64, new WoolTile(DyeItem.DyeColor.GRAY)); + tiles.put((short) 65, new WoolTile(DyeItem.DyeColor.PINK)); + tiles.put((short) 66, new WoolTile(DyeItem.DyeColor.LIME)); + tiles.put((short) 67, new WoolTile(DyeItem.DyeColor.LIGHT_BLUE)); + tiles.put((short) 68, new WoolTile(DyeItem.DyeColor.MAGENTA)); + tiles.put((short) 69, new WoolTile(DyeItem.DyeColor.ORANGE)); + tiles.put((short) 36, new PathTile("Path")); - tiles.put((short) 37, new WoolTile(WoolTile.WoolType.RED)); - tiles.put((short) 38, new WoolTile(WoolTile.WoolType.BLUE)); - tiles.put((short) 39, new WoolTile(WoolTile.WoolType.GREEN)); - tiles.put((short) 40, new WoolTile(WoolTile.WoolType.YELLOW)); - tiles.put((short) 41, new WoolTile(WoolTile.WoolType.BLACK)); + tiles.put((short) 42, new PotatoTile("Potato")); tiles.put((short) 43, new MaterialTile(Tile.Material.Stone)); tiles.put((short) 44, new MaterialTile(Tile.Material.Obsidian)); @@ -121,7 +136,7 @@ static void add(int id, Tile tile) { oldids.set(3, "flower"); oldids.set(4, "tree"); oldids.set(5, "dirt"); - oldids.set(41, "wool"); + oldids.set(41, "white wool"); oldids.set(42, "red wool"); oldids.set(43, "blue wool"); oldids.set(45, "green wool"); @@ -179,7 +194,7 @@ static void add(int id, Tile tile) { oldids.set(116, "Obsidian door"); oldids.set(117, "Obsidian door"); oldids.set(119, "hole"); - oldids.set(57, "wool"); + oldids.set(57, "white wool"); oldids.set(58, "red wool"); oldids.set(59, "blue wool"); oldids.set(60, "green wool"); diff --git a/src/client/java/minicraft/level/tile/WoolTile.java b/src/client/java/minicraft/level/tile/WoolTile.java index f269e90b5..a7a7d2ac1 100644 --- a/src/client/java/minicraft/level/tile/WoolTile.java +++ b/src/client/java/minicraft/level/tile/WoolTile.java @@ -6,6 +6,7 @@ import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.item.DyeItem; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; @@ -13,10 +14,19 @@ import minicraft.level.Level; import minicraft.util.AdvancementElement; +import java.util.HashMap; + public class WoolTile extends Tile { + private static final HashMap sprites = new HashMap<>(); - public WoolTile(WoolType woolType) { - super(woolType.name, woolType.sprite); + static { + for (DyeItem.DyeColor color : DyeItem.DyeColor.values()) { + sprites.put(color, new SpriteAnimation(SpriteType.Tile, color.toString().toLowerCase() + "_wool")); + } + } + + public WoolTile(DyeItem.DyeColor color) { + super(color.toString().replace('_', ' ') + " Wool", sprites.get(color)); } public boolean interact(Level level, int xt, int yt, Player player, Item item, Direction attackDir) { @@ -41,25 +51,4 @@ public boolean interact(Level level, int xt, int yt, Player player, Item item, D public boolean mayPass(Level level, int x, int y, Entity e) { return e.canWool(); } - - public enum WoolType { - BLACK("Black Wool", new SpriteAnimation(SpriteType.Tile, "black_wool")), - BLUE("Blue Wool", new SpriteAnimation(SpriteType.Tile, "blue_wool")), - GREEN("Green Wool", new SpriteAnimation(SpriteType.Tile, "green_wool")), - NORMAL("Wool", new SpriteAnimation(SpriteType.Tile, "white_wool")), - RED("Red Wool", new SpriteAnimation(SpriteType.Tile, "red_wool")), - YELLOW("Yellow Wool", new SpriteAnimation(SpriteType.Tile, "yellow_wool")); - - public final SpriteAnimation sprite; - public final String name; - - /** - * Create a type of wool. - * @param sprite The sprite for the type of wool. - */ - WoolType(String name, SpriteAnimation sprite) { - this.sprite = sprite; - this.name = name; - } - } } diff --git a/src/client/java/minicraft/saveload/LegacyLoad.java b/src/client/java/minicraft/saveload/LegacyLoad.java index d79df91ac..033679079 100644 --- a/src/client/java/minicraft/saveload/LegacyLoad.java +++ b/src/client/java/minicraft/saveload/LegacyLoad.java @@ -231,7 +231,7 @@ public void loadWorld(String filename) { for (int y = 0; y < lvlh - 1; y++) { int tileArrIdx = y + x * lvlw; int tileidx = x + y * lvlw; // The tiles are saved with x outer loop, and y inner loop, meaning that the list reads down, then right one, rather than right, then down one. - Load.loadTile(tiles, tdata, tileArrIdx, Tiles.oldids.get(Integer.parseInt(data.get(tileidx + 3))), + Load.loadTile(worldVer, tiles, tdata, tileArrIdx, Tiles.oldids.get(Integer.parseInt(data.get(tileidx + 3))), extradata.get(tileidx)); } } diff --git a/src/client/java/minicraft/saveload/Load.java b/src/client/java/minicraft/saveload/Load.java index 4c94d15d8..ebf995c6a 100644 --- a/src/client/java/minicraft/saveload/Load.java +++ b/src/client/java/minicraft/saveload/Load.java @@ -42,6 +42,7 @@ import minicraft.gfx.Color; import minicraft.gfx.Point; import minicraft.item.ArmorItem; +import minicraft.item.DyeItem; import minicraft.item.Inventory; import minicraft.item.Item; import minicraft.item.Items; @@ -733,25 +734,29 @@ private void loadWorld(String filename) { } } - if (tilename.equalsIgnoreCase("Wool") && worldVer.compareTo(new Version("2.0.6-dev4")) < 0) { - switch (Integer.parseInt(extradata.get(tileidx))) { - case 1: - tilename = "Red Wool"; - break; - case 2: - tilename = "Yellow Wool"; - break; - case 3: - tilename = "Green Wool"; - break; - case 4: - tilename = "Blue Wool"; - break; - case 5: - tilename = "Black Wool"; - break; - default: - tilename = "Wool"; + if (tilename.equalsIgnoreCase("Wool")) { + if (worldVer.compareTo(new Version("2.0.6-dev4")) < 0) { + switch (Integer.parseInt(extradata.get(tileidx))) { + case 1: + tilename = "Red Wool"; + break; + case 2: + tilename = "Yellow Wool"; + break; + case 3: + tilename = "Green Wool"; + break; + case 4: + tilename = "Blue Wool"; + break; + case 5: + tilename = "Black Wool"; + break; + default: + tilename = "White Wool"; + } + } else if (worldVer.compareTo(new Version("2.2.1-dev2")) < 0) { + tilename = "White Wool"; } } else if (l == World.minLevelDepth + 1 && tilename.equalsIgnoreCase("Lapis") && worldVer.compareTo(new Version("2.0.3-dev6")) < 0) { if (Math.random() < 0.8) // don't replace *all* the lapis @@ -769,7 +774,7 @@ private void loadWorld(String filename) { } } - loadTile(tiles, tdata, tileArrIdx, tilename, extradata.get(tileidx)); + loadTile(worldVer, tiles, tdata, tileArrIdx, tilename, extradata.get(tileidx)); } } @@ -840,7 +845,7 @@ private void loadWorld(String filename) { } boolean signsLoadSucceeded = false; - if (new File(location+"signs.json").exists()) { + if (new File(location + "signs.json").exists()) { try { JSONObject fileObj = new JSONObject(loadFromFile(location + "signs.json", true)); @SuppressWarnings("unused") @@ -871,14 +876,18 @@ private void loadWorld(String filename) { private static final Pattern OLD_TORCH_TILE_REGEX = Pattern.compile("TORCH ([\\w ]+)"); - public static void loadTile(short[] tiles, short[] data, int idx, String tileName, String tileData) { + public static void loadTile(Version worldVer, short[] tiles, short[] data, int idx, String tileName, String tileData) { Matcher matcher; if ((matcher = OLD_TORCH_TILE_REGEX.matcher(tileName.toUpperCase())).matches()) { tiles[idx] = 57; // ID of TORCH tile data[idx] = Tiles.get(matcher.group(1)).id; } else { tiles[idx] = Tiles.get(tileName).id; - data[idx] = Short.parseShort(tileData); + if (worldVer.compareTo(new Version("2.2.1-dev1")) <= 0 && tileName.equalsIgnoreCase("FLOWER")) { + data[idx] = 0; + } else { + data[idx] = Short.parseShort(tileData); + } } } @@ -1037,6 +1046,16 @@ protected static String subOldName(String name, Version worldVer) { name = name.replace("Potion", "Awkward Potion"); } + if (worldVer.compareTo(new Version("2.2.1-dev2")) < 0) { + if (name.startsWith("Wool")) + name = name.replace("Wool", "White Wool"); + } + + if (worldVer.compareTo(new Version("2.2.1-dev2")) < 0) { + if (name.startsWith("Flower")) + name = name.replace("Flower", "Oxeye Daisy"); + } + return name; } @@ -1144,6 +1163,14 @@ public static Entity loadEntity(String entityData, Version worldVer, boolean isL Logging.SAVELOAD.error("Failed to load Spark; owner id doesn't point to a correct entity"); return null; } + } else if (entityName.contains(" Bed")) { // with a space, meaning that the bed has a color name in the front + String colorName = entityName.substring(0, entityName.length() - 4).toUpperCase().replace(' ', '_'); + try { + newEntity = new Bed(DyeItem.DyeColor.valueOf(colorName)); + } catch (IllegalArgumentException e) { + Logging.SAVELOAD.error("Invalid bed variant: `{}`, skipping.", entityName); + return null; + } } else { int mobLvl = 1; if (!Crafter.names.contains(entityName)) { // Entity missing debugging @@ -1291,7 +1318,6 @@ public static Entity loadEntity(String entityData, Version worldVer, boolean isL private static Entity getEntity(String string, int mobLevel) { switch (string) { case "Player": - return null; case "RemotePlayer": return null; case "Cow": @@ -1355,6 +1381,8 @@ private static Entity getEntity(String string, int mobLevel) { return new KnightStatue(0); case "ObsidianKnight": return new ObsidianKnight(0); + case "DyeVat": + return new Crafter(Crafter.Type.DyeVat); default: Logging.SAVELOAD.error("LOAD ERROR: Unknown or outdated entity requested: " + string); return null; diff --git a/src/client/java/minicraft/saveload/Save.java b/src/client/java/minicraft/saveload/Save.java index 680666ee2..d1e52a678 100644 --- a/src/client/java/minicraft/saveload/Save.java +++ b/src/client/java/minicraft/saveload/Save.java @@ -11,6 +11,7 @@ import minicraft.entity.FireSpark; import minicraft.entity.ItemEntity; import minicraft.entity.Spark; +import minicraft.entity.furniture.Bed; import minicraft.entity.furniture.Chest; import minicraft.entity.furniture.Crafter; import minicraft.entity.furniture.DeathChest; @@ -420,9 +421,7 @@ public static String writeEntity(Entity e, boolean isLocalSave) { extradata.append(":").append(((EnemyMob) m).lvl); else if (e instanceof Sheep) extradata.append(":").append(((Sheep) m).cut); // Saves if the sheep is cut. If not, we could reload the save and the wool would regenerate. - } - - if (e instanceof Chest) { + } else if (e instanceof Chest) { Chest chest = (Chest) e; for (int ii = 0; ii < chest.getInventory().invSize(); ii++) { @@ -432,25 +431,19 @@ else if (e instanceof Sheep) if (chest instanceof DeathChest) extradata.append(":").append(((DeathChest) chest).time); if (chest instanceof DungeonChest) extradata.append(":").append(((DungeonChest) chest).isLocked()); - } - - if (e instanceof Spawner) { + } else if (e instanceof Spawner) { Spawner egg = (Spawner) e; String mobname = egg.mob.getClass().getName(); mobname = mobname.substring(mobname.lastIndexOf(".") + 1); extradata.append(":").append(mobname).append(":").append(egg.mob instanceof EnemyMob ? ((EnemyMob) egg.mob).lvl : 1); - } - - if (e instanceof Lantern) { + } else if (e instanceof Lantern) { extradata.append(":").append(((Lantern) e).type.ordinal()); - } - - if (e instanceof Crafter) { + } else if (e instanceof Crafter) { name = ((Crafter) e).type.name(); - } - - if (e instanceof KnightStatue) { + } else if (e instanceof KnightStatue) { extradata.append(":").append(((KnightStatue) e).getBossHealth()); + } else if (e instanceof Bed) { + name = ((Bed) e).name; } if (!isLocalSave) { diff --git a/src/client/java/minicraft/util/MyUtils.java b/src/client/java/minicraft/util/MyUtils.java index 6a0f78614..6dfe6b8b2 100644 --- a/src/client/java/minicraft/util/MyUtils.java +++ b/src/client/java/minicraft/util/MyUtils.java @@ -1,5 +1,7 @@ package minicraft.util; +import org.jetbrains.annotations.NotNull; + public final class MyUtils { private MyUtils() { @@ -24,6 +26,89 @@ public static String plural(int num, String word) { return num + " " + word + p; } + /** + *

Capitalizes all the delimiter separated words in a String. + * Only the first letter of each word is changed. To convert the + * rest of each word to lowercase at the same time, + * use {@link #capitalizeFully(String)}.

+ * + *

The delimiters represent a set of characters understood to separate words. + * The first string character and the first non-delimiter character after a + * delimiter will be capitalized.

+ * + *

A null input String returns null. + * Capitalization uses the unicode title case, normally equivalent to + * upper case.

+ * + *
+	 * WordUtils.capitalize(null, *)            = null
+	 * WordUtils.capitalize("", *)              = ""
+	 * WordUtils.capitalize(*, new char[0])     = *
+	 * WordUtils.capitalize("i am fine", null)  = "I Am Fine"
+	 * WordUtils.capitalize("i aM.fine", {'.'}) = "I aM.Fine"
+	 * 
+ * + * Source: modified and copied from Apache commons-lang WordUtils#capitalize + * + * @param str the String to capitalize, may be null + * @return capitalized String, null if null String input + */ + public static String capitalize(@NotNull String str) { + if (str.isEmpty()) { + return str; + } + int strLen = str.length(); + StringBuffer buffer = new StringBuffer(strLen); + boolean capitalizeNext = true; + for (int i = 0; i < strLen; i++) { + char ch = str.charAt(i); + if (Character.isWhitespace(ch)) { + buffer.append(ch); + capitalizeNext = true; + } else if (capitalizeNext) { + buffer.append(Character.toTitleCase(ch)); + capitalizeNext = false; + } else { + buffer.append(ch); + } + } + return buffer.toString(); + } + + /** + *

Converts all the delimiter separated words in a String into capitalized words, + * that is each word is made up of a titlecase character and then a series of + * lowercase characters.

+ * + *

The delimiters represent a set of characters understood to separate words. + * The first string character and the first non-delimiter character after a + * delimiter will be capitalized.

+ * + *

A null input String returns null. + * Capitalization uses the unicode title case, normally equivalent to + * upper case.

+ * + *
+	 * WordUtils.capitalizeFully(null, *)            = null
+	 * WordUtils.capitalizeFully("", *)              = ""
+	 * WordUtils.capitalizeFully(*, null)            = *
+	 * WordUtils.capitalizeFully(*, new char[0])     = *
+	 * WordUtils.capitalizeFully("i aM.fine", {'.'}) = "I am.Fine"
+	 * 
+ * + * Source: modified and copied from Apache commons-lang WordUtils#capitalizeFully + * + * @param str the String to capitalize, may be null + * @return capitalized String, null if null String input + */ + public static String capitalizeFully(@NotNull String str) { + if (str.isEmpty()) { + return str; + } + str = str.toLowerCase(); + return capitalize(str); + } + public static void sleep(int millis) { try { Thread.sleep(millis); diff --git a/src/client/resources/assets/textures/entity/bed.png b/src/client/resources/assets/textures/entity/bed.png deleted file mode 100644 index 760cb3d21..000000000 Binary files a/src/client/resources/assets/textures/entity/bed.png and /dev/null differ diff --git a/src/client/resources/assets/textures/entity/black_bed.png b/src/client/resources/assets/textures/entity/black_bed.png new file mode 100644 index 000000000..3b5a3fbba Binary files /dev/null and b/src/client/resources/assets/textures/entity/black_bed.png differ diff --git a/src/client/resources/assets/textures/entity/blue_bed.png b/src/client/resources/assets/textures/entity/blue_bed.png new file mode 100644 index 000000000..8a8e0db37 Binary files /dev/null and b/src/client/resources/assets/textures/entity/blue_bed.png differ diff --git a/src/client/resources/assets/textures/entity/brown_bed.png b/src/client/resources/assets/textures/entity/brown_bed.png new file mode 100644 index 000000000..aeb9e33da Binary files /dev/null and b/src/client/resources/assets/textures/entity/brown_bed.png differ diff --git a/src/client/resources/assets/textures/entity/cyan_bed.png b/src/client/resources/assets/textures/entity/cyan_bed.png new file mode 100644 index 000000000..49eb6e782 Binary files /dev/null and b/src/client/resources/assets/textures/entity/cyan_bed.png differ diff --git a/src/client/resources/assets/textures/entity/dyevat.png b/src/client/resources/assets/textures/entity/dyevat.png new file mode 100644 index 000000000..e4b52a65f Binary files /dev/null and b/src/client/resources/assets/textures/entity/dyevat.png differ diff --git a/src/client/resources/assets/textures/entity/gray_bed.png b/src/client/resources/assets/textures/entity/gray_bed.png new file mode 100644 index 000000000..fb68263c8 Binary files /dev/null and b/src/client/resources/assets/textures/entity/gray_bed.png differ diff --git a/src/client/resources/assets/textures/entity/green_bed.png b/src/client/resources/assets/textures/entity/green_bed.png new file mode 100644 index 000000000..12bfbfa2a Binary files /dev/null and b/src/client/resources/assets/textures/entity/green_bed.png differ diff --git a/src/client/resources/assets/textures/entity/light_blue_bed.png b/src/client/resources/assets/textures/entity/light_blue_bed.png new file mode 100644 index 000000000..6899b704f Binary files /dev/null and b/src/client/resources/assets/textures/entity/light_blue_bed.png differ diff --git a/src/client/resources/assets/textures/entity/light_gray_bed.png b/src/client/resources/assets/textures/entity/light_gray_bed.png new file mode 100644 index 000000000..7047583dd Binary files /dev/null and b/src/client/resources/assets/textures/entity/light_gray_bed.png differ diff --git a/src/client/resources/assets/textures/entity/lime_bed.png b/src/client/resources/assets/textures/entity/lime_bed.png new file mode 100644 index 000000000..f9dd4781e Binary files /dev/null and b/src/client/resources/assets/textures/entity/lime_bed.png differ diff --git a/src/client/resources/assets/textures/entity/magenta_bed.png b/src/client/resources/assets/textures/entity/magenta_bed.png new file mode 100644 index 000000000..20faf482b Binary files /dev/null and b/src/client/resources/assets/textures/entity/magenta_bed.png differ diff --git a/src/client/resources/assets/textures/entity/orange_bed.png b/src/client/resources/assets/textures/entity/orange_bed.png new file mode 100644 index 000000000..fbb77e191 Binary files /dev/null and b/src/client/resources/assets/textures/entity/orange_bed.png differ diff --git a/src/client/resources/assets/textures/entity/pink_bed.png b/src/client/resources/assets/textures/entity/pink_bed.png new file mode 100644 index 000000000..04f5a25eb Binary files /dev/null and b/src/client/resources/assets/textures/entity/pink_bed.png differ diff --git a/src/client/resources/assets/textures/entity/purple_bed.png b/src/client/resources/assets/textures/entity/purple_bed.png new file mode 100644 index 000000000..e3e190319 Binary files /dev/null and b/src/client/resources/assets/textures/entity/purple_bed.png differ diff --git a/src/client/resources/assets/textures/entity/red_bed.png b/src/client/resources/assets/textures/entity/red_bed.png new file mode 100644 index 000000000..c81086170 Binary files /dev/null and b/src/client/resources/assets/textures/entity/red_bed.png differ diff --git a/src/client/resources/assets/textures/entity/sheep.png b/src/client/resources/assets/textures/entity/sheep.png index caab8c214..c422f3366 100644 Binary files a/src/client/resources/assets/textures/entity/sheep.png and b/src/client/resources/assets/textures/entity/sheep.png differ diff --git a/src/client/resources/assets/textures/entity/white_bed.png b/src/client/resources/assets/textures/entity/white_bed.png new file mode 100644 index 000000000..6ebe08ac3 Binary files /dev/null and b/src/client/resources/assets/textures/entity/white_bed.png differ diff --git a/src/client/resources/assets/textures/entity/yellow_bed.png b/src/client/resources/assets/textures/entity/yellow_bed.png new file mode 100644 index 000000000..c20945343 Binary files /dev/null and b/src/client/resources/assets/textures/entity/yellow_bed.png differ diff --git a/src/client/resources/assets/textures/item/allium.png b/src/client/resources/assets/textures/item/allium.png new file mode 100644 index 000000000..c43f6ccdf Binary files /dev/null and b/src/client/resources/assets/textures/item/allium.png differ diff --git a/src/client/resources/assets/textures/item/bed.png b/src/client/resources/assets/textures/item/bed.png deleted file mode 100644 index 1f51b8096..000000000 Binary files a/src/client/resources/assets/textures/item/bed.png and /dev/null differ diff --git a/src/client/resources/assets/textures/item/black_bed.png b/src/client/resources/assets/textures/item/black_bed.png new file mode 100644 index 000000000..e1d8ea8b5 Binary files /dev/null and b/src/client/resources/assets/textures/item/black_bed.png differ diff --git a/src/client/resources/assets/textures/item/black_dye.png b/src/client/resources/assets/textures/item/black_dye.png new file mode 100644 index 000000000..bc10f09b3 Binary files /dev/null and b/src/client/resources/assets/textures/item/black_dye.png differ diff --git a/src/client/resources/assets/textures/item/black_wool.png b/src/client/resources/assets/textures/item/black_wool.png index 5e59e97ee..fb56015fd 100644 Binary files a/src/client/resources/assets/textures/item/black_wool.png and b/src/client/resources/assets/textures/item/black_wool.png differ diff --git a/src/client/resources/assets/textures/item/blue_bed.png b/src/client/resources/assets/textures/item/blue_bed.png new file mode 100644 index 000000000..d6db798bc Binary files /dev/null and b/src/client/resources/assets/textures/item/blue_bed.png differ diff --git a/src/client/resources/assets/textures/item/blue_dye.png b/src/client/resources/assets/textures/item/blue_dye.png new file mode 100644 index 000000000..947e9d32a Binary files /dev/null and b/src/client/resources/assets/textures/item/blue_dye.png differ diff --git a/src/client/resources/assets/textures/item/blue_orchid.png b/src/client/resources/assets/textures/item/blue_orchid.png new file mode 100644 index 000000000..a273cbc2e Binary files /dev/null and b/src/client/resources/assets/textures/item/blue_orchid.png differ diff --git a/src/client/resources/assets/textures/item/blue_wool.png b/src/client/resources/assets/textures/item/blue_wool.png index 8b1fd527f..1af70ccd0 100644 Binary files a/src/client/resources/assets/textures/item/blue_wool.png and b/src/client/resources/assets/textures/item/blue_wool.png differ diff --git a/src/client/resources/assets/textures/item/brown_bed.png b/src/client/resources/assets/textures/item/brown_bed.png new file mode 100644 index 000000000..6bd2adbb6 Binary files /dev/null and b/src/client/resources/assets/textures/item/brown_bed.png differ diff --git a/src/client/resources/assets/textures/item/brown_dye.png b/src/client/resources/assets/textures/item/brown_dye.png new file mode 100644 index 000000000..06b025ae4 Binary files /dev/null and b/src/client/resources/assets/textures/item/brown_dye.png differ diff --git a/src/client/resources/assets/textures/item/brown_wool.png b/src/client/resources/assets/textures/item/brown_wool.png new file mode 100644 index 000000000..043cbde0d Binary files /dev/null and b/src/client/resources/assets/textures/item/brown_wool.png differ diff --git a/src/client/resources/assets/textures/item/cornflower.png b/src/client/resources/assets/textures/item/cornflower.png new file mode 100644 index 000000000..2968746b6 Binary files /dev/null and b/src/client/resources/assets/textures/item/cornflower.png differ diff --git a/src/client/resources/assets/textures/item/cyan_bed.png b/src/client/resources/assets/textures/item/cyan_bed.png new file mode 100644 index 000000000..f8a055d50 Binary files /dev/null and b/src/client/resources/assets/textures/item/cyan_bed.png differ diff --git a/src/client/resources/assets/textures/item/cyan_dye.png b/src/client/resources/assets/textures/item/cyan_dye.png new file mode 100644 index 000000000..359787ba4 Binary files /dev/null and b/src/client/resources/assets/textures/item/cyan_dye.png differ diff --git a/src/client/resources/assets/textures/item/cyan_wool.png b/src/client/resources/assets/textures/item/cyan_wool.png new file mode 100644 index 000000000..17c516c6a Binary files /dev/null and b/src/client/resources/assets/textures/item/cyan_wool.png differ diff --git a/src/client/resources/assets/textures/item/dandelion.png b/src/client/resources/assets/textures/item/dandelion.png new file mode 100644 index 000000000..3fa213225 Binary files /dev/null and b/src/client/resources/assets/textures/item/dandelion.png differ diff --git a/src/client/resources/assets/textures/item/dyevat.png b/src/client/resources/assets/textures/item/dyevat.png new file mode 100644 index 000000000..b4d207da9 Binary files /dev/null and b/src/client/resources/assets/textures/item/dyevat.png differ diff --git a/src/client/resources/assets/textures/item/gray_bed.png b/src/client/resources/assets/textures/item/gray_bed.png new file mode 100644 index 000000000..33cc7c10b Binary files /dev/null and b/src/client/resources/assets/textures/item/gray_bed.png differ diff --git a/src/client/resources/assets/textures/item/gray_dye.png b/src/client/resources/assets/textures/item/gray_dye.png new file mode 100644 index 000000000..e63e9a6fc Binary files /dev/null and b/src/client/resources/assets/textures/item/gray_dye.png differ diff --git a/src/client/resources/assets/textures/item/gray_wool.png b/src/client/resources/assets/textures/item/gray_wool.png new file mode 100644 index 000000000..04f887148 Binary files /dev/null and b/src/client/resources/assets/textures/item/gray_wool.png differ diff --git a/src/client/resources/assets/textures/item/green_bed.png b/src/client/resources/assets/textures/item/green_bed.png new file mode 100644 index 000000000..9838c477d Binary files /dev/null and b/src/client/resources/assets/textures/item/green_bed.png differ diff --git a/src/client/resources/assets/textures/item/green_dye.png b/src/client/resources/assets/textures/item/green_dye.png new file mode 100644 index 000000000..ada3af85b Binary files /dev/null and b/src/client/resources/assets/textures/item/green_dye.png differ diff --git a/src/client/resources/assets/textures/item/green_wool.png b/src/client/resources/assets/textures/item/green_wool.png index 63e56b85a..b27dde8f6 100644 Binary files a/src/client/resources/assets/textures/item/green_wool.png and b/src/client/resources/assets/textures/item/green_wool.png differ diff --git a/src/client/resources/assets/textures/item/hydrangea.png b/src/client/resources/assets/textures/item/hydrangea.png new file mode 100644 index 000000000..7d3810a34 Binary files /dev/null and b/src/client/resources/assets/textures/item/hydrangea.png differ diff --git a/src/client/resources/assets/textures/item/iris.png b/src/client/resources/assets/textures/item/iris.png new file mode 100644 index 000000000..8eaf49ee9 Binary files /dev/null and b/src/client/resources/assets/textures/item/iris.png differ diff --git a/src/client/resources/assets/textures/item/light_blue_bed.png b/src/client/resources/assets/textures/item/light_blue_bed.png new file mode 100644 index 000000000..6d9727126 Binary files /dev/null and b/src/client/resources/assets/textures/item/light_blue_bed.png differ diff --git a/src/client/resources/assets/textures/item/light_blue_dye.png b/src/client/resources/assets/textures/item/light_blue_dye.png new file mode 100644 index 000000000..7fb58a48d Binary files /dev/null and b/src/client/resources/assets/textures/item/light_blue_dye.png differ diff --git a/src/client/resources/assets/textures/item/light_blue_wool.png b/src/client/resources/assets/textures/item/light_blue_wool.png new file mode 100644 index 000000000..9840265fa Binary files /dev/null and b/src/client/resources/assets/textures/item/light_blue_wool.png differ diff --git a/src/client/resources/assets/textures/item/light_gray_bed.png b/src/client/resources/assets/textures/item/light_gray_bed.png new file mode 100644 index 000000000..3863dd704 Binary files /dev/null and b/src/client/resources/assets/textures/item/light_gray_bed.png differ diff --git a/src/client/resources/assets/textures/item/light_gray_dye.png b/src/client/resources/assets/textures/item/light_gray_dye.png new file mode 100644 index 000000000..405125115 Binary files /dev/null and b/src/client/resources/assets/textures/item/light_gray_dye.png differ diff --git a/src/client/resources/assets/textures/item/light_gray_wool.png b/src/client/resources/assets/textures/item/light_gray_wool.png new file mode 100644 index 000000000..3b7b6b8dc Binary files /dev/null and b/src/client/resources/assets/textures/item/light_gray_wool.png differ diff --git a/src/client/resources/assets/textures/item/lime_bed.png b/src/client/resources/assets/textures/item/lime_bed.png new file mode 100644 index 000000000..f8d98a34f Binary files /dev/null and b/src/client/resources/assets/textures/item/lime_bed.png differ diff --git a/src/client/resources/assets/textures/item/lime_dye.png b/src/client/resources/assets/textures/item/lime_dye.png new file mode 100644 index 000000000..8d1c05f32 Binary files /dev/null and b/src/client/resources/assets/textures/item/lime_dye.png differ diff --git a/src/client/resources/assets/textures/item/lime_wool.png b/src/client/resources/assets/textures/item/lime_wool.png new file mode 100644 index 000000000..121b0c542 Binary files /dev/null and b/src/client/resources/assets/textures/item/lime_wool.png differ diff --git a/src/client/resources/assets/textures/item/magenta_bed.png b/src/client/resources/assets/textures/item/magenta_bed.png new file mode 100644 index 000000000..e6f0d2a55 Binary files /dev/null and b/src/client/resources/assets/textures/item/magenta_bed.png differ diff --git a/src/client/resources/assets/textures/item/magenta_dye.png b/src/client/resources/assets/textures/item/magenta_dye.png new file mode 100644 index 000000000..0a0079dd1 Binary files /dev/null and b/src/client/resources/assets/textures/item/magenta_dye.png differ diff --git a/src/client/resources/assets/textures/item/magenta_wool.png b/src/client/resources/assets/textures/item/magenta_wool.png new file mode 100644 index 000000000..b377fc4c2 Binary files /dev/null and b/src/client/resources/assets/textures/item/magenta_wool.png differ diff --git a/src/client/resources/assets/textures/item/orange_bed.png b/src/client/resources/assets/textures/item/orange_bed.png new file mode 100644 index 000000000..626adad73 Binary files /dev/null and b/src/client/resources/assets/textures/item/orange_bed.png differ diff --git a/src/client/resources/assets/textures/item/orange_dye.png b/src/client/resources/assets/textures/item/orange_dye.png new file mode 100644 index 000000000..79fd7966c Binary files /dev/null and b/src/client/resources/assets/textures/item/orange_dye.png differ diff --git a/src/client/resources/assets/textures/item/orange_tulip.png b/src/client/resources/assets/textures/item/orange_tulip.png new file mode 100644 index 000000000..0119f5eb1 Binary files /dev/null and b/src/client/resources/assets/textures/item/orange_tulip.png differ diff --git a/src/client/resources/assets/textures/item/orange_wool.png b/src/client/resources/assets/textures/item/orange_wool.png new file mode 100644 index 000000000..9a3eaf8a6 Binary files /dev/null and b/src/client/resources/assets/textures/item/orange_wool.png differ diff --git a/src/client/resources/assets/textures/item/oxeye_daisy.png b/src/client/resources/assets/textures/item/oxeye_daisy.png new file mode 100644 index 000000000..65e1f502b Binary files /dev/null and b/src/client/resources/assets/textures/item/oxeye_daisy.png differ diff --git a/src/client/resources/assets/textures/item/peony.png b/src/client/resources/assets/textures/item/peony.png new file mode 100644 index 000000000..c3a12379f Binary files /dev/null and b/src/client/resources/assets/textures/item/peony.png differ diff --git a/src/client/resources/assets/textures/item/periwinkle.png b/src/client/resources/assets/textures/item/periwinkle.png new file mode 100644 index 000000000..9231dd40d Binary files /dev/null and b/src/client/resources/assets/textures/item/periwinkle.png differ diff --git a/src/client/resources/assets/textures/item/pink_bed.png b/src/client/resources/assets/textures/item/pink_bed.png new file mode 100644 index 000000000..759230dd2 Binary files /dev/null and b/src/client/resources/assets/textures/item/pink_bed.png differ diff --git a/src/client/resources/assets/textures/item/pink_dye.png b/src/client/resources/assets/textures/item/pink_dye.png new file mode 100644 index 000000000..70597b72d Binary files /dev/null and b/src/client/resources/assets/textures/item/pink_dye.png differ diff --git a/src/client/resources/assets/textures/item/pink_lily.png b/src/client/resources/assets/textures/item/pink_lily.png new file mode 100644 index 000000000..737cf0482 Binary files /dev/null and b/src/client/resources/assets/textures/item/pink_lily.png differ diff --git a/src/client/resources/assets/textures/item/pink_tulip.png b/src/client/resources/assets/textures/item/pink_tulip.png new file mode 100644 index 000000000..5887dad33 Binary files /dev/null and b/src/client/resources/assets/textures/item/pink_tulip.png differ diff --git a/src/client/resources/assets/textures/item/pink_wool.png b/src/client/resources/assets/textures/item/pink_wool.png new file mode 100644 index 000000000..278904409 Binary files /dev/null and b/src/client/resources/assets/textures/item/pink_wool.png differ diff --git a/src/client/resources/assets/textures/item/poppy.png b/src/client/resources/assets/textures/item/poppy.png new file mode 100644 index 000000000..342ba177d Binary files /dev/null and b/src/client/resources/assets/textures/item/poppy.png differ diff --git a/src/client/resources/assets/textures/item/purple_bed.png b/src/client/resources/assets/textures/item/purple_bed.png new file mode 100644 index 000000000..d4ecad6be Binary files /dev/null and b/src/client/resources/assets/textures/item/purple_bed.png differ diff --git a/src/client/resources/assets/textures/item/purple_dye.png b/src/client/resources/assets/textures/item/purple_dye.png new file mode 100644 index 000000000..549595b2f Binary files /dev/null and b/src/client/resources/assets/textures/item/purple_dye.png differ diff --git a/src/client/resources/assets/textures/item/purple_wool.png b/src/client/resources/assets/textures/item/purple_wool.png new file mode 100644 index 000000000..39f581597 Binary files /dev/null and b/src/client/resources/assets/textures/item/purple_wool.png differ diff --git a/src/client/resources/assets/textures/item/red_bed.png b/src/client/resources/assets/textures/item/red_bed.png new file mode 100644 index 000000000..29efdf8d9 Binary files /dev/null and b/src/client/resources/assets/textures/item/red_bed.png differ diff --git a/src/client/resources/assets/textures/item/red_dye.png b/src/client/resources/assets/textures/item/red_dye.png new file mode 100644 index 000000000..1156a4f72 Binary files /dev/null and b/src/client/resources/assets/textures/item/red_dye.png differ diff --git a/src/client/resources/assets/textures/item/red_flower.png b/src/client/resources/assets/textures/item/red_flower.png deleted file mode 100644 index 10cc6290b..000000000 Binary files a/src/client/resources/assets/textures/item/red_flower.png and /dev/null differ diff --git a/src/client/resources/assets/textures/item/red_tulip.png b/src/client/resources/assets/textures/item/red_tulip.png new file mode 100644 index 000000000..17b0b1f6f Binary files /dev/null and b/src/client/resources/assets/textures/item/red_tulip.png differ diff --git a/src/client/resources/assets/textures/item/red_wool.png b/src/client/resources/assets/textures/item/red_wool.png index fb9cf26c5..e951f871f 100644 Binary files a/src/client/resources/assets/textures/item/red_wool.png and b/src/client/resources/assets/textures/item/red_wool.png differ diff --git a/src/client/resources/assets/textures/item/rose.png b/src/client/resources/assets/textures/item/rose.png new file mode 100644 index 000000000..ebb5bd99e Binary files /dev/null and b/src/client/resources/assets/textures/item/rose.png differ diff --git a/src/client/resources/assets/textures/item/sunflower.png b/src/client/resources/assets/textures/item/sunflower.png new file mode 100644 index 000000000..c020c15dc Binary files /dev/null and b/src/client/resources/assets/textures/item/sunflower.png differ diff --git a/src/client/resources/assets/textures/item/violet.png b/src/client/resources/assets/textures/item/violet.png new file mode 100644 index 000000000..f94b60344 Binary files /dev/null and b/src/client/resources/assets/textures/item/violet.png differ diff --git a/src/client/resources/assets/textures/item/white_bed.png b/src/client/resources/assets/textures/item/white_bed.png new file mode 100644 index 000000000..2c13b83dc Binary files /dev/null and b/src/client/resources/assets/textures/item/white_bed.png differ diff --git a/src/client/resources/assets/textures/item/white_dye.png b/src/client/resources/assets/textures/item/white_dye.png new file mode 100644 index 000000000..e4e84bab0 Binary files /dev/null and b/src/client/resources/assets/textures/item/white_dye.png differ diff --git a/src/client/resources/assets/textures/item/white_flower.png b/src/client/resources/assets/textures/item/white_flower.png deleted file mode 100644 index b865d1e3a..000000000 Binary files a/src/client/resources/assets/textures/item/white_flower.png and /dev/null differ diff --git a/src/client/resources/assets/textures/item/white_lily.png b/src/client/resources/assets/textures/item/white_lily.png new file mode 100644 index 000000000..ada7dd66d Binary files /dev/null and b/src/client/resources/assets/textures/item/white_lily.png differ diff --git a/src/client/resources/assets/textures/item/white_tulip.png b/src/client/resources/assets/textures/item/white_tulip.png new file mode 100644 index 000000000..0cddbf24e Binary files /dev/null and b/src/client/resources/assets/textures/item/white_tulip.png differ diff --git a/src/client/resources/assets/textures/item/white_wool.png b/src/client/resources/assets/textures/item/white_wool.png new file mode 100644 index 000000000..402e5293c Binary files /dev/null and b/src/client/resources/assets/textures/item/white_wool.png differ diff --git a/src/client/resources/assets/textures/item/wool.png b/src/client/resources/assets/textures/item/wool.png deleted file mode 100644 index f1f78c58b..000000000 Binary files a/src/client/resources/assets/textures/item/wool.png and /dev/null differ diff --git a/src/client/resources/assets/textures/item/yellow_bed.png b/src/client/resources/assets/textures/item/yellow_bed.png new file mode 100644 index 000000000..b4a36936e Binary files /dev/null and b/src/client/resources/assets/textures/item/yellow_bed.png differ diff --git a/src/client/resources/assets/textures/item/yellow_dye.png b/src/client/resources/assets/textures/item/yellow_dye.png new file mode 100644 index 000000000..715662753 Binary files /dev/null and b/src/client/resources/assets/textures/item/yellow_dye.png differ diff --git a/src/client/resources/assets/textures/item/yellow_wool.png b/src/client/resources/assets/textures/item/yellow_wool.png index 1c68e284c..9190b4c5f 100644 Binary files a/src/client/resources/assets/textures/item/yellow_wool.png and b/src/client/resources/assets/textures/item/yellow_wool.png differ diff --git a/src/client/resources/assets/textures/tile/allium.png b/src/client/resources/assets/textures/tile/allium.png new file mode 100644 index 000000000..ecdb27de7 Binary files /dev/null and b/src/client/resources/assets/textures/tile/allium.png differ diff --git a/src/client/resources/assets/textures/tile/black_wool.png b/src/client/resources/assets/textures/tile/black_wool.png index 1c56b01b6..7d126d553 100644 Binary files a/src/client/resources/assets/textures/tile/black_wool.png and b/src/client/resources/assets/textures/tile/black_wool.png differ diff --git a/src/client/resources/assets/textures/tile/blue_orchid.png b/src/client/resources/assets/textures/tile/blue_orchid.png new file mode 100644 index 000000000..21c3f8142 Binary files /dev/null and b/src/client/resources/assets/textures/tile/blue_orchid.png differ diff --git a/src/client/resources/assets/textures/tile/blue_wool.png b/src/client/resources/assets/textures/tile/blue_wool.png index 51eb7ec89..87a93c3c9 100644 Binary files a/src/client/resources/assets/textures/tile/blue_wool.png and b/src/client/resources/assets/textures/tile/blue_wool.png differ diff --git a/src/client/resources/assets/textures/tile/brown_wool.png b/src/client/resources/assets/textures/tile/brown_wool.png new file mode 100644 index 000000000..10f3a6910 Binary files /dev/null and b/src/client/resources/assets/textures/tile/brown_wool.png differ diff --git a/src/client/resources/assets/textures/tile/cornflower.png b/src/client/resources/assets/textures/tile/cornflower.png new file mode 100644 index 000000000..905b7f112 Binary files /dev/null and b/src/client/resources/assets/textures/tile/cornflower.png differ diff --git a/src/client/resources/assets/textures/tile/cyan_wool.png b/src/client/resources/assets/textures/tile/cyan_wool.png new file mode 100644 index 000000000..54cea062d Binary files /dev/null and b/src/client/resources/assets/textures/tile/cyan_wool.png differ diff --git a/src/client/resources/assets/textures/tile/dandelion.png b/src/client/resources/assets/textures/tile/dandelion.png new file mode 100644 index 000000000..b4f2a5b94 Binary files /dev/null and b/src/client/resources/assets/textures/tile/dandelion.png differ diff --git a/src/client/resources/assets/textures/tile/gray_wool.png b/src/client/resources/assets/textures/tile/gray_wool.png new file mode 100644 index 000000000..06e3da118 Binary files /dev/null and b/src/client/resources/assets/textures/tile/gray_wool.png differ diff --git a/src/client/resources/assets/textures/tile/green_wool.png b/src/client/resources/assets/textures/tile/green_wool.png index 1f448ed38..928ebdc9c 100644 Binary files a/src/client/resources/assets/textures/tile/green_wool.png and b/src/client/resources/assets/textures/tile/green_wool.png differ diff --git a/src/client/resources/assets/textures/tile/hydrangea.png b/src/client/resources/assets/textures/tile/hydrangea.png new file mode 100644 index 000000000..aa766c1fd Binary files /dev/null and b/src/client/resources/assets/textures/tile/hydrangea.png differ diff --git a/src/client/resources/assets/textures/tile/iris.png b/src/client/resources/assets/textures/tile/iris.png new file mode 100644 index 000000000..f1d9d1d01 Binary files /dev/null and b/src/client/resources/assets/textures/tile/iris.png differ diff --git a/src/client/resources/assets/textures/tile/light_blue_wool.png b/src/client/resources/assets/textures/tile/light_blue_wool.png new file mode 100644 index 000000000..af710f4ac Binary files /dev/null and b/src/client/resources/assets/textures/tile/light_blue_wool.png differ diff --git a/src/client/resources/assets/textures/tile/light_gray_wool.png b/src/client/resources/assets/textures/tile/light_gray_wool.png new file mode 100644 index 000000000..37b2a4720 Binary files /dev/null and b/src/client/resources/assets/textures/tile/light_gray_wool.png differ diff --git a/src/client/resources/assets/textures/tile/lime_wool.png b/src/client/resources/assets/textures/tile/lime_wool.png new file mode 100644 index 000000000..c62c69bf8 Binary files /dev/null and b/src/client/resources/assets/textures/tile/lime_wool.png differ diff --git a/src/client/resources/assets/textures/tile/magenta_wool.png b/src/client/resources/assets/textures/tile/magenta_wool.png new file mode 100644 index 000000000..9f3037c38 Binary files /dev/null and b/src/client/resources/assets/textures/tile/magenta_wool.png differ diff --git a/src/client/resources/assets/textures/tile/orange_tulip.png b/src/client/resources/assets/textures/tile/orange_tulip.png new file mode 100644 index 000000000..6cffdcecf Binary files /dev/null and b/src/client/resources/assets/textures/tile/orange_tulip.png differ diff --git a/src/client/resources/assets/textures/tile/orange_wool.png b/src/client/resources/assets/textures/tile/orange_wool.png new file mode 100644 index 000000000..a6a9e6d68 Binary files /dev/null and b/src/client/resources/assets/textures/tile/orange_wool.png differ diff --git a/src/client/resources/assets/textures/tile/oxeye_daisy.png b/src/client/resources/assets/textures/tile/oxeye_daisy.png new file mode 100644 index 000000000..f6b3b4efb Binary files /dev/null and b/src/client/resources/assets/textures/tile/oxeye_daisy.png differ diff --git a/src/client/resources/assets/textures/tile/peony.png b/src/client/resources/assets/textures/tile/peony.png new file mode 100644 index 000000000..0e1296d5d Binary files /dev/null and b/src/client/resources/assets/textures/tile/peony.png differ diff --git a/src/client/resources/assets/textures/tile/periwinkle.png b/src/client/resources/assets/textures/tile/periwinkle.png new file mode 100644 index 000000000..0e5f7b3f6 Binary files /dev/null and b/src/client/resources/assets/textures/tile/periwinkle.png differ diff --git a/src/client/resources/assets/textures/tile/pink_lily.png b/src/client/resources/assets/textures/tile/pink_lily.png new file mode 100644 index 000000000..4d4a49c9c Binary files /dev/null and b/src/client/resources/assets/textures/tile/pink_lily.png differ diff --git a/src/client/resources/assets/textures/tile/pink_tulip.png b/src/client/resources/assets/textures/tile/pink_tulip.png new file mode 100644 index 000000000..4bf18aaae Binary files /dev/null and b/src/client/resources/assets/textures/tile/pink_tulip.png differ diff --git a/src/client/resources/assets/textures/tile/pink_wool.png b/src/client/resources/assets/textures/tile/pink_wool.png new file mode 100644 index 000000000..3a393eba3 Binary files /dev/null and b/src/client/resources/assets/textures/tile/pink_wool.png differ diff --git a/src/client/resources/assets/textures/tile/poppy.png b/src/client/resources/assets/textures/tile/poppy.png new file mode 100644 index 000000000..9ef5e54c4 Binary files /dev/null and b/src/client/resources/assets/textures/tile/poppy.png differ diff --git a/src/client/resources/assets/textures/tile/purple_wool.png b/src/client/resources/assets/textures/tile/purple_wool.png new file mode 100644 index 000000000..c0fd23277 Binary files /dev/null and b/src/client/resources/assets/textures/tile/purple_wool.png differ diff --git a/src/client/resources/assets/textures/tile/red_tulip.png b/src/client/resources/assets/textures/tile/red_tulip.png new file mode 100644 index 000000000..56f5ada82 Binary files /dev/null and b/src/client/resources/assets/textures/tile/red_tulip.png differ diff --git a/src/client/resources/assets/textures/tile/red_wool.png b/src/client/resources/assets/textures/tile/red_wool.png index 74e97051d..7c2417885 100644 Binary files a/src/client/resources/assets/textures/tile/red_wool.png and b/src/client/resources/assets/textures/tile/red_wool.png differ diff --git a/src/client/resources/assets/textures/tile/rose.png b/src/client/resources/assets/textures/tile/rose.png new file mode 100644 index 000000000..bb9527a21 Binary files /dev/null and b/src/client/resources/assets/textures/tile/rose.png differ diff --git a/src/client/resources/assets/textures/tile/sunflower.png b/src/client/resources/assets/textures/tile/sunflower.png new file mode 100644 index 000000000..6bf603cdd Binary files /dev/null and b/src/client/resources/assets/textures/tile/sunflower.png differ diff --git a/src/client/resources/assets/textures/tile/violet.png b/src/client/resources/assets/textures/tile/violet.png new file mode 100644 index 000000000..27e25caba Binary files /dev/null and b/src/client/resources/assets/textures/tile/violet.png differ diff --git a/src/client/resources/assets/textures/tile/white_lily.png b/src/client/resources/assets/textures/tile/white_lily.png new file mode 100644 index 000000000..7affae461 Binary files /dev/null and b/src/client/resources/assets/textures/tile/white_lily.png differ diff --git a/src/client/resources/assets/textures/tile/white_tulip.png b/src/client/resources/assets/textures/tile/white_tulip.png new file mode 100644 index 000000000..efca08795 Binary files /dev/null and b/src/client/resources/assets/textures/tile/white_tulip.png differ diff --git a/src/client/resources/assets/textures/tile/white_wool.png b/src/client/resources/assets/textures/tile/white_wool.png index 06a15a725..e87eab913 100644 Binary files a/src/client/resources/assets/textures/tile/white_wool.png and b/src/client/resources/assets/textures/tile/white_wool.png differ diff --git a/src/client/resources/assets/textures/tile/yellow_wool.png b/src/client/resources/assets/textures/tile/yellow_wool.png index aad70306b..2c5a90093 100644 Binary files a/src/client/resources/assets/textures/tile/yellow_wool.png and b/src/client/resources/assets/textures/tile/yellow_wool.png differ diff --git a/src/client/resources/resources/data/chestloot/dungeonchest.txt b/src/client/resources/resources/data/chestloot/dungeonchest.txt index 1f5769f9d..6d80237ef 100644 --- a/src/client/resources/resources/data/chestloot/dungeonchest.txt +++ b/src/client/resources/resources/data/chestloot/dungeonchest.txt @@ -1,7 +1,7 @@ 5,steak,6 5,cooked pork,6 4,wood,20 -4,wool,12 +4,white wool,12 2,coal,4 5,gem,7 5,gem,8 diff --git a/src/client/resources/resources/recipes.json b/src/client/resources/resources/recipes.json index f627cefbe..a1a75a57e 100644 --- a/src/client/resources/resources/recipes.json +++ b/src/client/resources/resources/recipes.json @@ -1,783 +1,833 @@ { - "minicraft.advancements.recipes.gem_fishing_rod": { + "minicraft.advancements.recipes.anvil": { + "criteria": { + "has_iron": { + "conditions": { + "items": [ + { + "items": [ + "Iron" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_gem", - "has_string" + "has_iron" ] ], + "rewards": { + "recipes": { + "Anvil_1": [ + "Iron_5" + ] + } + } + }, + "minicraft.advancements.recipes.arcane_fertilizer": { "criteria": { - "has_gem": { - "trigger": "inventory_changed", + "has_bone": { "conditions": { "items": [ { "items": [ - "Gem" + "Bone" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_string": { - "trigger": "inventory_changed", + "has_lapis": { "conditions": { "items": [ { "items": [ - "String" + "Lapis" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_bone", + "has_lapis" + ] + ], "rewards": { "recipes": { - "Gem Fishing Rod_1": [ - "String_3", - "Gem_10" + "ARCANE FERTILIZER_3": [ + "Lapis_6", + "Bone_2" ] } } }, - "minicraft.advancements.recipes.health_potion": { - "requirements": [ - [ - "has_leather_armor", - "has_gunpowder", - "has_awkward_potion" - ] - ], + "minicraft.advancements.recipes.arrow": { "criteria": { - "has_leather_armor": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Leather Armor" - ] - } - ] - } - }, - "has_gunpowder": { - "trigger": "inventory_changed", + "has_stone": { "conditions": { "items": [ { "items": [ - "Gunpowder" + "Stone" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_stone", + "has_wood" + ] + ], "rewards": { "recipes": { - "Health Potion_1": [ - "Awkward Potion_1", - "Gunpowder_2", - "Leather Armor_1" + "Arrow_3": [ + "Stone_2", + "Wood_2" ] } } }, - "minicraft.advancements.recipes.green_wool": { - "requirements": [ - [ - "has_cactus", - "has_wool" - ] - ], + "minicraft.advancements.recipes.awkward_potion": { "criteria": { - "has_cactus": { - "trigger": "inventory_changed", + "has_glass_bottle": { "conditions": { "items": [ { "items": [ - "Cactus" + "Glass Bottle" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wool": { - "trigger": "inventory_changed", + "has_lapis": { "conditions": { "items": [ { "items": [ - "Wool" + "Lapis" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_lapis", + "has_glass_bottle" + ] + ], "rewards": { "recipes": { - "Green Wool_1": [ - "Cactus_1", - "Wool_1" + "Awkward Potion_1": [ + "Lapis_3", + "Glass Bottle_1" ] } } }, - "minicraft.advancements.recipes.obsidian_brick": { - "requirements": [ - [ - "has_raw_obsidian" - ] - ], + "minicraft.advancements.recipes.baked_potato": { "criteria": { - "has_raw_obsidian": { - "trigger": "inventory_changed", + "has_potato": { "conditions": { "items": [ { "items": [ - "Raw Obsidian" + "Potato" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_potato" + ] + ], "rewards": { "recipes": { - "Obsidian Brick_1": [ - "Raw Obsidian_2" + "Baked Potato_1": [ + "Potato_1" ] } } }, - "minicraft.advancements.recipes.plank": { - "requirements": [ - [ - "has_wood" - ] - ], + "minicraft.advancements.recipes.black_bed": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_black_wool": { "conditions": { "items": [ { "items": [ - "Wood" + "Black Wool" ] } ] - } - } - }, - "rewards": { - "recipes": { - "Plank_2": [ - "Wood_1" - ] - } - } - }, - "minicraft.advancements.recipes.leather_armor": { - "requirements": [ - [ - "has_leather" - ] - ], - "criteria": { - "has_leather": { - "trigger": "inventory_changed", + }, + "trigger": "inventory_changed" + }, + "has_wood": { "conditions": { "items": [ { "items": [ - "Leather" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_black_wool", + "has_wood" + ] + ], "rewards": { "recipes": { - "Leather Armor_1": [ - "Leather_10" + "Black Bed_1": [ + "Wood_5", + "Black Wool_3" ] } } }, - "minicraft.advancements.recipes.lava_potion": { - "requirements": [ - [ - "has_awkward_potion", - "has_lava_bucket" - ] - ], + "minicraft.advancements.recipes.black_bed_from_white_bed": { "criteria": { - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_black_dye": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Black Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_lava_bucket": { - "trigger": "inventory_changed", + "has_white_bed": { "conditions": { "items": [ { "items": [ - "Lava Bucket" + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_bed", + "has_black_dye" + ] + ], "rewards": { "recipes": { - "Lava Potion_1": [ - "Awkward Potion_1", - "Lava Bucket_1" + "Black Bed_1": [ + "White Bed_1", + "Black Dye_1" ] } } }, - "minicraft.advancements.recipes.iron_axe": { - "requirements": [ - [ - "has_wood", - "has_iron" - ] - ], + "minicraft.advancements.recipes.black_clothes": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_black_dye": { "conditions": { "items": [ { "items": [ - "Wood" + "Black Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron": { - "trigger": "inventory_changed", + "has_cloth": { "conditions": { "items": [ { "items": [ - "Iron" + "Cloth" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_cloth", + "has_black_dye" + ] + ], "rewards": { "recipes": { - "Iron Axe_1": [ - "Wood_5", - "Iron_5" + "Black Clothes_1": [ + "Cloth_5", + "Black Dye_1" ] } } }, - "minicraft.advancements.recipes.black_wool": { + "minicraft.advancements.recipes.black_dye": { + "criteria": { + "has_coal": { + "conditions": { + "items": [ + { + "items": [ + "Coal" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_coal", - "has_wool" + "has_coal" ] ], + "rewards": { + "recipes": { + "Black Dye_1": [ + "Coal_1" + ] + } + } + }, + "minicraft.advancements.recipes.black_wool": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_black_dye": { "conditions": { "items": [ { "items": [ - "Coal" + "Black Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wool": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Wool" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_wool", + "has_black_dye" + ] + ], "rewards": { "recipes": { "Black Wool_1": [ - "Coal_1", - "Wool_1" + "Black Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.cooked_pork": { - "requirements": [ - [ - "has_coal", - "has_raw_pork" - ] - ], + "minicraft.advancements.recipes.blue_bed": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_blue_wool": { "conditions": { "items": [ { "items": [ - "Coal" + "Blue Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_raw_pork": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Raw Pork" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_blue_wool" + ] + ], "rewards": { "recipes": { - "Cooked Pork_1": [ - "Coal_1", - "Raw Pork_1" + "Blue Bed_1": [ + "Wood_5", + "Blue Wool_3" ] } } }, - "minicraft.advancements.recipes.wooden_hoe": { - "requirements": [ - [ - "has_wood" - ] - ], + "minicraft.advancements.recipes.blue_bed_from_white_bed": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_blue_dye": { "conditions": { "items": [ { "items": [ - "Wood" + "Blue Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_bed", + "has_blue_dye" + ] + ], "rewards": { "recipes": { - "Wood Hoe_1": [ - "Wood_5" + "Blue Bed_1": [ + "Blue Dye_1", + "White Bed_1" ] } } }, - "minicraft.advancements.recipes.stone_sword": { - "requirements": [ - [ - "has_stone", - "has_wood" - ] - ], + "minicraft.advancements.recipes.blue_clothes": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_blue_dye": { "conditions": { "items": [ { "items": [ - "Stone" + "Blue Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wood": { - "trigger": "inventory_changed", + "has_cloth": { "conditions": { "items": [ { "items": [ - "Wood" + "Cloth" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_cloth", + "has_blue_dye" + ] + ], "rewards": { "recipes": { - "Rock Sword_1": [ - "Stone_5", - "Wood_5" + "Blue Clothes_1": [ + "Blue Dye_1", + "Cloth_5" ] } } }, - "minicraft.advancements.recipes.snake_armor": { - "requirements": [ - [ - "has_scale" - ] - ], + "minicraft.advancements.recipes.blue_dye": { "criteria": { - "has_scale": { - "trigger": "inventory_changed", + "has_lapis": { "conditions": { "items": [ { "items": [ - "Scale" + "Lapis" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_lapis" + ] + ], "rewards": { "recipes": { - "Snake Armor_1": [ - "Scale_15" + "Blue Dye_1": [ + "Lapis_1" ] } } }, - "minicraft.advancements.recipes.shears": { - "requirements": [ - [ - "has_iron" - ] - ], + "minicraft.advancements.recipes.blue_dye_from_cornflower": { "criteria": { - "has_iron": { - "trigger": "inventory_changed", + "has_cornflower": { "conditions": { "items": [ { "items": [ - "Iron" + "Cornflower" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_cornflower" + ] + ], "rewards": { "recipes": { - "Shears_1": [ - "Iron_4" + "Blue Dye_1": [ + "Cornflower_1" ] } } }, - "minicraft.advancements.recipes.wood_door": { - "requirements": [ - [ - "has_plank" - ] - ], + "minicraft.advancements.recipes.blue_dye_from_iris": { "criteria": { - "has_plank": { - "trigger": "inventory_changed", + "has_iris": { "conditions": { "items": [ { "items": [ - "Plank" + "Iris" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_iris" + ] + ], "rewards": { "recipes": { - "Wood Door_1": [ - "Plank_5" + "Blue Dye_1": [ + "Iris_1" ] } } }, - "minicraft.advancements.recipes.stone_fence": { - "requirements": [ - [ - "has_stone_brick" - ] - ], + "minicraft.advancements.recipes.blue_wool": { "criteria": { - "has_stone_brick": { - "trigger": "inventory_changed", + "has_blue_dye": { "conditions": { "items": [ { "items": [ - "Stone Brick" + "Blue Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_wool", + "has_blue_dye" + ] + ], "rewards": { "recipes": { - "Stone Fence_1": [ - "Stone Brick_3" + "Blue Wool_1": [ + "Blue Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.green_clothes": { + "minicraft.advancements.recipes.bread": { + "criteria": { + "has_wheat": { + "conditions": { + "items": [ + { + "items": [ + "Wheat" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_cactus", - "has_cloth" + "has_wheat" ] ], + "rewards": { + "recipes": { + "Bread_1": [ + "Wheat_4" + ] + } + } + }, + "minicraft.advancements.recipes.brown_bed": { "criteria": { - "has_cactus": { - "trigger": "inventory_changed", + "has_brown_wool": { "conditions": { "items": [ { "items": [ - "Cactus" + "Brown Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_cloth": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Cloth" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_brown_wool", + "has_wood" + ] + ], "rewards": { "recipes": { - "Green Clothes_1": [ - "Cactus_1", - "Cloth_5" + "Brown Bed_1": [ + "Brown Wool_3", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.red_wool": { - "requirements": [ - [ - "has_rose", - "has_wool" - ] - ], + "minicraft.advancements.recipes.brown_bed_from_white_bed": { "criteria": { - "has_rose": { - "trigger": "inventory_changed", + "has_brown_dye": { "conditions": { "items": [ { "items": [ - "Rose" + "Brown Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wool": { - "trigger": "inventory_changed", + "has_white_bed": { "conditions": { "items": [ { "items": [ - "Wool" + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_bed", + "has_brown_dye" + ] + ], "rewards": { "recipes": { - "Red Wool_1": [ - "Rose_1", - "Wool_1" + "Brown Bed_1": [ + "White Bed_1", + "Brown Dye_1" ] } } }, - "minicraft.advancements.recipes.stone_bow": { - "requirements": [ - [ - "has_stone", - "has_wood", - "has_string" - ] - ], + "minicraft.advancements.recipes.brown_dye": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Stone" - ] - } - ] - } - }, - "has_wood": { - "trigger": "inventory_changed", + "has_green_dye": { "conditions": { "items": [ { "items": [ - "Wood" + "Green Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_string": { - "trigger": "inventory_changed", + "has_red_dye": { "conditions": { "items": [ { "items": [ - "String" + "Red Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_green_dye", + "has_red_dye" + ] + ], "rewards": { "recipes": { - "Rock Bow_1": [ - "String_2", - "Stone_5", - "Wood_5" + "Brown Dye_2": [ + "Green Dye_1", + "Red Dye_1" ] } } }, - "minicraft.advancements.recipes.gem_bow": { - "requirements": [ - [ - "has_wood", - "has_gem", - "has_string" - ] - ], + "minicraft.advancements.recipes.brown_wool": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_brown_dye": { "conditions": { "items": [ { "items": [ - "Wood" - ] - } - ] - } - }, - "has_gem": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Gem" + "Brown Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_string": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "String" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_wool", + "has_brown_dye" + ] + ], "rewards": { "recipes": { - "Gem Bow_1": [ - "String_2", - "Wood_5", - "Gem_50" + "Brown Wool_1": [ + "Brown Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.wooden_axe": { - "requirements": [ - [ - "has_wood" - ] - ], + "minicraft.advancements.recipes.chest": { "criteria": { "has_wood": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -786,96 +836,122 @@ ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood" + ] + ], "rewards": { "recipes": { - "Wood Axe_1": [ - "Wood_5" + "Chest_1": [ + "Wood_20" ] } } }, - "minicraft.advancements.recipes.stone_brick": { - "requirements": [ - [ - "has_stone" - ] - ], + "minicraft.advancements.recipes.cooked_fish": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_coal": { "conditions": { "items": [ { "items": [ - "Stone" + "Coal" ] } ] - } + }, + "trigger": "inventory_changed" + }, + "has_raw_fish": { + "conditions": { + "items": [ + { + "items": [ + "Raw Fish" + ] + } + ] + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_coal", + "has_raw_fish" + ] + ], "rewards": { "recipes": { - "Stone Brick_1": [ - "Stone_2" + "Cooked Fish_1": [ + "Coal_1", + "Raw Fish_1" ] } } }, - "minicraft.advancements.recipes.workbench": { - "requirements": [ - [ - "has_wood" - ] - ], + "minicraft.advancements.recipes.cooked_pork": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_coal": { "conditions": { "items": [ { "items": [ - "Wood" + "Coal" ] } ] - } + }, + "trigger": "inventory_changed" + }, + "has_raw_pork": { + "conditions": { + "items": [ + { + "items": [ + "Raw Pork" + ] + } + ] + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_coal", + "has_raw_pork" + ] + ], "rewards": { "recipes": { - "Workbench_1": [ - "Wood_10" + "Cooked Pork_1": [ + "Coal_1", + "Raw Pork_1" ] } } }, - "minicraft.advancements.recipes.lantern": { - "requirements": [ - [ - "has_glass", - "has_wood", - "has_slime" - ] - ], + "minicraft.advancements.recipes.cyan_bed": { "criteria": { - "has_glass": { - "trigger": "inventory_changed", + "has_cyan_wool": { "conditions": { "items": [ { "items": [ - "Glass" + "Cyan Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, "has_wood": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -884,69 +960,70 @@ ] } ] - } - }, - "has_slime": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Slime" - ] - } - ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_cyan_wool" + ] + ], "rewards": { "recipes": { - "Lantern_1": [ - "Glass_3", - "Slime_4", - "Wood_8" + "Cyan Bed_1": [ + "Wood_5", + "Cyan Wool_3" ] } } }, - "minicraft.advancements.recipes.gold_armor": { - "requirements": [ - [ - "has_gold" - ] - ], + "minicraft.advancements.recipes.cyan_bed_from_white_bed": { "criteria": { - "has_gold": { - "trigger": "inventory_changed", + "has_cyan_dye": { "conditions": { "items": [ { "items": [ - "Gold" + "Cyan Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_cyan_dye", + "has_white_bed" + ] + ], "rewards": { "recipes": { - "Gold Armor_1": [ - "Gold_10" + "Cyan Bed_1": [ + "Cyan Dye_1", + "White Bed_1" ] } } }, - "minicraft.advancements.recipes.yellow_clothes": { - "requirements": [ - [ - "has_cloth", - "has_flower" - ] - ], + "minicraft.advancements.recipes.cyan_clothes": { "criteria": { "has_cloth": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -955,1004 +1032,1046 @@ ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_flower": { - "trigger": "inventory_changed", + "has_cyan_dye": { "conditions": { "items": [ { "items": [ - "Flower" + "Cyan Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_cyan_dye", + "has_cloth" + ] + ], "rewards": { "recipes": { - "Yellow Clothes_1": [ - "Flower_1", + "Cyan Clothes_1": [ + "Cyan Dye_1", "Cloth_5" ] } } }, - "minicraft.advancements.recipes.glass_bottle": { - "requirements": [ - [ - "has_glass" - ] - ], + "minicraft.advancements.recipes.cyan_dye": { "criteria": { - "has_glass": { - "trigger": "inventory_changed", + "has_blue_dye": { "conditions": { "items": [ { "items": [ - "Glass" + "Blue Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_green_dye": { + "conditions": { + "items": [ + { + "items": [ + "Green Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_green_dye", + "has_blue_dye" + ] + ], "rewards": { "recipes": { - "Glass Bottle_1": [ - "Glass_3" + "Cyan Dye_2": [ + "Blue Dye_1", + "Green Dye_1" ] } } }, - "minicraft.advancements.recipes.gem_claymore": { - "requirements": [ - [ - "has_shard", - "has_gem_sword" - ] - ], + "minicraft.advancements.recipes.cyan_wool": { "criteria": { - "has_shard": { - "trigger": "inventory_changed", + "has_cyan_dye": { "conditions": { "items": [ { "items": [ - "Shard" + "Cyan Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gem_sword": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Gem Sword" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, - "rewards": { - "recipes": { - "Gem Claymore_1": [ - "Gem Sword_1", - "Shard_15" - ] - } - } - }, - "minicraft.advancements.recipes.wood_fence": { "requirements": [ [ - "has_plank" + "has_cyan_dye", + "has_white_wool" ] ], - "criteria": { - "has_plank": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Plank" - ] - } - ] - } - } - }, "rewards": { "recipes": { - "Wood Fence_1": [ - "Plank_3" + "Cyan Wool_1": [ + "Cyan Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.wood_fishing_rod": { - "requirements": [ - [ - "has_wood", - "has_string" - ] - ], + "minicraft.advancements.recipes.dye_vat": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Wood" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_string": { - "trigger": "inventory_changed", + "has_stone": { "conditions": { "items": [ { "items": [ - "String" + "Stone" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_stone", + "has_iron" + ] + ], "rewards": { "recipes": { - "Wood Fishing Rod_1": [ - "String_3", - "Wood_10" + "Dye Vat_1": [ + "Stone_10", + "Iron_5" ] } } }, - "minicraft.advancements.recipes.gold_fishing_rod": { - "requirements": [ - [ - "has_string", - "has_gold" - ] - ], + "minicraft.advancements.recipes.empty_bucket": { "criteria": { - "has_string": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "String" - ] - } - ] - } - }, - "has_gold": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Gold" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_iron" + ] + ], "rewards": { "recipes": { - "Gold Fishing Rod_1": [ - "Gold_10", - "String_3" + "Empty Bucket_1": [ + "Iron_5" ] } } }, - "minicraft.advancements.recipes.purple_clothes": { - "requirements": [ - [ - "has_rose", - "has_lapis", - "has_cloth" - ] - ], + "minicraft.advancements.recipes.enchanter": { "criteria": { - "has_rose": { - "trigger": "inventory_changed", + "has_lapis": { "conditions": { "items": [ { "items": [ - "Rose" + "Lapis" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_lapis": { - "trigger": "inventory_changed", + "has_string": { "conditions": { "items": [ { "items": [ - "Lapis" + "String" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_cloth": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Cloth" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, - "rewards": { - "recipes": { - "Purple Clothes_1": [ - "Lapis_1", - "Cloth_5", - "Rose_1" - ] - } - } - }, - "minicraft.advancements.recipes.stone_pickaxe": { "requirements": [ [ - "has_stone", - "has_wood" + "has_wood", + "has_string", + "has_lapis" ] ], + "rewards": { + "recipes": { + "Enchanter_1": [ + "Lapis_10", + "String_2", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.energy_potion": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_awkward_potion": { "conditions": { "items": [ { "items": [ - "Stone" + "Awkward Potion" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wood": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Wood" + "Gem" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_gem", + "has_awkward_potion" + ] + ], "rewards": { "recipes": { - "Rock Pickaxe_1": [ - "Stone_5", - "Wood_5" + "Energy Potion_1": [ + "Awkward Potion_1", + "Gem_25" ] } } }, - "minicraft.advancements.recipes.blue_clothes": { - "requirements": [ - [ - "has_lapis", - "has_cloth" - ] - ], + "minicraft.advancements.recipes.escape_potion": { "criteria": { - "has_lapis": { - "trigger": "inventory_changed", + "has_awkward_potion": { "conditions": { "items": [ { "items": [ - "Lapis" + "Awkward Potion" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_cloth": { - "trigger": "inventory_changed", + "has_gunpowder": { "conditions": { "items": [ { "items": [ - "Cloth" + "Gunpowder" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_lapis": { + "conditions": { + "items": [ + { + "items": [ + "Lapis" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_lapis", + "has_gunpowder", + "has_awkward_potion" + ] + ], "rewards": { "recipes": { - "Blue Clothes_1": [ - "Lapis_1", - "Cloth_5" + "Escape Potion_1": [ + "Lapis_7", + "Awkward Potion_1", + "Gunpowder_3" ] } } }, - "minicraft.advancements.recipes.watering_can": { - "requirements": [ - [ - "has_iron" - ] - ], + "minicraft.advancements.recipes.furnace": { "criteria": { - "has_iron": { - "trigger": "inventory_changed", + "has_stone": { "conditions": { "items": [ { "items": [ - "Iron" + "Stone" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_stone" + ] + ], "rewards": { "recipes": { - "Watering Can_1": [ - "Iron_3" + "Furnace_1": [ + "Stone_20" ] } } }, - "minicraft.advancements.recipes.gem_sword": { + "minicraft.advancements.recipes.gem_armor": { + "criteria": { + "has_gem": { + "conditions": { + "items": [ + { + "items": [ + "Gem" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_wood", "has_gem" ] ], + "rewards": { + "recipes": { + "Gem Armor_1": [ + "Gem_65" + ] + } + } + }, + "minicraft.advancements.recipes.gem_axe": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Wood" + "Gem" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gem": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Gem" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gem" + ] + ], "rewards": { "recipes": { - "Gem Sword_1": [ + "Gem Axe_1": [ "Wood_5", "Gem_50" ] } } }, - "minicraft.advancements.recipes.bed": { - "requirements": [ - [ - "has_wood", - "has_wool" - ] - ], + "minicraft.advancements.recipes.gem_bow": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Wood" + "Gem" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_string": { + "conditions": { + "items": [ + { + "items": [ + "String" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wool": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Wool" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gem", + "has_string" + ] + ], "rewards": { "recipes": { - "Bed_1": [ + "Gem Bow_1": [ + "String_2", "Wood_5", - "Wool_3" + "Gem_50" ] } } }, - "minicraft.advancements.recipes.swim_potion": { - "requirements": [ - [ - "has_raw_fish", - "has_awkward_potion" - ] - ], + "minicraft.advancements.recipes.gem_claymore": { "criteria": { - "has_raw_fish": { - "trigger": "inventory_changed", + "has_gem_sword": { "conditions": { "items": [ { "items": [ - "Raw Fish" + "Gem Sword" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_shard": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Shard" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_shard", + "has_gem_sword" + ] + ], "rewards": { "recipes": { - "Swim Potion_1": [ - "Awkward Potion_1", - "Raw Fish_5" + "Gem Claymore_1": [ + "Gem Sword_1", + "Shard_15" ] } } }, - "minicraft.advancements.recipes.steak": { - "requirements": [ - [ - "has_coal", - "has_raw_beef" - ] - ], + "minicraft.advancements.recipes.gem_fishing_rod": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Coal" + "Gem" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_raw_beef": { - "trigger": "inventory_changed", + "has_string": { "conditions": { "items": [ { "items": [ - "Raw Beef" + "String" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_gem", + "has_string" + ] + ], "rewards": { "recipes": { - "Steak_1": [ - "Coal_1", - "Raw Beef_1" + "Gem Fishing Rod_1": [ + "String_3", + "Gem_10" ] } } }, - "minicraft.advancements.recipes.gem_pickaxe": { - "requirements": [ - [ - "has_wood", - "has_gem" - ] - ], + "minicraft.advancements.recipes.gem_hoe": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Wood" + "Gem" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gem": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Gem" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gem" + ] + ], "rewards": { "recipes": { - "Gem Pickaxe_1": [ + "Gem Hoe_1": [ "Wood_5", "Gem_50" ] } } }, - "minicraft.advancements.recipes.obsidian_fence": { - "requirements": [ - [ - "has_obsidian_brick" - ] - ], + "minicraft.advancements.recipes.gem_pickaxe": { "criteria": { - "has_obsidian_brick": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Obsidian Brick" + "Gem" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gem" + ] + ], "rewards": { "recipes": { - "Obsidian Fence_1": [ - "Obsidian Brick_3" + "Gem Pickaxe_1": [ + "Wood_5", + "Gem_50" ] } } }, - "minicraft.advancements.recipes.iron_hoe": { - "requirements": [ - [ - "has_wood", - "has_iron" - ] - ], + "minicraft.advancements.recipes.gem_shovel": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Wood" + "Gem" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Iron" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gem" + ] + ], "rewards": { "recipes": { - "Iron Hoe_1": [ + "Gem Shovel_1": [ "Wood_5", - "Iron_5" + "Gem_50" ] } } }, - "minicraft.advancements.recipes.iron_claymore": { - "requirements": [ - [ - "has_shard", - "has_iron_sword" - ] - ], + "minicraft.advancements.recipes.gem_sword": { "criteria": { - "has_shard": { - "trigger": "inventory_changed", + "has_gem": { "conditions": { "items": [ { "items": [ - "Shard" + "Gem" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron_sword": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Iron Sword" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, - "rewards": { - "recipes": { - "Iron Claymore_1": [ - "Iron Sword_1", - "Shard_15" - ] - } - } - }, - "minicraft.advancements.recipes.wooden_pickaxe": { "requirements": [ [ - "has_wood" + "has_wood", + "has_gem" ] ], - "criteria": { - "has_wood": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Wood" - ] - } - ] - } - } - }, "rewards": { "recipes": { - "Wood Pickaxe_1": [ - "Wood_5" + "Gem Sword_1": [ + "Wood_5", + "Gem_50" ] } } }, - "minicraft.advancements.recipes.stone_axe": { - "requirements": [ - [ - "has_stone", - "has_wood" - ] - ], + "minicraft.advancements.recipes.glass": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_coal": { "conditions": { "items": [ { "items": [ - "Stone" + "Coal" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wood": { - "trigger": "inventory_changed", + "has_sand": { "conditions": { "items": [ { "items": [ - "Wood" + "Sand" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_coal", + "has_sand" + ] + ], "rewards": { "recipes": { - "Rock Axe_1": [ - "Stone_5", - "Wood_5" + "Glass_1": [ + "Coal_1", + "Sand_4" ] } } }, - "minicraft.advancements.recipes.orange_clothes": { - "requirements": [ - [ - "has_rose", - "has_cloth", - "has_flower" - ] - ], + "minicraft.advancements.recipes.glass_bottle": { "criteria": { - "has_rose": { - "trigger": "inventory_changed", + "has_glass": { "conditions": { "items": [ { "items": [ - "Rose" + "Glass" ] } ] - } - }, - "has_cloth": { - "trigger": "inventory_changed", + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_glass" + ] + ], + "rewards": { + "recipes": { + "Glass Bottle_1": [ + "Glass_3" + ] + } + } + }, + "minicraft.advancements.recipes.gold": { + "criteria": { + "has_coal": { "conditions": { "items": [ { "items": [ - "Cloth" + "Coal" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_flower": { - "trigger": "inventory_changed", + "has_gold_ore": { "conditions": { "items": [ { "items": [ - "Flower" + "Gold Ore" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_coal", + "has_gold_ore" + ] + ], "rewards": { "recipes": { - "Orange Clothes_1": [ - "Cloth_5", - "Rose_1", - "Flower_1" + "Gold_1": [ + "Coal_1", + "Gold Ore_3" ] } } }, - "minicraft.advancements.recipes.iron_fishing_rod": { - "requirements": [ - [ - "has_string", - "has_iron" - ] - ], + "minicraft.advancements.recipes.gold_armor": { "criteria": { - "has_string": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "String" - ] - } - ] - } - }, - "has_iron": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Iron" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_gold" + ] + ], "rewards": { "recipes": { - "Iron Fishing Rod_1": [ - "String_3", - "Iron_10" + "Gold Armor_1": [ + "Gold_10" ] } } }, - "minicraft.advancements.recipes.iron_pickaxe": { - "requirements": [ - [ - "has_wood", - "has_iron" - ] - ], + "minicraft.advancements.recipes.gold_axe": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Wood" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Iron" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gold" + ] + ], "rewards": { "recipes": { - "Iron Pickaxe_1": [ - "Wood_5", - "Iron_5" + "Gold Axe_1": [ + "Gold_5", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.arcane_fertilizer": { - "requirements": [ - [ - "has_bone", - "has_lapis" - ] - ], + "minicraft.advancements.recipes.gold_bow": { "criteria": { - "has_bone": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Bone" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_lapis": { - "trigger": "inventory_changed", + "has_string": { "conditions": { "items": [ { "items": [ - "Lapis" + "String" ] } ] - } - } - }, - "rewards": { - "recipes": { - "ARCANE FERTILIZER_3": [ - "Lapis_6", - "Bone_2" - ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" } - } - }, - "minicraft.advancements.recipes.ornate_stone": { + }, "requirements": [ [ - "has_stone" + "has_wood", + "has_string", + "has_gold" ] ], + "rewards": { + "recipes": { + "Gold Bow_1": [ + "Gold_5", + "String_2", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.gold_claymore": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_gold_sword": { "conditions": { "items": [ { "items": [ - "Stone" + "Gold Sword" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_shard": { + "conditions": { + "items": [ + { + "items": [ + "Shard" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_shard", + "has_gold_sword" + ] + ], "rewards": { "recipes": { - "Ornate Stone_1": [ - "Stone_2" + "Gold Claymore_1": [ + "Shard_15", + "Gold Sword_1" ] } } }, - "minicraft.advancements.recipes.wooden_bow": { - "requirements": [ - [ - "has_wood", - "has_string" - ] - ], + "minicraft.advancements.recipes.gold_fishing_rod": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Wood" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, "has_string": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -1961,219 +2080,240 @@ ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_string", + "has_gold" + ] + ], "rewards": { "recipes": { - "Wood Bow_1": [ - "String_2", - "Wood_5" + "Gold Fishing Rod_1": [ + "Gold_10", + "String_3" ] } } }, - "minicraft.advancements.recipes.gold_pickaxe": { - "requirements": [ - [ - "has_wood", - "has_gold" - ] - ], + "minicraft.advancements.recipes.gold_hoe": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Wood" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Gold" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gold" + ] + ], "rewards": { "recipes": { - "Gold Pickaxe_1": [ + "Gold Hoe_1": [ "Gold_5", "Wood_5" ] } } }, - "minicraft.advancements.recipes.gold": { - "requirements": [ - [ - "has_coal", - "has_gold_ore" - ] - ], + "minicraft.advancements.recipes.gold_lantern": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_glass": { "conditions": { "items": [ { "items": [ - "Coal" + "Glass" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold_ore": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Gold Ore" + "Gold" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_slime": { + "conditions": { + "items": [ + { + "items": [ + "Slime" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_glass", + "has_gold", + "has_slime" + ] + ], "rewards": { "recipes": { - "Gold_1": [ - "Coal_1", - "Gold Ore_3" + "Gold Lantern_1": [ + "Glass_4", + "Gold_10", + "Slime_5" ] } } }, - "minicraft.advancements.recipes.cooked_fish": { - "requirements": [ - [ - "has_coal", - "has_raw_fish" - ] - ], + "minicraft.advancements.recipes.gold_pickaxe": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Coal" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_raw_fish": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Raw Fish" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gold" + ] + ], "rewards": { "recipes": { - "Cooked Fish_1": [ - "Coal_1", - "Raw Fish_1" + "Gold Pickaxe_1": [ + "Gold_5", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.light_potion": { - "requirements": [ - [ - "has_slime", - "has_awkward_potion" - ] - ], + "minicraft.advancements.recipes.gold_shovel": { "criteria": { - "has_slime": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Slime" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gold" + ] + ], "rewards": { "recipes": { - "Light Potion_1": [ - "Slime_5", - "Awkward Potion_1" + "Gold Shovel_1": [ + "Gold_5", + "Wood_5" ] } } }, "minicraft.advancements.recipes.gold_sword": { - "requirements": [ - [ - "has_wood", - "has_gold" - ] - ], "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Wood" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Gold" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_gold" + ] + ], "rewards": { "recipes": { "Gold Sword_1": [ @@ -2183,28 +2323,21 @@ } } }, - "minicraft.advancements.recipes.gold_shovel": { - "requirements": [ - [ - "has_wood", - "has_gold" - ] - ], + "minicraft.advancements.recipes.golden_apple": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_apple": { "conditions": { "items": [ { "items": [ - "Wood" + "Apple" ] } ] - } + }, + "trigger": "inventory_changed" }, "has_gold": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -2213,40 +2346,40 @@ ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_apple", + "has_gold" + ] + ], "rewards": { "recipes": { - "Gold Shovel_1": [ - "Gold_5", - "Wood_5" + "Gold Apple_1": [ + "Gold_8", + "Apple_1" ] } } }, - "minicraft.advancements.recipes.stone_shovel": { - "requirements": [ - [ - "has_stone", - "has_wood" - ] - ], + "minicraft.advancements.recipes.gray_bed": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_gray_wool": { "conditions": { "items": [ { "items": [ - "Stone" + "Gray Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, "has_wood": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -2255,531 +2388,504 @@ ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_gray_wool", + "has_wood" + ] + ], "rewards": { "recipes": { - "Rock Shovel_1": [ - "Stone_5", + "Gray Bed_1": [ + "Gray Wool_3", "Wood_5" ] } } }, - "minicraft.advancements.recipes.escape_potion": { - "requirements": [ - [ - "has_lapis", - "has_gunpowder", - "has_awkward_potion" - ] - ], + "minicraft.advancements.recipes.gray_bed_from_white_bed": { "criteria": { - "has_lapis": { - "trigger": "inventory_changed", + "has_gray_dye": { "conditions": { "items": [ { "items": [ - "Lapis" - ] - } - ] - } - }, - "has_gunpowder": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Gunpowder" + "Gray Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_white_bed": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_gray_dye", + "has_white_bed" + ] + ], "rewards": { "recipes": { - "Escape Potion_1": [ - "Lapis_7", - "Awkward Potion_1", - "Gunpowder_3" + "Gray Bed_1": [ + "Gray Dye_1", + "White Bed_1" ] } } }, - "minicraft.advancements.recipes.obsidian_wall": { - "requirements": [ - [ - "has_obsidian_brick" - ] - ], + "minicraft.advancements.recipes.gray_dye": { "criteria": { - "has_obsidian_brick": { - "trigger": "inventory_changed", + "has_black_dye": { "conditions": { "items": [ { "items": [ - "Obsidian Brick" + "Black Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_dye": { + "conditions": { + "items": [ + { + "items": [ + "White Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_dye", + "has_black_dye" + ] + ], "rewards": { "recipes": { - "Obsidian Wall_1": [ - "Obsidian Brick_3" + "Gray Dye_2": [ + "White Dye_1", + "Black Dye_1" ] } } }, - "minicraft.advancements.recipes.cyan_clothes": { - "requirements": [ - [ - "has_cactus", - "has_lapis", - "has_cloth" - ] - ], + "minicraft.advancements.recipes.gray_wool": { "criteria": { - "has_cactus": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Cactus" - ] - } - ] - } - }, - "has_lapis": { - "trigger": "inventory_changed", + "has_gray_dye": { "conditions": { "items": [ { "items": [ - "Lapis" + "Gray Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_cloth": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Cloth" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_wool", + "has_gray_dye" + ] + ], "rewards": { "recipes": { - "Cyan Clothes_1": [ - "Lapis_1", - "Cloth_5", - "Cactus_1" + "Gray Wool_1": [ + "Gray Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.gem_armor": { - "requirements": [ - [ - "has_gem" - ] - ], + "minicraft.advancements.recipes.green_bed": { "criteria": { - "has_gem": { - "trigger": "inventory_changed", + "has_green_wool": { "conditions": { "items": [ { "items": [ - "Gem" + "Green Wool" ] } ] - } + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_green_wool", + "has_wood" + ] + ], "rewards": { "recipes": { - "Gem Armor_1": [ - "Gem_65" + "Green Bed_1": [ + "Green Wool_3", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.golden_apple": { - "requirements": [ - [ - "has_apple", - "has_gold" - ] - ], + "minicraft.advancements.recipes.green_bed_from_white_bed": { "criteria": { - "has_apple": { - "trigger": "inventory_changed", + "has_green_dye": { "conditions": { "items": [ { "items": [ - "Apple" + "Green Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_white_bed": { "conditions": { "items": [ { "items": [ - "Gold" + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_green_dye", + "has_white_bed" + ] + ], "rewards": { "recipes": { - "Gold Apple_1": [ - "Gold_8", - "Apple_1" + "Green Bed_1": [ + "Green Dye_1", + "White Bed_1" ] } } }, - "minicraft.advancements.recipes.arrow": { - "requirements": [ - [ - "has_stone", - "has_wood" - ] - ], + "minicraft.advancements.recipes.green_clothes": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_cloth": { "conditions": { "items": [ { "items": [ - "Stone" + "Cloth" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wood": { - "trigger": "inventory_changed", + "has_green_dye": { "conditions": { "items": [ { "items": [ - "Wood" + "Green Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_green_dye", + "has_cloth" + ] + ], "rewards": { "recipes": { - "Arrow_3": [ - "Stone_2", - "Wood_2" + "Green Clothes_1": [ + "Cloth_5", + "Green Dye_1" ] } } }, - "minicraft.advancements.recipes.stone_wall": { - "requirements": [ - [ - "has_stone_brick" - ] - ], + "minicraft.advancements.recipes.green_dye": { "criteria": { - "has_stone_brick": { - "trigger": "inventory_changed", + "has_cactus": { "conditions": { "items": [ { "items": [ - "Stone Brick" + "Cactus" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_cactus" + ] + ], "rewards": { "recipes": { - "Stone Wall_1": [ - "Stone Brick_3" + "Green Dye_1": [ + "Cactus_1" ] } } }, - "minicraft.advancements.recipes.glass": { - "requirements": [ - [ - "has_coal", - "has_sand" - ] - ], + "minicraft.advancements.recipes.green_wool": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_green_dye": { "conditions": { "items": [ { "items": [ - "Coal" + "Green Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_sand": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Sand" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_green_dye", + "has_white_wool" + ] + ], "rewards": { "recipes": { - "Glass_1": [ - "Coal_1", - "Sand_4" + "Green Wool_1": [ + "Green Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.speed_potion": { - "requirements": [ - [ - "has_cactus", - "has_awkward_potion" - ] - ], + "minicraft.advancements.recipes.haste_potion": { "criteria": { - "has_cactus": { - "trigger": "inventory_changed", + "has_awkward_potion": { "conditions": { "items": [ { "items": [ - "Cactus" + "Awkward Potion" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_stone": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_stone", + "has_wood", + "has_awkward_potion" + ] + ], "rewards": { "recipes": { - "Speed Potion_1": [ - "Cactus_5", - "Awkward Potion_1" + "Haste Potion_1": [ + "Awkward Potion_1", + "Stone_5", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.gold_bow": { - "requirements": [ - [ - "has_wood", - "has_string", - "has_gold" - ] - ], + "minicraft.advancements.recipes.health_potion": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_awkward_potion": { "conditions": { "items": [ { "items": [ - "Wood" + "Awkward Potion" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_string": { - "trigger": "inventory_changed", + "has_gunpowder": { "conditions": { "items": [ { "items": [ - "String" + "Gunpowder" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_leather_armor": { "conditions": { "items": [ { "items": [ - "Gold" + "Leather Armor" ] } ] - } + }, + "trigger": "inventory_changed" } }, - "rewards": { - "recipes": { - "Gold Bow_1": [ - "Gold_5", - "String_2", - "Wood_5" - ] - } - } - }, - "minicraft.advancements.recipes.gold_lantern": { "requirements": [ [ - "has_glass", - "has_gold", - "has_slime" + "has_leather_armor", + "has_gunpowder", + "has_awkward_potion" ] ], + "rewards": { + "recipes": { + "Health Potion_1": [ + "Awkward Potion_1", + "Gunpowder_2", + "Leather Armor_1" + ] + } + } + }, + "minicraft.advancements.recipes.iron": { "criteria": { - "has_glass": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Glass" - ] - } - ] - } - }, - "has_gold": { - "trigger": "inventory_changed", + "has_coal": { "conditions": { "items": [ { "items": [ - "Gold" + "Coal" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_slime": { - "trigger": "inventory_changed", + "has_iron_ore": { "conditions": { "items": [ { "items": [ - "Slime" + "Iron Ore" ] } ] - } + }, + "trigger": "inventory_changed" } }, - "rewards": { - "recipes": { - "Gold Lantern_1": [ - "Glass_4", - "Gold_10", - "Slime_5" - ] - } - } - }, - "minicraft.advancements.recipes.plank_wall": { "requirements": [ [ - "has_plank" + "has_coal", + "has_iron_ore" ] ], - "criteria": { - "has_plank": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Plank" - ] - } - ] - } - } - }, "rewards": { "recipes": { - "Plank Wall_1": [ - "Plank_3" + "Iron_1": [ + "Coal_1", + "Iron Ore_3" ] } } }, "minicraft.advancements.recipes.iron_armor": { - "requirements": [ - [ - "has_iron" - ] - ], "criteria": { "has_iron": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -2788,9 +2894,15 @@ ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_iron" + ] + ], "rewards": { "recipes": { "Iron Armor_1": [ @@ -2799,1010 +2911,3633 @@ } } }, - "minicraft.advancements.recipes.iron_shovel": { - "requirements": [ - [ - "has_wood", - "has_iron" - ] - ], + "minicraft.advancements.recipes.iron_axe": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Wood" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Iron" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_iron" + ] + ], "rewards": { "recipes": { - "Iron Shovel_1": [ + "Iron Axe_1": [ "Wood_5", "Iron_5" ] } } }, - "minicraft.advancements.recipes.yellow_wool": { - "requirements": [ - [ - "has_wool", - "has_flower" - ] - ], + "minicraft.advancements.recipes.iron_bow": { "criteria": { - "has_wool": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Wool" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_flower": { - "trigger": "inventory_changed", + "has_string": { "conditions": { "items": [ { "items": [ - "Flower" + "String" ] } ] - } - } - }, - "rewards": { - "recipes": { - "Yellow Wool_1": [ - "Flower_1", - "Wool_1" - ] - } - } - }, - "minicraft.advancements.recipes.obsidian_door": { - "requirements": [ - [ - "has_obsidian_brick" - ] - ], - "criteria": { - "has_obsidian_brick": { - "trigger": "inventory_changed", + }, + "trigger": "inventory_changed" + }, + "has_wood": { "conditions": { "items": [ { "items": [ - "Obsidian Brick" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_string", + "has_iron" + ] + ], "rewards": { "recipes": { - "Obsidian Door_1": [ - "Obsidian Brick_5" + "Iron Bow_1": [ + "String_2", + "Iron_5", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.stone_hoe": { - "requirements": [ - [ - "has_stone", - "has_wood" - ] - ], + "minicraft.advancements.recipes.iron_claymore": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_iron_sword": { "conditions": { "items": [ { "items": [ - "Stone" + "Iron Sword" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wood": { - "trigger": "inventory_changed", + "has_shard": { "conditions": { "items": [ { "items": [ - "Wood" + "Shard" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_shard", + "has_iron_sword" + ] + ], "rewards": { "recipes": { - "Rock Hoe_1": [ - "Stone_5", - "Wood_5" + "Iron Claymore_1": [ + "Iron Sword_1", + "Shard_15" ] } } }, - "minicraft.advancements.recipes.chest": { - "requirements": [ - [ - "has_wood" - ] - ], + "minicraft.advancements.recipes.iron_fishing_rod": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Wood" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" + }, + "has_string": { + "conditions": { + "items": [ + { + "items": [ + "String" + ] + } + ] + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_string", + "has_iron" + ] + ], "rewards": { "recipes": { - "Chest_1": [ - "Wood_20" + "Iron Fishing Rod_1": [ + "String_3", + "Iron_10" ] } } }, - "minicraft.advancements.recipes.gem_hoe": { - "requirements": [ - [ - "has_wood", - "has_gem" - ] - ], + "minicraft.advancements.recipes.iron_hoe": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Wood" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gem": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Gem" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_iron" + ] + ], "rewards": { "recipes": { - "Gem Hoe_1": [ + "Iron Hoe_1": [ "Wood_5", - "Gem_50" + "Iron_5" ] } } }, - "minicraft.advancements.recipes.awkward_potion": { - "requirements": [ - [ - "has_lapis", - "has_glass_bottle" - ] - ], + "minicraft.advancements.recipes.iron_lantern": { "criteria": { - "has_lapis": { - "trigger": "inventory_changed", + "has_glass": { "conditions": { "items": [ { "items": [ - "Lapis" + "Glass" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_glass_bottle": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Glass Bottle" + "Iron" ] } ] - } - } + }, + "trigger": "inventory_changed" + }, + "has_slime": { + "conditions": { + "items": [ + { + "items": [ + "Slime" + ] + } + ] + }, + "trigger": "inventory_changed" + } }, + "requirements": [ + [ + "has_glass", + "has_slime", + "has_iron" + ] + ], "rewards": { "recipes": { - "Awkward Potion_1": [ - "Lapis_3", - "Glass Bottle_1" + "Iron Lantern_1": [ + "Glass_4", + "Iron_8", + "Slime_5" ] } } }, - "minicraft.advancements.recipes.reg_clothes": { - "requirements": [ - [ - "has_cloth" - ] - ], + "minicraft.advancements.recipes.iron_pickaxe": { "criteria": { - "has_cloth": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Cloth" + "Iron" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_iron" + ] + ], "rewards": { "recipes": { - "Reg Clothes_1": [ - "Cloth_5" + "Iron Pickaxe_1": [ + "Wood_5", + "Iron_5" ] } } }, - "minicraft.advancements.recipes.totem_of_air": { - "requirements": [ - [ - "has_gem", - "has_cloud_ore", - "has_lapis", - "has_gold" - ] - ], + "minicraft.advancements.recipes.iron_shovel": { "criteria": { - "has_gem": { - "trigger": "inventory_changed", + "has_iron": { "conditions": { "items": [ { "items": [ - "Gem" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_cloud_ore": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Cloud Ore" + "Wood" ] } ] - } - }, - "has_lapis": { - "trigger": "inventory_changed", + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood", + "has_iron" + ] + ], + "rewards": { + "recipes": { + "Iron Shovel_1": [ + "Wood_5", + "Iron_5" + ] + } + } + }, + "minicraft.advancements.recipes.iron_sword": { + "criteria": { + "has_iron": { "conditions": { "items": [ { "items": [ - "Lapis" + "Iron" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Gold" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, - "rewards": { - "recipes": { - "Totem of Air_1": [ - "Lapis_5", - "Gold_10", - "Gem_10", - "Cloud Ore_5" - ] - } - } - }, - "minicraft.advancements.recipes.iron_bow": { "requirements": [ [ "has_wood", - "has_string", "has_iron" ] ], + "rewards": { + "recipes": { + "Iron Sword_1": [ + "Wood_5", + "Iron_5" + ] + } + } + }, + "minicraft.advancements.recipes.lantern": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_glass": { "conditions": { "items": [ { "items": [ - "Wood" + "Glass" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_string": { - "trigger": "inventory_changed", + "has_slime": { "conditions": { "items": [ { "items": [ - "String" + "Slime" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Iron" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_glass", + "has_wood", + "has_slime" + ] + ], "rewards": { "recipes": { - "Iron Bow_1": [ - "String_2", - "Iron_5", - "Wood_5" + "Lantern_1": [ + "Glass_3", + "Slime_4", + "Wood_8" ] } } }, - "minicraft.advancements.recipes.wooden_shovel": { - "requirements": [ - [ - "has_wood" - ] - ], + "minicraft.advancements.recipes.lava_potion": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_awkward_potion": { "conditions": { "items": [ { "items": [ - "Wood" + "Awkward Potion" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_lava_bucket": { + "conditions": { + "items": [ + { + "items": [ + "Lava Bucket" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_awkward_potion", + "has_lava_bucket" + ] + ], "rewards": { "recipes": { - "Wood Shovel_1": [ - "Wood_5" + "Lava Potion_1": [ + "Awkward Potion_1", + "Lava Bucket_1" ] } } }, - "minicraft.advancements.recipes.string": { - "requirements": [ - [ - "has_wool" - ] - ], + "minicraft.advancements.recipes.leather_armor": { "criteria": { - "has_wool": { - "trigger": "inventory_changed", + "has_leather": { "conditions": { "items": [ { "items": [ - "Wool" + "Leather" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_leather" + ] + ], "rewards": { "recipes": { - "String_2": [ - "Wool_1" + "Leather Armor_1": [ + "Leather_10" ] } } }, - "minicraft.advancements.recipes.loom": { - "requirements": [ - [ - "has_wood", - "has_wool" - ] - ], + "minicraft.advancements.recipes.light_blue_bed": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_light_blue_wool": { "conditions": { "items": [ { "items": [ - "Wood" + "Light Blue Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wool": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Wool" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_light_blue_wool" + ] + ], "rewards": { "recipes": { - "Loom_1": [ - "Wood_10", - "Wool_5" + "Light Blue Bed_1": [ + "Light Blue Wool_3", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.bread": { - "requirements": [ - [ - "has_wheat" - ] - ], + "minicraft.advancements.recipes.light_blue_bed_from_white_bed": { "criteria": { - "has_wheat": { - "trigger": "inventory_changed", + "has_light_blue_dye": { "conditions": { "items": [ { "items": [ - "Wheat" + "Light Blue Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_light_blue_dye", + "has_white_bed" + ] + ], "rewards": { "recipes": { - "Bread_1": [ - "Wheat_4" + "Light Blue Bed_1": [ + "Light Blue Dye_1", + "White Bed_1" ] } } }, - "minicraft.advancements.recipes.anvil": { - "requirements": [ - [ - "has_iron" - ] - ], + "minicraft.advancements.recipes.light_blue_dye": { "criteria": { - "has_iron": { - "trigger": "inventory_changed", + "has_blue_dye": { "conditions": { "items": [ { "items": [ - "Iron" + "Blue Dye" ] } ] - } - } - }, - "rewards": { - "recipes": { - "Anvil_1": [ - "Iron_5" - ] + }, + "trigger": "inventory_changed" + }, + "has_white_dye": { + "conditions": { + "items": [ + { + "items": [ + "White Dye" + ] + } + ] + }, + "trigger": "inventory_changed" } - } - }, - "minicraft.advancements.recipes.torch": { + }, "requirements": [ [ - "has_coal", - "has_wood" + "has_white_dye", + "has_blue_dye" ] ], + "rewards": { + "recipes": { + "Light Blue Dye_2": [ + "Blue Dye_1", + "White Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.light_blue_dye_from_blue_orchid": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_blue_orchid": { "conditions": { "items": [ { "items": [ - "Coal" + "Blue Orchid" ] } ] - } - }, - "has_wood": { - "trigger": "inventory_changed", + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_blue_orchid" + ] + ], + "rewards": { + "recipes": { + "Light Blue Dye_1": [ + "Blue Orchid_1" + ] + } + } + }, + "minicraft.advancements.recipes.light_blue_dye_from_periwinkle": { + "criteria": { + "has_periwinkle": { "conditions": { "items": [ { "items": [ - "Wood" + "Periwinkle" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_periwinkle" + ] + ], "rewards": { "recipes": { - "Torch_2": [ - "Coal_1", - "Wood_1" + "Light Blue Dye_1": [ + "Periwinkle_1" ] } } }, - "minicraft.advancements.recipes.gold_axe": { - "requirements": [ - [ - "has_wood", - "has_gold" - ] - ], + "minicraft.advancements.recipes.light_blue_wool": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_light_blue_dye": { "conditions": { "items": [ { "items": [ - "Wood" + "Light Blue Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Gold" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_light_blue_dye", + "has_white_wool" + ] + ], "rewards": { "recipes": { - "Gold Axe_1": [ - "Gold_5", - "Wood_5" + "Light Blue Wool_1": [ + "Light Blue Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.iron_lantern": { - "requirements": [ - [ - "has_glass", - "has_slime", - "has_iron" - ] - ], + "minicraft.advancements.recipes.light_gray_bed": { "criteria": { - "has_glass": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Glass" - ] - } - ] - } - }, - "has_slime": { - "trigger": "inventory_changed", + "has_light_gray_wool": { "conditions": { "items": [ { "items": [ - "Slime" + "Light Gray Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Iron" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_light_gray_wool", + "has_wood" + ] + ], "rewards": { "recipes": { - "Iron Lantern_1": [ - "Glass_4", - "Iron_8", - "Slime_5" + "Light Gray Bed_1": [ + "Wood_5", + "Light Gray Wool_3" ] } } }, - "minicraft.advancements.recipes.enchanter": { - "requirements": [ - [ - "has_wood", - "has_string", - "has_lapis" - ] - ], + "minicraft.advancements.recipes.light_gray_bed_from_white_bed": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_light_gray_dye": { "conditions": { "items": [ { "items": [ - "Wood" + "Light Gray Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_string": { - "trigger": "inventory_changed", + "has_white_bed": { "conditions": { "items": [ { "items": [ - "String" + "White Bed" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_bed", + "has_light_gray_dye" + ] + ], + "rewards": { + "recipes": { + "Light Gray Bed_1": [ + "White Bed_1", + "Light Gray Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.light_gray_dye": { + "criteria": { + "has_black_dye": { + "conditions": { + "items": [ + { + "items": [ + "Black Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_lapis": { - "trigger": "inventory_changed", + "has_white_dye": { "conditions": { "items": [ { "items": [ - "Lapis" + "White Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_dye", + "has_black_dye" + ] + ], "rewards": { "recipes": { - "Enchanter_1": [ - "Lapis_10", - "String_2", - "Wood_5" + "Light Gray Dye_3": [ + "White Dye_2", + "Black Dye_1" ] } } }, - "minicraft.advancements.recipes.gold_claymore": { - "requirements": [ - [ - "has_shard", - "has_gold_sword" - ] - ], + "minicraft.advancements.recipes.light_gray_dye_from_gray_white_dye": { "criteria": { - "has_shard": { - "trigger": "inventory_changed", + "has_gray_dye": { "conditions": { "items": [ { "items": [ - "Shard" + "Gray Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold_sword": { - "trigger": "inventory_changed", + "has_white_dye": { "conditions": { "items": [ { "items": [ - "Gold Sword" + "White Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_gray_dye", + "has_white_dye" + ] + ], "rewards": { "recipes": { - "Gold Claymore_1": [ - "Shard_15", - "Gold Sword_1" + "Light Gray Dye_2": [ + "Gray Dye_1", + "White Dye_1" ] } } }, - "minicraft.advancements.recipes.baked_potato": { - "requirements": [ - [ - "has_potato" - ] - ], + "minicraft.advancements.recipes.light_gray_dye_from_hydrangea": { "criteria": { - "has_potato": { - "trigger": "inventory_changed", + "has_hydrangea": { "conditions": { "items": [ { "items": [ - "Potato" + "Hydrangea" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_hydrangea" + ] + ], "rewards": { "recipes": { - "Baked Potato_1": [ - "Potato_1" + "Light Gray Dye_1": [ + "Hydrangea_1" ] } } }, - "minicraft.advancements.recipes.empty_bucket": { - "requirements": [ - [ - "has_iron" - ] - ], + "minicraft.advancements.recipes.light_gray_dye_from_oxeye_daisy": { "criteria": { - "has_iron": { - "trigger": "inventory_changed", + "has_oxeye_daisy": { "conditions": { "items": [ { "items": [ - "Iron" + "Oxeye Daisy" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_oxeye_daisy" + ] + ], "rewards": { "recipes": { - "Empty Bucket_1": [ - "Iron_5" + "Light Gray Dye_1": [ + "Oxeye Daisy_1" ] } } }, - "minicraft.advancements.recipes.gold_hoe": { + "minicraft.advancements.recipes.light_gray_dye_from_white_tulip": { + "criteria": { + "has_white_tulip": { + "conditions": { + "items": [ + { + "items": [ + "White Tulip" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_wood", - "has_gold" + "has_white_tulip" ] ], + "rewards": { + "recipes": { + "Light Gray Dye_1": [ + "White Tulip_1" + ] + } + } + }, + "minicraft.advancements.recipes.light_gray_wool": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_light_gray_dye": { "conditions": { "items": [ { "items": [ - "Wood" + "Light Gray Dye" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Gold" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_wool", + "has_light_gray_dye" + ] + ], "rewards": { "recipes": { - "Gold Hoe_1": [ - "Gold_5", - "Wood_5" + "Light Gray Wool_1": [ + "Light Gray Dye_1", + "White Wool_1" ] } } }, - "minicraft.advancements.recipes.iron": { - "requirements": [ - [ - "has_coal", - "has_iron_ore" - ] - ], + "minicraft.advancements.recipes.light_potion": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", + "has_awkward_potion": { "conditions": { "items": [ { "items": [ - "Coal" + "Awkward Potion" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron_ore": { - "trigger": "inventory_changed", + "has_slime": { "conditions": { "items": [ { "items": [ - "Iron Ore" + "Slime" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_slime", + "has_awkward_potion" + ] + ], "rewards": { "recipes": { - "Iron_1": [ - "Coal_1", - "Iron Ore_3" + "Light Potion_1": [ + "Slime_5", + "Awkward Potion_1" ] } } }, - "minicraft.advancements.recipes.stone_door": { - "requirements": [ - [ - "has_stone_brick" - ] - ], + "minicraft.advancements.recipes.lime_bed": { "criteria": { - "has_stone_brick": { - "trigger": "inventory_changed", + "has_lime_wool": { "conditions": { "items": [ { "items": [ - "Stone Brick" + "Lime Wool" ] } ] - } - } - }, - "rewards": { - "recipes": { - "Stone Door_1": [ + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood", + "has_lime_wool" + ] + ], + "rewards": { + "recipes": { + "Lime Bed_1": [ + "Lime Wool_3", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.lime_bed_from_white_bed": { + "criteria": { + "has_lime_dye": { + "conditions": { + "items": [ + { + "items": [ + "Lime Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_lime_dye", + "has_white_bed" + ] + ], + "rewards": { + "recipes": { + "Lime Bed_1": [ + "Lime Dye_1", + "White Bed_1" + ] + } + } + }, + "minicraft.advancements.recipes.lime_dye": { + "criteria": { + "has_green_dye": { + "conditions": { + "items": [ + { + "items": [ + "Green Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_dye": { + "conditions": { + "items": [ + { + "items": [ + "White Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_green_dye", + "has_white_dye" + ] + ], + "rewards": { + "recipes": { + "Lime Dye_2": [ + "Green Dye_1", + "White Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.lime_wool": { + "criteria": { + "has_lime_dye": { + "conditions": { + "items": [ + { + "items": [ + "Lime Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_lime_dye", + "has_white_wool" + ] + ], + "rewards": { + "recipes": { + "Lime Wool_1": [ + "Lime Dye_1", + "White Wool_1" + ] + } + } + }, + "minicraft.advancements.recipes.loom": { + "criteria": { + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood", + "has_white_wool" + ] + ], + "rewards": { + "recipes": { + "Loom_1": [ + "Wood_10", + "White Wool_5" + ] + } + } + }, + "minicraft.advancements.recipes.magenta_bed": { + "criteria": { + "has_magenta_wool": { + "conditions": { + "items": [ + { + "items": [ + "Magenta Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood", + "has_magenta_wool" + ] + ], + "rewards": { + "recipes": { + "Magenta Bed_1": [ + "Wood_5", + "Magenta Wool_3" + ] + } + } + }, + "minicraft.advancements.recipes.magenta_bed_from_white_bed": { + "criteria": { + "has_magenta_dye": { + "conditions": { + "items": [ + { + "items": [ + "Magenta Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_bed", + "has_magenta_dye" + ] + ], + "rewards": { + "recipes": { + "Magenta Bed_1": [ + "Magenta Dye_1", + "White Bed_1" + ] + } + } + }, + "minicraft.advancements.recipes.magenta_dye_from_allium": { + "criteria": { + "has_allium": { + "conditions": { + "items": [ + { + "items": [ + "Allium" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_allium" + ] + ], + "rewards": { + "recipes": { + "Magenta Dye_1": [ + "Allium_1" + ] + } + } + }, + "minicraft.advancements.recipes.magenta_dye_from_blue_red_pink": { + "criteria": { + "has_blue_dye": { + "conditions": { + "items": [ + { + "items": [ + "Blue Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_pink_dye": { + "conditions": { + "items": [ + { + "items": [ + "Pink Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_red_dye": { + "conditions": { + "items": [ + { + "items": [ + "Red Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_pink_dye", + "has_red_dye", + "has_blue_dye" + ] + ], + "rewards": { + "recipes": { + "Magenta Dye_4": [ + "Pink Dye_1", + "Red Dye_1", + "Blue Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.magenta_dye_from_blue_red_white_dye": { + "criteria": { + "has_blue_dye": { + "conditions": { + "items": [ + { + "items": [ + "Blue Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_red_dye": { + "conditions": { + "items": [ + { + "items": [ + "Red Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_dye": { + "conditions": { + "items": [ + { + "items": [ + "White Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_dye", + "has_red_dye", + "has_blue_dye" + ] + ], + "rewards": { + "recipes": { + "Magenta Dye_4": [ + "White Dye_1", + "Red Dye_2", + "Blue Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.magenta_dye_from_purple_and_pink": { + "criteria": { + "has_pink_dye": { + "conditions": { + "items": [ + { + "items": [ + "Pink Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_purple_dye": { + "conditions": { + "items": [ + { + "items": [ + "Purple Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_pink_dye", + "has_purple_dye" + ] + ], + "rewards": { + "recipes": { + "Magenta Dye_2": [ + "Pink Dye_1", + "Purple Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.magenta_wool": { + "criteria": { + "has_magenta_dye": { + "conditions": { + "items": [ + { + "items": [ + "Magenta Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_wool", + "has_magenta_dye" + ] + ], + "rewards": { + "recipes": { + "Magenta Wool_1": [ + "Magenta Dye_1", + "White Wool_1" + ] + } + } + }, + "minicraft.advancements.recipes.obsidian_brick": { + "criteria": { + "has_raw_obsidian": { + "conditions": { + "items": [ + { + "items": [ + "Raw Obsidian" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_raw_obsidian" + ] + ], + "rewards": { + "recipes": { + "Obsidian Brick_1": [ + "Raw Obsidian_2" + ] + } + } + }, + "minicraft.advancements.recipes.obsidian_door": { + "criteria": { + "has_obsidian_brick": { + "conditions": { + "items": [ + { + "items": [ + "Obsidian Brick" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_obsidian_brick" + ] + ], + "rewards": { + "recipes": { + "Obsidian Door_1": [ + "Obsidian Brick_5" + ] + } + } + }, + "minicraft.advancements.recipes.obsidian_fence": { + "criteria": { + "has_obsidian_brick": { + "conditions": { + "items": [ + { + "items": [ + "Obsidian Brick" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_obsidian_brick" + ] + ], + "rewards": { + "recipes": { + "Obsidian Fence_1": [ + "Obsidian Brick_3" + ] + } + } + }, + "minicraft.advancements.recipes.obsidian_poppet": { + "criteria": { + "has_gem": { + "conditions": { + "items": [ + { + "items": [ + "Gem" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_gold": { + "conditions": { + "items": [ + { + "items": [ + "Gold" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_lapis": { + "conditions": { + "items": [ + { + "items": [ + "Lapis" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_shard": { + "conditions": { + "items": [ + { + "items": [ + "Shard" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_shard", + "has_gem", + "has_lapis", + "has_gold" + ] + ], + "rewards": { + "recipes": { + "Obsidian Poppet_1": [ + "Lapis_5", + "Gold_10", + "Shard_15", + "Gem_10" + ] + } + } + }, + "minicraft.advancements.recipes.obsidian_wall": { + "criteria": { + "has_obsidian_brick": { + "conditions": { + "items": [ + { + "items": [ + "Obsidian Brick" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_obsidian_brick" + ] + ], + "rewards": { + "recipes": { + "Obsidian Wall_1": [ + "Obsidian Brick_3" + ] + } + } + }, + "minicraft.advancements.recipes.orange_bed": { + "criteria": { + "has_orange_wool": { + "conditions": { + "items": [ + { + "items": [ + "Orange Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood", + "has_orange_wool" + ] + ], + "rewards": { + "recipes": { + "Orange Bed_1": [ + "Wood_5", + "Orange Wool_3" + ] + } + } + }, + "minicraft.advancements.recipes.orange_bed_from_white_bed": { + "criteria": { + "has_orange_dye": { + "conditions": { + "items": [ + { + "items": [ + "Orange Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_bed", + "has_orange_dye" + ] + ], + "rewards": { + "recipes": { + "Orange Bed_1": [ + "Orange Dye_1", + "White Bed_1" + ] + } + } + }, + "minicraft.advancements.recipes.orange_clothes": { + "criteria": { + "has_cloth": { + "conditions": { + "items": [ + { + "items": [ + "Cloth" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_orange_dye": { + "conditions": { + "items": [ + { + "items": [ + "Orange Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_cloth", + "has_orange_dye" + ] + ], + "rewards": { + "recipes": { + "Orange Clothes_1": [ + "Cloth_5", + "Orange Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.orange_dye": { + "criteria": { + "has_red_dye": { + "conditions": { + "items": [ + { + "items": [ + "Red Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_yellow_dye": { + "conditions": { + "items": [ + { + "items": [ + "Yellow Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_red_dye", + "has_yellow_dye" + ] + ], + "rewards": { + "recipes": { + "Orange Dye_2": [ + "Yellow Dye_1", + "Red Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.orange_dye_from_orange_tulip": { + "criteria": { + "has_orange_tulip": { + "conditions": { + "items": [ + { + "items": [ + "Orange Tulip" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_orange_tulip" + ] + ], + "rewards": { + "recipes": { + "Orange Dye_1": [ + "Orange Tulip_1" + ] + } + } + }, + "minicraft.advancements.recipes.orange_wool": { + "criteria": { + "has_orange_dye": { + "conditions": { + "items": [ + { + "items": [ + "Orange Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_wool", + "has_orange_dye" + ] + ], + "rewards": { + "recipes": { + "Orange Wool_1": [ + "Orange Dye_1", + "White Wool_1" + ] + } + } + }, + "minicraft.advancements.recipes.ornate_obsidian": { + "criteria": { + "has_raw_obsidian": { + "conditions": { + "items": [ + { + "items": [ + "Raw Obsidian" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_raw_obsidian" + ] + ], + "rewards": { + "recipes": { + "Ornate Obsidian_1": [ + "Raw Obsidian_2" + ] + } + } + }, + "minicraft.advancements.recipes.ornate_stone": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone" + ] + ], + "rewards": { + "recipes": { + "Ornate Stone_1": [ + "Stone_2" + ] + } + } + }, + "minicraft.advancements.recipes.oven": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone" + ] + ], + "rewards": { + "recipes": { + "Oven_1": [ + "Stone_15" + ] + } + } + }, + "minicraft.advancements.recipes.pink_bed": { + "criteria": { + "has_pink_wool": { + "conditions": { + "items": [ + { + "items": [ + "Pink Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_pink_wool", + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Pink Bed_1": [ + "Wood_5", + "Pink Wool_3" + ] + } + } + }, + "minicraft.advancements.recipes.pink_bed_from_white_bed": { + "criteria": { + "has_pink_dye": { + "conditions": { + "items": [ + { + "items": [ + "Pink Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_pink_dye", + "has_white_bed" + ] + ], + "rewards": { + "recipes": { + "Pink Bed_1": [ + "Pink Dye_1", + "White Bed_1" + ] + } + } + }, + "minicraft.advancements.recipes.pink_dye": { + "criteria": { + "has_red_dye": { + "conditions": { + "items": [ + { + "items": [ + "Red Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_dye": { + "conditions": { + "items": [ + { + "items": [ + "White Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_dye", + "has_red_dye" + ] + ], + "rewards": { + "recipes": { + "Pink Dye_2": [ + "White Dye_1", + "Red Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.pink_dye_from_peony": { + "criteria": { + "has_peony": { + "conditions": { + "items": [ + { + "items": [ + "Peony" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_peony" + ] + ], + "rewards": { + "recipes": { + "Pink Dye_1": [ + "Peony_1" + ] + } + } + }, + "minicraft.advancements.recipes.pink_dye_from_pink_lily": { + "criteria": { + "has_pink_lily": { + "conditions": { + "items": [ + { + "items": [ + "Pink Lily" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_pink_lily" + ] + ], + "rewards": { + "recipes": { + "Pink Dye_1": [ + "Pink Lily_1" + ] + } + } + }, + "minicraft.advancements.recipes.pink_dye_from_pink_tulip": { + "criteria": { + "has_pink_tulip": { + "conditions": { + "items": [ + { + "items": [ + "Pink Tulip" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_pink_tulip" + ] + ], + "rewards": { + "recipes": { + "Pink Dye_1": [ + "Pink Tulip_1" + ] + } + } + }, + "minicraft.advancements.recipes.pink_wool": { + "criteria": { + "has_pink_dye": { + "conditions": { + "items": [ + { + "items": [ + "Pink Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_pink_dye", + "has_white_wool" + ] + ], + "rewards": { + "recipes": { + "Pink Wool_1": [ + "Pink Dye_1", + "White Wool_1" + ] + } + } + }, + "minicraft.advancements.recipes.plank": { + "criteria": { + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Plank_2": [ + "Wood_1" + ] + } + } + }, + "minicraft.advancements.recipes.plank_wall": { + "criteria": { + "has_plank": { + "conditions": { + "items": [ + { + "items": [ + "Plank" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_plank" + ] + ], + "rewards": { + "recipes": { + "Plank Wall_1": [ + "Plank_3" + ] + } + } + }, + "minicraft.advancements.recipes.purple_bed": { + "criteria": { + "has_purple_wool": { + "conditions": { + "items": [ + { + "items": [ + "Purple Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood", + "has_purple_wool" + ] + ], + "rewards": { + "recipes": { + "Purple Bed_1": [ + "Wood_5", + "Purple Wool_3" + ] + } + } + }, + "minicraft.advancements.recipes.purple_bed_from_white_bed": { + "criteria": { + "has_purple_dye": { + "conditions": { + "items": [ + { + "items": [ + "Purple Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_purple_dye", + "has_white_bed" + ] + ], + "rewards": { + "recipes": { + "Purple Bed_1": [ + "White Bed_1", + "Purple Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.purple_clothes": { + "criteria": { + "has_cloth": { + "conditions": { + "items": [ + { + "items": [ + "Cloth" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_purple_dye": { + "conditions": { + "items": [ + { + "items": [ + "Purple Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_cloth", + "has_purple_dye" + ] + ], + "rewards": { + "recipes": { + "Purple Clothes_1": [ + "Cloth_5", + "Purple Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.purple_dye": { + "criteria": { + "has_blue_dye": { + "conditions": { + "items": [ + { + "items": [ + "Blue Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_red_dye": { + "conditions": { + "items": [ + { + "items": [ + "Red Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_red_dye", + "has_blue_dye" + ] + ], + "rewards": { + "recipes": { + "Purple Dye_2": [ + "Blue Dye_1", + "Red Dye_1" + ] + } + } + }, + "minicraft.advancements.recipes.purple_dye_from_violet": { + "criteria": { + "has_violet": { + "conditions": { + "items": [ + { + "items": [ + "Violet" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_violet" + ] + ], + "rewards": { + "recipes": { + "Purple Dye_1": [ + "Violet_1" + ] + } + } + }, + "minicraft.advancements.recipes.purple_wool": { + "criteria": { + "has_purple_dye": { + "conditions": { + "items": [ + { + "items": [ + "Purple Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_wool", + "has_purple_dye" + ] + ], + "rewards": { + "recipes": { + "Purple Wool_1": [ + "Purple Dye_1", + "White Wool_1" + ] + } + } + }, + "minicraft.advancements.recipes.red_bed": { + "criteria": { + "has_red_wool": { + "conditions": { + "items": [ + { + "items": [ + "Red Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_red_wool", + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Red Bed_1": [ + "Wood_5", + "Red Wool_3" + ] + } + } + }, + "minicraft.advancements.recipes.red_bed_from_white_bed": { + "criteria": { + "has_red_dye": { + "conditions": { + "items": [ + { + "items": [ + "Red Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_bed": { + "conditions": { + "items": [ + { + "items": [ + "White Bed" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_red_dye", + "has_white_bed" + ] + ], + "rewards": { + "recipes": { + "Red Bed_1": [ + "Red Dye_1", + "White Bed_1" + ] + } + } + }, + "minicraft.advancements.recipes.red_dye_from_poppy": { + "criteria": { + "has_poppy": { + "conditions": { + "items": [ + { + "items": [ + "Poppy" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_poppy" + ] + ], + "rewards": { + "recipes": { + "Red Dye_1": [ + "Poppy_1" + ] + } + } + }, + "minicraft.advancements.recipes.red_dye_from_red_tulip": { + "criteria": { + "has_red_tulip": { + "conditions": { + "items": [ + { + "items": [ + "Red Tulip" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_red_tulip" + ] + ], + "rewards": { + "recipes": { + "Red Dye_1": [ + "Red Tulip_1" + ] + } + } + }, + "minicraft.advancements.recipes.red_dye_from_rose": { + "criteria": { + "has_rose": { + "conditions": { + "items": [ + { + "items": [ + "Rose" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_rose" + ] + ], + "rewards": { + "recipes": { + "Red Dye_1": [ + "Rose_1" + ] + } + } + }, + "minicraft.advancements.recipes.red_wool": { + "criteria": { + "has_red_dye": { + "conditions": { + "items": [ + { + "items": [ + "Red Dye" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_wool", + "has_red_dye" + ] + ], + "rewards": { + "recipes": { + "Red Wool_1": [ + "Red Dye_1", + "White Wool_1" + ] + } + } + }, + "minicraft.advancements.recipes.reg_clothes": { + "criteria": { + "has_cloth": { + "conditions": { + "items": [ + { + "items": [ + "Cloth" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_cloth" + ] + ], + "rewards": { + "recipes": { + "Reg Clothes_1": [ + "Cloth_5" + ] + } + } + }, + "minicraft.advancements.recipes.regen_potion": { + "criteria": { + "has_awkward_potion": { + "conditions": { + "items": [ + { + "items": [ + "Awkward Potion" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_golden_apple": { + "conditions": { + "items": [ + { + "items": [ + "Gold Apple" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_golden_apple", + "has_awkward_potion" + ] + ], + "rewards": { + "recipes": { + "Regen Potion_1": [ + "Gold Apple_1", + "Awkward Potion_1" + ] + } + } + }, + "minicraft.advancements.recipes.shears": { + "criteria": { + "has_iron": { + "conditions": { + "items": [ + { + "items": [ + "Iron" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_iron" + ] + ], + "rewards": { + "recipes": { + "Shears_1": [ + "Iron_4" + ] + } + } + }, + "minicraft.advancements.recipes.snake_armor": { + "criteria": { + "has_scale": { + "conditions": { + "items": [ + { + "items": [ + "Scale" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_scale" + ] + ], + "rewards": { + "recipes": { + "Snake Armor_1": [ + "Scale_15" + ] + } + } + }, + "minicraft.advancements.recipes.speed_potion": { + "criteria": { + "has_awkward_potion": { + "conditions": { + "items": [ + { + "items": [ + "Awkward Potion" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_cactus": { + "conditions": { + "items": [ + { + "items": [ + "Cactus" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_cactus", + "has_awkward_potion" + ] + ], + "rewards": { + "recipes": { + "Speed Potion_1": [ + "Cactus_5", + "Awkward Potion_1" + ] + } + } + }, + "minicraft.advancements.recipes.steak": { + "criteria": { + "has_coal": { + "conditions": { + "items": [ + { + "items": [ + "Coal" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_raw_beef": { + "conditions": { + "items": [ + { + "items": [ + "Raw Beef" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_coal", + "has_raw_beef" + ] + ], + "rewards": { + "recipes": { + "Steak_1": [ + "Coal_1", + "Raw Beef_1" + ] + } + } + }, + "minicraft.advancements.recipes.stone_axe": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone", + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Rock Axe_1": [ + "Stone_5", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.stone_bow": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_string": { + "conditions": { + "items": [ + { + "items": [ + "String" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone", + "has_wood", + "has_string" + ] + ], + "rewards": { + "recipes": { + "Rock Bow_1": [ + "String_2", + "Stone_5", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.stone_brick": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone" + ] + ], + "rewards": { + "recipes": { + "Stone Brick_1": [ + "Stone_2" + ] + } + } + }, + "minicraft.advancements.recipes.stone_door": { + "criteria": { + "has_stone_brick": { + "conditions": { + "items": [ + { + "items": [ + "Stone Brick" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone_brick" + ] + ], + "rewards": { + "recipes": { + "Stone Door_1": [ "Stone Brick_5" ] } } }, - "minicraft.advancements.recipes.obsidian_poppet": { + "minicraft.advancements.recipes.stone_fence": { + "criteria": { + "has_stone_brick": { + "conditions": { + "items": [ + { + "items": [ + "Stone Brick" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone_brick" + ] + ], + "rewards": { + "recipes": { + "Stone Fence_1": [ + "Stone Brick_3" + ] + } + } + }, + "minicraft.advancements.recipes.stone_hoe": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone", + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Rock Hoe_1": [ + "Stone_5", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.stone_pickaxe": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone", + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Rock Pickaxe_1": [ + "Stone_5", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.stone_shovel": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone", + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Rock Shovel_1": [ + "Stone_5", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.stone_sword": { + "criteria": { + "has_stone": { + "conditions": { + "items": [ + { + "items": [ + "Stone" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone", + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Rock Sword_1": [ + "Stone_5", + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.stone_wall": { + "criteria": { + "has_stone_brick": { + "conditions": { + "items": [ + { + "items": [ + "Stone Brick" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_stone_brick" + ] + ], + "rewards": { + "recipes": { + "Stone Wall_1": [ + "Stone Brick_3" + ] + } + } + }, + "minicraft.advancements.recipes.string": { + "criteria": { + "has_white_wool": { + "conditions": { + "items": [ + { + "items": [ + "White Wool" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_white_wool" + ] + ], + "rewards": { + "recipes": { + "String_2": [ + "White Wool_1" + ] + } + } + }, + "minicraft.advancements.recipes.swim_potion": { + "criteria": { + "has_awkward_potion": { + "conditions": { + "items": [ + { + "items": [ + "Awkward Potion" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_raw_fish": { + "conditions": { + "items": [ + { + "items": [ + "Raw Fish" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_raw_fish", + "has_awkward_potion" + ] + ], + "rewards": { + "recipes": { + "Swim Potion_1": [ + "Awkward Potion_1", + "Raw Fish_5" + ] + } + } + }, + "minicraft.advancements.recipes.tnt": { + "criteria": { + "has_gunpowder": { + "conditions": { + "items": [ + { + "items": [ + "Gunpowder" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_sand": { + "conditions": { + "items": [ + { + "items": [ + "Sand" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_sand", + "has_gunpowder" + ] + ], + "rewards": { + "recipes": { + "Tnt_1": [ + "Sand_8", + "Gunpowder_10" + ] + } + } + }, + "minicraft.advancements.recipes.torch": { + "criteria": { + "has_coal": { + "conditions": { + "items": [ + { + "items": [ + "Coal" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_shard", - "has_gem", - "has_lapis", - "has_gold" + "has_coal", + "has_wood" ] ], + "rewards": { + "recipes": { + "Torch_2": [ + "Coal_1", + "Wood_1" + ] + } + } + }, + "minicraft.advancements.recipes.totem_of_air": { "criteria": { - "has_shard": { - "trigger": "inventory_changed", + "has_cloud_ore": { "conditions": { "items": [ { "items": [ - "Shard" + "Cloud Ore" ] } ] - } + }, + "trigger": "inventory_changed" }, "has_gem": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -3811,179 +6546,350 @@ ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_lapis": { - "trigger": "inventory_changed", + "has_gold": { "conditions": { "items": [ { "items": [ - "Lapis" + "Gold" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gold": { - "trigger": "inventory_changed", + "has_lapis": { "conditions": { "items": [ { "items": [ - "Gold" + "Lapis" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_gem", + "has_cloud_ore", + "has_lapis", + "has_gold" + ] + ], "rewards": { "recipes": { - "Obsidian Poppet_1": [ + "Totem of Air_1": [ "Lapis_5", "Gold_10", - "Shard_15", - "Gem_10" + "Gem_10", + "Cloud Ore_5" ] } } }, - "minicraft.advancements.recipes.gem_axe": { + "minicraft.advancements.recipes.watering_can": { + "criteria": { + "has_iron": { + "conditions": { + "items": [ + { + "items": [ + "Iron" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_wood", - "has_gem" + "has_iron" ] ], + "rewards": { + "recipes": { + "Watering Can_1": [ + "Iron_3" + ] + } + } + }, + "minicraft.advancements.recipes.white_bed": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Wood" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_gem": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Gem" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_white_wool" + ] + ], "rewards": { "recipes": { - "Gem Axe_1": [ + "White Bed_1": [ "Wood_5", - "Gem_50" + "White Wool_3" ] } } }, - "minicraft.advancements.recipes.tnt": { + "minicraft.advancements.recipes.white_dye": { + "criteria": { + "has_white_lily": { + "conditions": { + "items": [ + { + "items": [ + "White Lily" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_sand", - "has_gunpowder" + "has_white_lily" ] ], + "rewards": { + "recipes": { + "White Dye_1": [ + "White Lily_1" + ] + } + } + }, + "minicraft.advancements.recipes.white_wool": { "criteria": { - "has_sand": { - "trigger": "inventory_changed", + "has_string": { "conditions": { "items": [ { "items": [ - "Sand" + "String" ] } ] - } - }, - "has_gunpowder": { - "trigger": "inventory_changed", + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_string" + ] + ], + "rewards": { + "recipes": { + "White Wool_1": [ + "String_3" + ] + } + } + }, + "minicraft.advancements.recipes.wood_door": { + "criteria": { + "has_plank": { "conditions": { "items": [ { "items": [ - "Gunpowder" + "Plank" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_plank" + ] + ], "rewards": { "recipes": { - "Tnt_1": [ - "Sand_8", - "Gunpowder_10" + "Wood Door_1": [ + "Plank_5" ] } } }, - "minicraft.advancements.recipes.iron_sword": { + "minicraft.advancements.recipes.wood_fence": { + "criteria": { + "has_plank": { + "conditions": { + "items": [ + { + "items": [ + "Plank" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_plank" + ] + ], + "rewards": { + "recipes": { + "Wood Fence_1": [ + "Plank_3" + ] + } + } + }, + "minicraft.advancements.recipes.wood_fishing_rod": { + "criteria": { + "has_string": { + "conditions": { + "items": [ + { + "items": [ + "String" + ] + } + ] + }, + "trigger": "inventory_changed" + }, + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ "has_wood", - "has_iron" + "has_string" + ] + ], + "rewards": { + "recipes": { + "Wood Fishing Rod_1": [ + "String_3", + "Wood_10" + ] + } + } + }, + "minicraft.advancements.recipes.wooden_axe": { + "criteria": { + "has_wood": { + "conditions": { + "items": [ + { + "items": [ + "Wood" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood" ] ], + "rewards": { + "recipes": { + "Wood Axe_1": [ + "Wood_5" + ] + } + } + }, + "minicraft.advancements.recipes.wooden_bow": { "criteria": { - "has_wood": { - "trigger": "inventory_changed", + "has_string": { "conditions": { "items": [ { "items": [ - "Wood" + "String" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_iron": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Iron" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood", + "has_string" + ] + ], "rewards": { "recipes": { - "Iron Sword_1": [ - "Wood_5", - "Iron_5" + "Wood Bow_1": [ + "String_2", + "Wood_5" ] } } }, - "minicraft.advancements.recipes.wooden_sword": { - "requirements": [ - [ - "has_wood" - ] - ], + "minicraft.advancements.recipes.wooden_hoe": { "criteria": { "has_wood": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -3992,55 +6898,54 @@ ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood" + ] + ], "rewards": { "recipes": { - "Wood Sword_1": [ + "Wood Hoe_1": [ "Wood_5" ] } } }, - "minicraft.advancements.recipes.furnace": { - "requirements": [ - [ - "has_stone" - ] - ], + "minicraft.advancements.recipes.wooden_pickaxe": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Stone" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood" + ] + ], "rewards": { "recipes": { - "Furnace_1": [ - "Stone_20" + "Wood Pickaxe_1": [ + "Wood_5" ] } } }, - "minicraft.advancements.recipes.gem_shovel": { - "requirements": [ - [ - "has_wood", - "has_gem" - ] - ], + "minicraft.advancements.recipes.wooden_shovel": { "criteria": { "has_wood": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -4049,95 +6954,82 @@ ] } ] - } - }, - "has_gem": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Gem" - ] - } - ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood" + ] + ], "rewards": { "recipes": { - "Gem Shovel_1": [ - "Wood_5", - "Gem_50" + "Wood Shovel_1": [ + "Wood_5" ] } } }, - "minicraft.advancements.recipes.black_clothes": { - "requirements": [ - [ - "has_coal", - "has_cloth" - ] - ], + "minicraft.advancements.recipes.wooden_sword": { "criteria": { - "has_coal": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Coal" - ] - } - ] - } - }, - "has_cloth": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Cloth" + "Wood" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_wood" + ] + ], "rewards": { "recipes": { - "Black Clothes_1": [ - "Coal_1", - "Cloth_5" + "Wood Sword_1": [ + "Wood_5" ] } } }, - "minicraft.advancements.recipes.haste_potion": { - "requirements": [ - [ - "has_stone", - "has_wood", - "has_awkward_potion" - ] - ], + "minicraft.advancements.recipes.workbench": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_wood": { "conditions": { "items": [ { "items": [ - "Stone" + "Wood" ] } ] - } - }, + }, + "trigger": "inventory_changed" + } + }, + "requirements": [ + [ + "has_wood" + ] + ], + "rewards": { + "recipes": { + "Workbench_1": [ + "Wood_10" + ] + } + } + }, + "minicraft.advancements.recipes.yellow_bed": { + "criteria": { "has_wood": { - "trigger": "inventory_changed", "conditions": { "items": [ { @@ -4146,209 +7038,215 @@ ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_yellow_wool": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Yellow Wool" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_yellow_wool", + "has_wood" + ] + ], "rewards": { "recipes": { - "Haste Potion_1": [ - "Awkward Potion_1", - "Stone_5", + "Yellow Bed_1": [ + "Yellow Wool_3", "Wood_5" ] } } }, - "minicraft.advancements.recipes.blue_wool": { - "requirements": [ - [ - "has_lapis", - "has_wool" - ] - ], + "minicraft.advancements.recipes.yellow_bed_from_white_bed": { "criteria": { - "has_lapis": { - "trigger": "inventory_changed", + "has_white_bed": { "conditions": { "items": [ { "items": [ - "Lapis" + "White Bed" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_wool": { - "trigger": "inventory_changed", + "has_yellow_dye": { "conditions": { "items": [ { "items": [ - "Wool" + "Yellow Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, - "rewards": { - "recipes": { - "Blue Wool_1": [ - "Lapis_1", - "Wool_1" - ] - } - } - }, - "minicraft.advancements.recipes.ornate_obsidian": { "requirements": [ [ - "has_raw_obsidian" + "has_white_bed", + "has_yellow_dye" ] ], - "criteria": { - "has_raw_obsidian": { - "trigger": "inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "Raw Obsidian" - ] - } - ] - } - } - }, "rewards": { "recipes": { - "Ornate Obsidian_1": [ - "Raw Obsidian_2" + "Yellow Bed_1": [ + "Yellow Dye_1", + "White Bed_1" ] } } }, - "minicraft.advancements.recipes.energy_potion": { - "requirements": [ - [ - "has_gem", - "has_awkward_potion" - ] - ], + "minicraft.advancements.recipes.yellow_clothes": { "criteria": { - "has_gem": { - "trigger": "inventory_changed", + "has_cloth": { "conditions": { "items": [ { "items": [ - "Gem" + "Cloth" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_yellow_dye": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Yellow Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_cloth", + "has_yellow_dye" + ] + ], "rewards": { "recipes": { - "Energy Potion_1": [ - "Awkward Potion_1", - "Gem_25" + "Yellow Clothes_1": [ + "Cloth_5", + "Yellow Dye_1" ] } } }, - "minicraft.advancements.recipes.oven": { - "requirements": [ - [ - "has_stone" - ] - ], + "minicraft.advancements.recipes.yellow_dye_from_dandelion": { "criteria": { - "has_stone": { - "trigger": "inventory_changed", + "has_dandelion": { "conditions": { "items": [ { "items": [ - "Stone" + "Dandelion" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_dandelion" + ] + ], "rewards": { "recipes": { - "Oven_1": [ - "Stone_15" + "Yellow Dye_1": [ + "Dandelion_1" ] } } }, - "minicraft.advancements.recipes.regen_potion": { + "minicraft.advancements.recipes.yellow_dye_from_sunflower": { + "criteria": { + "has_sunflower": { + "conditions": { + "items": [ + { + "items": [ + "Sunflower" + ] + } + ] + }, + "trigger": "inventory_changed" + } + }, "requirements": [ [ - "has_golden_apple", - "has_awkward_potion" + "has_sunflower" ] ], + "rewards": { + "recipes": { + "Yellow Dye_1": [ + "Sunflower_1" + ] + } + } + }, + "minicraft.advancements.recipes.yellow_wool": { "criteria": { - "has_golden_apple": { - "trigger": "inventory_changed", + "has_white_wool": { "conditions": { "items": [ { "items": [ - "Gold Apple" + "White Wool" ] } ] - } + }, + "trigger": "inventory_changed" }, - "has_awkward_potion": { - "trigger": "inventory_changed", + "has_yellow_dye": { "conditions": { "items": [ { "items": [ - "Awkward Potion" + "Yellow Dye" ] } ] - } + }, + "trigger": "inventory_changed" } }, + "requirements": [ + [ + "has_white_wool", + "has_yellow_dye" + ] + ], "rewards": { "recipes": { - "Regen Potion_1": [ - "Gold Apple_1", - "Awkward Potion_1" + "Yellow Wool_1": [ + "Yellow Dye_1", + "White Wool_1" ] } }