diff --git a/README.md b/README.md
index 8d928f5..ad5eb15 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Limbo
[](http://ci.loohpjames.com/job/Limbo/)
-## Standalone Limbo Minecraft Server (Currently 1.20.6)
+## Standalone Limbo Minecraft Server (Currently 1.21)
### Starting the server
Use the following command lines to start the limbo server just like any other minecraft server
@@ -16,7 +16,7 @@ IP: mc.loohpjames.com
```

***
-### Downloads (1.17.1-1.20.6)
+### Downloads (1.17.1-1.21)
- [Jenkins](http://ci.loohpjames.com/job/Limbo/)
***
### Maven
diff --git a/pom.xml b/pom.xml
index 7f8b741..1fe1cd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
com.loohp
Limbo
Limbo
- 0.7.9-ALPHA
+ 0.7.10-ALPHA
Standalone Limbo Minecraft Server.
https://github.com/LOOHP/Limbo
@@ -136,7 +136,7 @@
- ${project.artifactId}-${project.version}-1.20.6
+ ${project.artifactId}-${project.version}-1.21
diff --git a/src/main/java/com/loohp/limbo/Limbo.java b/src/main/java/com/loohp/limbo/Limbo.java
index 19db265..8a7479a 100644
--- a/src/main/java/com/loohp/limbo/Limbo.java
+++ b/src/main/java/com/loohp/limbo/Limbo.java
@@ -35,9 +35,6 @@ import com.loohp.limbo.inventory.InventoryType;
import com.loohp.limbo.location.Location;
import com.loohp.limbo.metrics.Metrics;
import com.loohp.limbo.network.ServerConnection;
-import com.loohp.limbo.network.protocol.packets.Packet;
-import com.loohp.limbo.network.protocol.packets.PacketIn;
-import com.loohp.limbo.network.protocol.packets.PacketOut;
import com.loohp.limbo.network.protocol.packets.PacketPlayOutBoss;
import com.loohp.limbo.permissions.PermissionsManager;
import com.loohp.limbo.player.Player;
@@ -60,7 +57,6 @@ import net.querz.nbt.io.NBTUtil;
import net.querz.nbt.tag.CompoundTag;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import javax.swing.UnsupportedLookAndFeelException;
@@ -74,13 +70,11 @@ import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -138,8 +132,8 @@ public final class Limbo {
//===========================
- public final String SERVER_IMPLEMENTATION_VERSION = "1.20.6";
- public final int SERVER_IMPLEMENTATION_PROTOCOL = 766;
+ public final String SERVER_IMPLEMENTATION_VERSION = "1.21";
+ public final int SERVER_IMPLEMENTATION_PROTOCOL = 767;
public final String LIMBO_IMPLEMENTATION_VERSION;
private final AtomicBoolean isRunning;
@@ -204,95 +198,6 @@ public final class Limbo {
console.sendMessage("Starting Limbo server in bungeecord mode!");
}
- String mappingName = "mapping.json";
- InputStream mappingStream = getClass().getClassLoader().getResourceAsStream(mappingName);
- if (mappingStream == null) {
- throw new RuntimeException("Failed to load " + mappingName + " from jar!");
- }
-
- console.sendMessage("Loading packet id mappings...");
-
- InputStreamReader reader = new InputStreamReader(mappingStream, StandardCharsets.UTF_8);
- JSONObject json = (JSONObject) new JSONParser().parse(reader);
- reader.close();
-
- String classPrefix = Packet.class.getName().substring(0, Packet.class.getName().lastIndexOf(".") + 1);
- int mappingsCount = 0;
-
- Map> HandshakeIn = new HashMap<>();
- for (Object key : ((JSONObject) json.get("HandshakeIn")).keySet()) {
- int packetId = Integer.decode((String) key);
- HandshakeIn.put(packetId, (Class extends PacketIn>) Class.forName(classPrefix + ((JSONObject) json.get("HandshakeIn")).get(key)));
- }
- Packet.setHandshakeIn(HandshakeIn);
- mappingsCount += HandshakeIn.size();
-
- Map> StatusIn = new HashMap<>();
- for (Object key : ((JSONObject) json.get("StatusIn")).keySet()) {
- int packetId = Integer.decode((String) key);
- StatusIn.put(packetId, (Class extends PacketIn>) Class.forName(classPrefix + ((JSONObject) json.get("StatusIn")).get(key)));
- }
- Packet.setStatusIn(StatusIn);
- mappingsCount += StatusIn.size();
-
- Map, Integer> StatusOut = new HashMap<>();
- for (Object key : ((JSONObject) json.get("StatusOut")).keySet()) {
- Class extends PacketOut> packetClass = (Class extends PacketOut>) Class.forName(classPrefix + key);
- StatusOut.put(packetClass, Integer.decode((String) ((JSONObject) json.get("StatusOut")).get(key)));
- }
- Packet.setStatusOut(StatusOut);
- mappingsCount += StatusOut.size();
-
- Map> LoginIn = new HashMap<>();
- for (Object key : ((JSONObject) json.get("LoginIn")).keySet()) {
- int packetId = Integer.decode((String) key);
- LoginIn.put(packetId, (Class extends PacketIn>) Class.forName(classPrefix + ((JSONObject) json.get("LoginIn")).get(key)));
- }
- Packet.setLoginIn(LoginIn);
- mappingsCount += LoginIn.size();
-
- Map, Integer> LoginOut = new HashMap<>();
- for (Object key : ((JSONObject) json.get("LoginOut")).keySet()) {
- Class extends PacketOut> packetClass = (Class extends PacketOut>) Class.forName(classPrefix + key);
- LoginOut.put(packetClass, Integer.decode((String) ((JSONObject) json.get("LoginOut")).get(key)));
- }
- Packet.setLoginOut(LoginOut);
- mappingsCount += LoginOut.size();
-
- Map> ConfigurationIn = new HashMap<>();
- for (Object key : ((JSONObject) json.get("ConfigurationIn")).keySet()) {
- int packetId = Integer.decode((String) key);
- ConfigurationIn.put(packetId, (Class extends PacketIn>) Class.forName(classPrefix + ((JSONObject) json.get("ConfigurationIn")).get(key)));
- }
- Packet.setConfigurationIn(ConfigurationIn);
- mappingsCount += ConfigurationIn.size();
-
- Map, Integer> ConfigurationOut = new HashMap<>();
- for (Object key : ((JSONObject) json.get("ConfigurationOut")).keySet()) {
- Class extends PacketOut> packetClass = (Class extends PacketOut>) Class.forName(classPrefix + key);
- ConfigurationOut.put(packetClass, Integer.decode((String) ((JSONObject) json.get("ConfigurationOut")).get(key)));
- }
- Packet.setConfigurationOut(ConfigurationOut);
- mappingsCount += ConfigurationOut.size();
-
- Map> PlayIn = new HashMap<>();
- for (Object key : ((JSONObject) json.get("PlayIn")).keySet()) {
- int packetId = Integer.decode((String) key);
- PlayIn.put(packetId, (Class extends PacketIn>) Class.forName(classPrefix + ((JSONObject) json.get("PlayIn")).get(key)));
- }
- Packet.setPlayIn(PlayIn);
- mappingsCount += PlayIn.size();
-
- Map, Integer> PlayOut = new HashMap<>();
- for (Object key : ((JSONObject) json.get("PlayOut")).keySet()) {
- Class extends PacketOut> packetClass = (Class extends PacketOut>) Class.forName(classPrefix + key);
- PlayOut.put(packetClass, Integer.decode((String) ((JSONObject) json.get("PlayOut")).get(key)));
- }
- Packet.setPlayOut(PlayOut);
- mappingsCount += PlayOut.size();
-
- console.sendMessage("Loaded all " + mappingsCount + " packet id mappings!");
-
worlds.add(loadDefaultWorld());
Location spawn = properties.getWorldSpawn();
properties.setWorldSpawn(new Location(getWorld(properties.getLevelName().value()), spawn.getX(), spawn.getY(), spawn.getZ(), spawn.getYaw(), spawn.getPitch()));
@@ -346,7 +251,7 @@ public final class Limbo {
}
}
- server = new ServerConnection(properties.getServerIp(), properties.getServerPort());
+ server = new ServerConnection(properties.getServerIp(), properties.getServerPort(), false);
metrics = new Metrics();
diff --git a/src/main/java/com/loohp/limbo/network/ClientConnection.java b/src/main/java/com/loohp/limbo/network/ClientConnection.java
index 4d943d2..65244d6 100644
--- a/src/main/java/com/loohp/limbo/network/ClientConnection.java
+++ b/src/main/java/com/loohp/limbo/network/ClientConnection.java
@@ -43,7 +43,6 @@ import com.loohp.limbo.inventory.ItemStack;
import com.loohp.limbo.location.Location;
import com.loohp.limbo.network.protocol.packets.ClientboundFinishConfigurationPacket;
import com.loohp.limbo.network.protocol.packets.ClientboundRegistryDataPacket;
-import com.loohp.limbo.network.protocol.packets.Packet;
import com.loohp.limbo.network.protocol.packets.PacketHandshakingIn;
import com.loohp.limbo.network.protocol.packets.PacketIn;
import com.loohp.limbo.network.protocol.packets.PacketLoginInLoginStart;
@@ -99,6 +98,7 @@ import com.loohp.limbo.network.protocol.packets.ServerboundLoginAcknowledgedPack
import com.loohp.limbo.player.Player;
import com.loohp.limbo.player.PlayerInteractManager;
import com.loohp.limbo.player.PlayerInventory;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.registry.RegistryCustom;
import com.loohp.limbo.utils.BungeecordAdventureConversionUtils;
import com.loohp.limbo.utils.CheckedBiConsumer;
@@ -288,26 +288,7 @@ public class ClientConnection extends Thread {
DataInput input = read.getDataInput();
int size = read.getSize();
int packetId = read.getPacketId();
- Class extends PacketIn> packetType;
- switch (state) {
- case HANDSHAKE:
- packetType = Packet.getHandshakeIn().get(packetId);
- break;
- case STATUS:
- packetType = Packet.getStatusIn().get(packetId);
- break;
- case LOGIN:
- packetType = Packet.getLoginIn().get(packetId);
- break;
- case CONFIGURATION:
- packetType = Packet.getConfigurationIn().get(packetId);
- break;
- case PLAY:
- packetType = Packet.getPlayIn().get(packetId);
- break;
- default:
- throw new IllegalStateException("Illegal ClientState!");
- }
+ Class extends PacketIn> packetType = PacketRegistry.getPacketClass(packetId, PacketRegistry.NetworkPhase.fromClientState(state), PacketRegistry.PacketBound.SERVERBOUND);
if (packetType == null) {
input.skipBytes(size - DataTypeIO.getVarIntLength(packetId));
return null;
@@ -569,22 +550,10 @@ public class ClientConnection extends Thread {
TimeUnit.MILLISECONDS.sleep(500);
- ClientboundRegistryDataPacket registryDataPacket1 = new ClientboundRegistryDataPacket(RegistryCustom.WORLDGEN_BIOME);
- sendPacket(registryDataPacket1);
- ClientboundRegistryDataPacket registryDataPacket2 = new ClientboundRegistryDataPacket(RegistryCustom.CHAT_TYPE);
- sendPacket(registryDataPacket2);
- ClientboundRegistryDataPacket registryDataPacket3 = new ClientboundRegistryDataPacket(RegistryCustom.TRIM_PATTERN);
- sendPacket(registryDataPacket3);
- ClientboundRegistryDataPacket registryDataPacket4 = new ClientboundRegistryDataPacket(RegistryCustom.TRIM_MATERIAL);
- sendPacket(registryDataPacket4);
- ClientboundRegistryDataPacket registryDataPacket5 = new ClientboundRegistryDataPacket(RegistryCustom.WOLF_VARIANT);
- sendPacket(registryDataPacket5);
- ClientboundRegistryDataPacket registryDataPacket6 = new ClientboundRegistryDataPacket(RegistryCustom.DIMENSION_TYPE);
- sendPacket(registryDataPacket6);
- ClientboundRegistryDataPacket registryDataPacket7 = new ClientboundRegistryDataPacket(RegistryCustom.DAMAGE_TYPE);
- sendPacket(registryDataPacket7);
- ClientboundRegistryDataPacket registryDataPacket8 = new ClientboundRegistryDataPacket(RegistryCustom.BANNER_PATTERN);
- sendPacket(registryDataPacket8);
+ for (RegistryCustom registryCustom : RegistryCustom.getRegistries()) {
+ ClientboundRegistryDataPacket registryDataPacket = new ClientboundRegistryDataPacket(registryCustom);
+ sendPacket(registryDataPacket);
+ }
ClientboundFinishConfigurationPacket clientboundFinishConfigurationPacket = new ClientboundFinishConfigurationPacket();
sendPacket(clientboundFinishConfigurationPacket);
diff --git a/src/main/java/com/loohp/limbo/network/ServerConnection.java b/src/main/java/com/loohp/limbo/network/ServerConnection.java
index 08634fd..6185faa 100644
--- a/src/main/java/com/loohp/limbo/network/ServerConnection.java
+++ b/src/main/java/com/loohp/limbo/network/ServerConnection.java
@@ -29,16 +29,18 @@ import java.util.ArrayList;
import java.util.List;
public class ServerConnection extends Thread {
-
+
+ private final String ip;
+ private final int port;
+ private final boolean silent;
private ServerSocket serverSocket;
private List clients;
- private String ip;
- private int port;
- public ServerConnection(String ip, int port) {
- clients = new ArrayList();
+ public ServerConnection(String ip, int port, boolean silent) {
+ this.clients = new ArrayList<>();
this.ip = ip;
this.port = port;
+ this.silent = silent;
start();
}
@@ -46,7 +48,9 @@ public class ServerConnection extends Thread {
public void run() {
try {
serverSocket = new ServerSocket(port, 50, InetAddress.getByName(ip));
- Limbo.getInstance().getConsole().sendMessage("Limbo server listening on /" + serverSocket.getInetAddress().getHostName() + ":" + serverSocket.getLocalPort());
+ if (!silent) {
+ Limbo.getInstance().getConsole().sendMessage("Limbo server listening on /" + serverSocket.getInetAddress().getHostName() + ":" + serverSocket.getLocalPort());
+ }
while (true) {
Socket connection = serverSocket.accept();
ClientConnection sc = new ClientConnection(connection);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchFinishedPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchFinishedPacket.java
index 9eab443..775bf3c 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchFinishedPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchFinishedPacket.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -42,7 +43,7 @@ public class ClientboundChunkBatchFinishedPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, batchSize);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchStartPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchStartPacket.java
index 25e31f3..b5add3d 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchStartPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundChunkBatchStartPacket.java
@@ -19,6 +19,8 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -33,7 +35,7 @@ public class ClientboundChunkBatchStartPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
return buffer.toByteArray();
}
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundClearTitlesPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundClearTitlesPacket.java
index c48268b..ab04c9a 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundClearTitlesPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundClearTitlesPacket.java
@@ -19,13 +19,15 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class ClientboundClearTitlesPacket extends PacketOut {
- private boolean reset;
+ private final boolean reset;
public ClientboundClearTitlesPacket(boolean reset) {
this.reset = reset;
@@ -40,7 +42,7 @@ public class ClientboundClearTitlesPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeBoolean(reset);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundFinishConfigurationPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundFinishConfigurationPacket.java
index 3a4766d..d0b395c 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundFinishConfigurationPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundFinishConfigurationPacket.java
@@ -19,6 +19,8 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -33,7 +35,7 @@ public class ClientboundFinishConfigurationPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getConfigurationOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
return buffer.toByteArray();
}
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundLevelChunkWithLightPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundLevelChunkWithLightPacket.java
index 6707a3b..9874da6 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundLevelChunkWithLightPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundLevelChunkWithLightPacket.java
@@ -20,6 +20,7 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.registry.BuiltInRegistries;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.BitsUtils;
import com.loohp.limbo.utils.DataTypeIO;
import com.loohp.limbo.world.Environment;
@@ -40,16 +41,16 @@ import java.util.List;
public class ClientboundLevelChunkWithLightPacket extends PacketOut {
- private int chunkX;
- private int chunkZ;
- private Chunk chunk;
- private Environment environment;
- private long[] skyLightBitMasks;
- private long[] blockLightBitMasks;
- private long[] skyLightBitMasksEmpty;
- private long[] blockLightBitMasksEmpty;
- private List skylightArrays;
- private List blocklightArrays;
+ private final int chunkX;
+ private final int chunkZ;
+ private final Chunk chunk;
+ private final Environment environment;
+ private final long[] skyLightBitMasks;
+ private final long[] blockLightBitMasks;
+ private final long[] skyLightBitMasksEmpty;
+ private final long[] blockLightBitMasksEmpty;
+ private final List skylightArrays;
+ private final List blocklightArrays;
public ClientboundLevelChunkWithLightPacket(int chunkX, int chunkZ, Chunk chunk, Environment environment, List skylightArrays, List blocklightArrays) {
this.chunkX = chunkX;
@@ -115,7 +116,7 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeInt(chunkX);
output.writeInt(chunkZ);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundRegistryDataPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundRegistryDataPacket.java
index 0fb3792..60a54ca 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundRegistryDataPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundRegistryDataPacket.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.registry.RegistryCustom;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.key.Key;
@@ -47,7 +48,7 @@ public class ClientboundRegistryDataPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getConfigurationOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeString(output, registry.getIdentifier().asString(), StandardCharsets.UTF_8);
DataTypeIO.writeVarInt(output, registry.getEntries().size());
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundResourcePackPushPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundResourcePackPushPacket.java
index ef416d9..26b1039 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundResourcePackPushPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundResourcePackPushPacket.java
@@ -19,9 +19,9 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
-import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
@@ -75,7 +75,7 @@ public class ClientboundResourcePackPushPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeUUID(output, id);
DataTypeIO.writeString(output, url, StandardCharsets.UTF_8);
DataTypeIO.writeString(output, hash, StandardCharsets.UTF_8);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetActionBarTextPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetActionBarTextPacket.java
index ee19ad5..0892398 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetActionBarTextPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetActionBarTextPacket.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -28,7 +29,7 @@ import java.io.IOException;
public class ClientboundSetActionBarTextPacket extends PacketOut {
- private Component actionBar;
+ private final Component actionBar;
public ClientboundSetActionBarTextPacket(Component actionBar) {
this.actionBar = actionBar;
@@ -43,7 +44,7 @@ public class ClientboundSetActionBarTextPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeComponent(output, actionBar);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetSubtitleTextPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetSubtitleTextPacket.java
index 4917f8b..4c1cba2 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetSubtitleTextPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetSubtitleTextPacket.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -28,7 +29,7 @@ import java.io.IOException;
public class ClientboundSetSubtitleTextPacket extends PacketOut {
- private Component subTitle;
+ private final Component subTitle;
public ClientboundSetSubtitleTextPacket(Component subTitle) {
this.subTitle = subTitle;
@@ -43,7 +44,7 @@ public class ClientboundSetSubtitleTextPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeComponent(output, subTitle);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitleTextPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitleTextPacket.java
index 0c5bf1d..bc31e7e 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitleTextPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitleTextPacket.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -28,7 +29,7 @@ import java.io.IOException;
public class ClientboundSetTitleTextPacket extends PacketOut {
- private Component titleText;
+ private final Component titleText;
public ClientboundSetTitleTextPacket(Component titleText) {
this.titleText = titleText;
@@ -43,7 +44,7 @@ public class ClientboundSetTitleTextPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeComponent(output, titleText);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitlesAnimationPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitlesAnimationPacket.java
index ae97779..2ccaf03 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitlesAnimationPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitlesAnimationPacket.java
@@ -19,15 +19,17 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class ClientboundSetTitlesAnimationPacket extends PacketOut {
- private int fadeIn;
- private int stay;
- private int fadeOut;
+ private final int fadeIn;
+ private final int stay;
+ private final int fadeOut;
public ClientboundSetTitlesAnimationPacket(int fadeIn, int stay, int fadeOut) {
this.fadeIn = fadeIn;
@@ -52,7 +54,7 @@ public class ClientboundSetTitlesAnimationPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeInt(fadeIn);
output.writeInt(stay);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSystemChatPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSystemChatPacket.java
index 135a2da..9790aeb 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSystemChatPacket.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSystemChatPacket.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -28,8 +29,8 @@ import java.io.IOException;
public class ClientboundSystemChatPacket extends PacketOut {
- private Component message;
- private boolean overlay;
+ private final Component message;
+ private final boolean overlay;
public ClientboundSystemChatPacket(Component message, boolean overlay) {
this.message = message;
@@ -49,7 +50,7 @@ public class ClientboundSystemChatPacket extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeComponent(output, message);
output.writeBoolean(overlay);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/Packet.java b/src/main/java/com/loohp/limbo/network/protocol/packets/Packet.java
index 67b5623..b0a16ff 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/Packet.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/Packet.java
@@ -20,112 +20,12 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.network.ClientConnection;
-
-import java.util.Map;
+import com.loohp.limbo.registry.PacketRegistry;
public abstract class Packet {
- private static Map> handshakeIn;
-
- private static Map> statusIn;
- private static Map, Integer> statusOut;
-
- private static Map> loginIn;
- private static Map, Integer> loginOut;
-
- private static Map> configurationIn;
- private static Map, Integer> configurationOut;
-
- private static Map> playIn;
- private static Map, Integer> playOut;
-
- public static Map> getHandshakeIn() {
- return handshakeIn;
- }
-
- public static void setHandshakeIn(Map> handshakeIn) {
- Packet.handshakeIn = handshakeIn;
- }
-
- public static Map> getStatusIn() {
- return statusIn;
- }
-
- public static void setStatusIn(Map> statusIn) {
- Packet.statusIn = statusIn;
- }
-
- public static Map, Integer> getStatusOut() {
- return statusOut;
- }
-
- public static void setStatusOut(Map, Integer> statusOut) {
- Packet.statusOut = statusOut;
- }
-
- public static Map> getLoginIn() {
- return loginIn;
- }
-
- public static void setLoginIn(Map> loginIn) {
- Packet.loginIn = loginIn;
- }
-
- public static Map, Integer> getLoginOut() {
- return loginOut;
- }
-
- public static void setLoginOut(Map, Integer> loginOut) {
- Packet.loginOut = loginOut;
- }
-
- public static Map> getConfigurationIn() {
- return configurationIn;
- }
-
- public static void setConfigurationIn(Map> configurationIn) {
- Packet.configurationIn = configurationIn;
- }
-
- public static Map, Integer> getConfigurationOut() {
- return configurationOut;
- }
-
- public static void setConfigurationOut(Map, Integer> configurationOut) {
- Packet.configurationOut = configurationOut;
- }
-
- public static Map> getPlayIn() {
- return playIn;
- }
-
- public static void setPlayIn(Map> playIn) {
- Packet.playIn = playIn;
- }
-
- public static Map, Integer> getPlayOut() {
- return playOut;
- }
-
- public static void setPlayOut(Map, Integer> playOut) {
- Packet.playOut = playOut;
- }
-
public ClientConnection.ClientState getPacketState() {
- Class extends Packet> type = getClass();
- if (handshakeIn.containsValue(type)) {
- return ClientConnection.ClientState.HANDSHAKE;
- } else if (statusIn.containsValue(type) || statusOut.containsKey(type)) {
- return ClientConnection.ClientState.STATUS;
- } else if (loginIn.containsValue(type) || loginOut.containsKey(type)) {
- return ClientConnection.ClientState.LOGIN;
- } else if (configurationIn.containsValue(type) || configurationOut.containsKey(type)) {
- return ClientConnection.ClientState.CONFIGURATION;
- } else if (playIn.containsValue(type) || playOut.containsKey(type)) {
- return ClientConnection.ClientState.PLAY;
- } else {
- throw new IllegalStateException("This packet of class " + type + " is not registered!");
- }
+ return PacketRegistry.getPacketInfo(getClass()).getNetworkPhase().getClientState();
}
}
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketHandshakingIn.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketHandshakingIn.java
index 1e07035..3b897f1 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketHandshakingIn.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketHandshakingIn.java
@@ -54,10 +54,10 @@ public class PacketHandshakingIn extends PacketIn {
//==============================
- private int protocolVersion;
- private String serverAddress;
- private int serverPort;
- private HandshakeType handshakeType;
+ private final int protocolVersion;
+ private final String serverAddress;
+ private final int serverPort;
+ private final HandshakeType handshakeType;
public PacketHandshakingIn(int protocolVersion, String serverAddress, int serverPort, HandshakeType handshakeType) {
this.protocolVersion = protocolVersion;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInPluginMessaging.java
index dd08140..8f74434 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInPluginMessaging.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInPluginMessaging.java
@@ -27,9 +27,9 @@ import java.util.Optional;
public class PacketLoginInPluginMessaging extends PacketIn {
- private int messageId;
- private boolean successful;
- private Optional data;
+ private final int messageId;
+ private final boolean successful;
+ private final Optional data;
public PacketLoginInPluginMessaging(int messageId, boolean successful, byte[] data) {
this.messageId = messageId;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutDisconnect.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutDisconnect.java
index bb18d05..f7ca9e6 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutDisconnect.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutDisconnect.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -28,7 +29,7 @@ import java.io.IOException;
public class PacketLoginOutDisconnect extends PacketOut {
- private Component reason;
+ private final Component reason;
public PacketLoginOutDisconnect(Component reason) {
this.reason = reason;
@@ -43,7 +44,7 @@ public class PacketLoginOutDisconnect extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getLoginOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeComponent(output, reason);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutLoginSuccess.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutLoginSuccess.java
index db96d8a..3951167 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutLoginSuccess.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutLoginSuccess.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -56,7 +57,7 @@ public class PacketLoginOutLoginSuccess extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getLoginOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeUUID(output, uuid);
DataTypeIO.writeString(output, username, StandardCharsets.UTF_8);
DataTypeIO.writeVarInt(output, 0);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutPluginMessaging.java
index 9d8b3e7..a1056e8 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutPluginMessaging.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutPluginMessaging.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.key.Key;
@@ -29,9 +30,9 @@ import java.nio.charset.StandardCharsets;
public class PacketLoginOutPluginMessaging extends PacketOut {
- private int messageId;
- private Key channel;
- private byte[] data;
+ private final int messageId;
+ private final Key channel;
+ private final byte[] data;
public PacketLoginOutPluginMessaging(int messageId, Key channel) {
this(messageId, channel, null);
@@ -60,7 +61,7 @@ public class PacketLoginOutPluginMessaging extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getLoginOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, messageId);
DataTypeIO.writeString(output, channel.toString(), StandardCharsets.UTF_8);
if (data != null) {
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockDig.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockDig.java
index 44db574..74fb6b4 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockDig.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockDig.java
@@ -40,10 +40,10 @@ public class PacketPlayInBlockDig extends PacketIn {
}
- private PlayerDigType action;
- private BlockPosition pos;
- private BlockFace direction;
- private int sequence;
+ private final PlayerDigType action;
+ private final BlockPosition pos;
+ private final BlockFace direction;
+ private final int sequence;
public PacketPlayInBlockDig(PlayerDigType action, BlockPosition pos, BlockFace direction, int sequence) {
this.action = action;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockPlace.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockPlace.java
index 1420873..0fae5dd 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockPlace.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockPlace.java
@@ -27,8 +27,8 @@ import java.io.IOException;
public class PacketPlayInBlockPlace extends PacketIn {
- private EquipmentSlot hand;
- private int sequence;
+ private final EquipmentSlot hand;
+ private final int sequence;
public PacketPlayInBlockPlace(EquipmentSlot hand, int sequence) {
this.hand = hand;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInChat.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInChat.java
index 9382f10..7bab197 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInChat.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInChat.java
@@ -30,11 +30,11 @@ import java.time.Instant;
public class PacketPlayInChat extends PacketIn {
- private String message;
- private Instant time;
- private long salt;
- private MessageSignature signature;
- private LastSeenMessages.b lastSeenMessages;
+ private final String message;
+ private final Instant time;
+ private final long salt;
+ private final MessageSignature signature;
+ private final LastSeenMessages.b lastSeenMessages;
public PacketPlayInChat(String message, Instant time, long salt, MessageSignature signature, LastSeenMessages.b lastSeenMessages) {
this.message = message;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInCloseWindow.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInCloseWindow.java
index ef7a4f1..e98d4f0 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInCloseWindow.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInCloseWindow.java
@@ -24,7 +24,7 @@ import java.io.IOException;
public class PacketPlayInCloseWindow extends PacketIn {
- private int containerId;
+ private final int containerId;
public PacketPlayInCloseWindow(int containerId) {
this.containerId = containerId;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInHeldItemChange.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInHeldItemChange.java
index 97dd331..ece4c4c 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInHeldItemChange.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInHeldItemChange.java
@@ -24,7 +24,7 @@ import java.io.IOException;
public class PacketPlayInHeldItemChange extends PacketIn {
- private short slot;
+ private final short slot;
public PacketPlayInHeldItemChange(short slot) {
this.slot = slot;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInItemName.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInItemName.java
index 71eec3b..eee1501 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInItemName.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInItemName.java
@@ -27,7 +27,7 @@ import java.nio.charset.StandardCharsets;
public class PacketPlayInItemName extends PacketIn {
- private String name;
+ private final String name;
public PacketPlayInItemName(String name) {
this.name = name;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInKeepAlive.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInKeepAlive.java
index 0ef5763..b8b8f34 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInKeepAlive.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInKeepAlive.java
@@ -24,7 +24,7 @@ import java.io.IOException;
public class PacketPlayInKeepAlive extends PacketIn {
- private long payload;
+ private final long payload;
public PacketPlayInKeepAlive(long payload) {
this.payload = payload;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPickItem.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPickItem.java
index efc8e04..327e398 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPickItem.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPickItem.java
@@ -26,7 +26,7 @@ import java.io.IOException;
public class PacketPlayInPickItem extends PacketIn {
- private int slot;
+ private final int slot;
public PacketPlayInPickItem(int slot) {
this.slot = slot;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPluginMessaging.java
index 8b0282f..d0e044d 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPluginMessaging.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPluginMessaging.java
@@ -27,8 +27,8 @@ import java.nio.charset.StandardCharsets;
public class PacketPlayInPluginMessaging extends PacketIn {
- private String channel;
- private byte[] data;
+ private final String channel;
+ private final byte[] data;
public PacketPlayInPluginMessaging(String channel, byte[] data) {
this.channel = channel;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPosition.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPosition.java
index f639fa7..fad945a 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPosition.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPosition.java
@@ -24,10 +24,10 @@ import java.io.IOException;
public class PacketPlayInPosition extends PacketIn {
- private double x;
- private double y;
- private double z;
- private boolean onGround;
+ private final double x;
+ private final double y;
+ private final double z;
+ private final boolean onGround;
public PacketPlayInPosition(double x, double y, double z, boolean onGround) {
this.x = x;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPositionAndLook.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPositionAndLook.java
index 5dce412..33fd91f 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPositionAndLook.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPositionAndLook.java
@@ -24,12 +24,12 @@ import java.io.IOException;
public class PacketPlayInPositionAndLook extends PacketIn {
- private double x;
- private double y;
- private double z;
- private float yaw;
- private float pitch;
- private boolean onGround;
+ private final double x;
+ private final double y;
+ private final double z;
+ private final float yaw;
+ private final float pitch;
+ private final boolean onGround;
public PacketPlayInPositionAndLook(double x, double y, double z, float yaw, float pitch, boolean onGround) {
this.x = x;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInRotation.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInRotation.java
index 1e23d95..2bb25ba 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInRotation.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInRotation.java
@@ -24,9 +24,9 @@ import java.io.IOException;
public class PacketPlayInRotation extends PacketIn {
- private float yaw;
- private float pitch;
- private boolean onGround;
+ private final float yaw;
+ private final float pitch;
+ private final boolean onGround;
public PacketPlayInRotation(float yaw, float pitch, boolean onGround) {
this.yaw = yaw;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInTabComplete.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInTabComplete.java
index f90f470..fb4da24 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInTabComplete.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInTabComplete.java
@@ -27,8 +27,8 @@ import java.nio.charset.StandardCharsets;
public class PacketPlayInTabComplete extends PacketIn {
- private int id;
- private String text;
+ private final int id;
+ private final String text;
public PacketPlayInTabComplete(int id, String text) {
this.id = id;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInUseItem.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInUseItem.java
index 82e51a4..af9960b 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInUseItem.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInUseItem.java
@@ -28,9 +28,9 @@ import java.io.IOException;
public class PacketPlayInUseItem extends PacketIn {
- private EquipmentSlot hand;
- private MovingObjectPositionBlock blockHit;
- private int sequence;
+ private final EquipmentSlot hand;
+ private final MovingObjectPositionBlock blockHit;
+ private final int sequence;
public PacketPlayInUseItem(EquipmentSlot hand, MovingObjectPositionBlock blockHit, int sequence) {
this.hand = hand;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutBoss.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutBoss.java
index 661535b..4cd768d 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutBoss.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutBoss.java
@@ -20,6 +20,7 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.bossbar.KeyedBossBar;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.bossbar.BossBar;
@@ -52,8 +53,8 @@ public class PacketPlayOutBoss extends PacketOut {
return i;
}
- private KeyedBossBar bossBar;
- private BossBarAction action;
+ private final KeyedBossBar bossBar;
+ private final BossBarAction action;
public PacketPlayOutBoss(KeyedBossBar bossBar, BossBarAction action) {
this.bossBar = bossBar;
@@ -73,7 +74,7 @@ public class PacketPlayOutBoss extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeUUID(output, bossBar.getUniqueId());
DataTypeIO.writeVarInt(output, action.ordinal());
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutCloseWindow.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutCloseWindow.java
index e1b67e3..d705116 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutCloseWindow.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutCloseWindow.java
@@ -19,13 +19,15 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class PacketPlayOutCloseWindow extends PacketOut {
- private int containerId;
+ private final int containerId;
public PacketPlayOutCloseWindow(int containerId) {
this.containerId = containerId;
@@ -40,7 +42,7 @@ public class PacketPlayOutCloseWindow extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeByte(containerId);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDeclareCommands.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDeclareCommands.java
index 5fb072e..6b95f0c 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDeclareCommands.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDeclareCommands.java
@@ -19,13 +19,15 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class PacketPlayOutDeclareCommands extends PacketOut {
- private byte[] data;
+ private final byte[] data;
public PacketPlayOutDeclareCommands(byte[] data) {
this.data = data;
@@ -40,7 +42,7 @@ public class PacketPlayOutDeclareCommands extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.write(data);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDisconnect.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDisconnect.java
index 257f946..bf328c8 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDisconnect.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDisconnect.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -28,7 +29,7 @@ import java.io.IOException;
public class PacketPlayOutDisconnect extends PacketOut {
- private Component reason;
+ private final Component reason;
public PacketPlayOutDisconnect(Component reason) {
this.reason = reason;
@@ -43,7 +44,7 @@ public class PacketPlayOutDisconnect extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeComponent(output, reason);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityDestroy.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityDestroy.java
index 4f399ac..2e9d7a8 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityDestroy.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityDestroy.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -27,7 +28,7 @@ import java.io.IOException;
public class PacketPlayOutEntityDestroy extends PacketOut {
- private int[] entityIds;
+ private final int[] entityIds;
public PacketPlayOutEntityDestroy(int... entityIds) {
this.entityIds = entityIds;
@@ -42,7 +43,7 @@ public class PacketPlayOutEntityDestroy extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, entityIds.length);
for (int entityId : entityIds) {
DataTypeIO.writeVarInt(output, entityId);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityMetadata.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityMetadata.java
index c10edf2..f6e93de 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityMetadata.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityMetadata.java
@@ -23,6 +23,7 @@ import com.loohp.limbo.entity.DataWatcher.WatchableObject;
import com.loohp.limbo.entity.DataWatcher.WatchableObjectType;
import com.loohp.limbo.entity.Entity;
import com.loohp.limbo.entity.Pose;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import com.loohp.limbo.utils.Rotation3f;
import com.loohp.limbo.world.BlockPosition;
@@ -45,9 +46,9 @@ public class PacketPlayOutEntityMetadata extends PacketOut {
public static final int END_OFF_METADATA = 0xff;
- private Entity entity;
- public boolean allFields;
- public Field[] fields;
+ private final Entity entity;
+ public final boolean allFields;
+ public final Field[] fields;
public PacketPlayOutEntityMetadata(Entity entity, boolean allFields, Field... fields) {
this.entity = entity;
@@ -68,7 +69,7 @@ public class PacketPlayOutEntityMetadata extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, entity.getEntityId());
Collection watches;
if (allFields) {
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutGameStateChange.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutGameStateChange.java
index 74ab37b..9c60078 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutGameStateChange.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutGameStateChange.java
@@ -19,6 +19,8 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -52,8 +54,8 @@ public class PacketPlayOutGameStateChange extends PacketOut {
}
}
- private GameStateChangeEvent event;
- private float value;
+ private final GameStateChangeEvent event;
+ private final float value;
public PacketPlayOutGameStateChange(GameStateChangeEvent event, float value) {
this.event = event;
@@ -72,7 +74,7 @@ public class PacketPlayOutGameStateChange extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeByte(event.getId());
output.writeFloat(value);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutHeldItemChange.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutHeldItemChange.java
index 4e7bfad..87f3c95 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutHeldItemChange.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutHeldItemChange.java
@@ -19,6 +19,8 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -40,7 +42,7 @@ public class PacketPlayOutHeldItemChange extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeByte(slot);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutKeepAlive.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutKeepAlive.java
index 505e65f..40697fe 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutKeepAlive.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutKeepAlive.java
@@ -19,13 +19,15 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class PacketPlayOutKeepAlive extends PacketOut {
- private long payload;
+ private final long payload;
public PacketPlayOutKeepAlive(long payload) {
this.payload = payload;
@@ -40,7 +42,7 @@ public class PacketPlayOutKeepAlive extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeLong(payload);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutLogin.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutLogin.java
index 8175daa..db3a7bf 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutLogin.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutLogin.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.registry.RegistryCustom;
import com.loohp.limbo.utils.DataTypeIO;
import com.loohp.limbo.utils.GameMode;
@@ -145,7 +146,7 @@ public class PacketPlayOutLogin extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeInt(entityId);
output.writeBoolean(isHardcore);
DataTypeIO.writeVarInt(output, worlds.size());
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutNamedSoundEffect.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutNamedSoundEffect.java
index d175e84..44e5456 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutNamedSoundEffect.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutNamedSoundEffect.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.sounds.SoundEffect;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.sound.Sound;
@@ -31,14 +32,14 @@ import java.util.Optional;
public class PacketPlayOutNamedSoundEffect extends PacketOut {
- private SoundEffect sound;
- private Sound.Source source;
- private int x;
- private int y;
- private int z;
- private float volume;
- private float pitch;
- private long seed;
+ private final SoundEffect sound;
+ private final Sound.Source source;
+ private final int x;
+ private final int y;
+ private final int z;
+ private final float volume;
+ private final float pitch;
+ private final long seed;
public PacketPlayOutNamedSoundEffect(SoundEffect sound, Sound.Source source, double x, double y, double z, float volume, float pitch, long seed) {
this.sound = sound;
@@ -88,7 +89,7 @@ public class PacketPlayOutNamedSoundEffect extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, 0);
DataTypeIO.writeString(output, sound.getSound().toString(), StandardCharsets.UTF_8);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutOpenWindow.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutOpenWindow.java
index 7ead132..d90cabd 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutOpenWindow.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutOpenWindow.java
@@ -20,6 +20,7 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.registry.BuiltInRegistries;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.text.Component;
@@ -30,9 +31,9 @@ import java.io.IOException;
public class PacketPlayOutOpenWindow extends PacketOut {
- private int containerId;
- private Key type;
- private Component title;
+ private final int containerId;
+ private final Key type;
+ private final Component title;
public PacketPlayOutOpenWindow(int containerId, Key type, Component title) {
this.containerId = containerId;
@@ -57,7 +58,7 @@ public class PacketPlayOutOpenWindow extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, containerId);
DataTypeIO.writeVarInt(output, BuiltInRegistries.MENU_REGISTRY.getId(type));
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerAbilities.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerAbilities.java
index 85f065a..7798fad 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerAbilities.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerAbilities.java
@@ -19,6 +19,8 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -42,9 +44,9 @@ public class PacketPlayOutPlayerAbilities extends PacketOut {
}
}
- private PlayerAbilityFlags[] flags;
- private float flySpeed;
- private float fieldOfField;
+ private final PlayerAbilityFlags[] flags;
+ private final float flySpeed;
+ private final float fieldOfField;
public PacketPlayOutPlayerAbilities(float flySpeed, float fieldOfField, PlayerAbilityFlags... flags) {
this.flags = flags;
@@ -69,7 +71,7 @@ public class PacketPlayOutPlayerAbilities extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
byte value = 0;
for (PlayerAbilityFlags flag : flags) {
value = (byte) (value | flag.getValue());
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerInfo.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerInfo.java
index 9d4b5b7..4c9a2b6 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerInfo.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerInfo.java
@@ -20,6 +20,7 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerInfo.PlayerInfoData.PlayerInfoDataAddPlayer;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import com.loohp.limbo.utils.GameMode;
@@ -42,9 +43,9 @@ public class PacketPlayOutPlayerInfo extends PacketOut {
UPDATE_DISPLAY_NAME;
}
- private EnumSet actions;
- private UUID uuid;
- private PlayerInfoData data;
+ private final EnumSet actions;
+ private final UUID uuid;
+ private final PlayerInfoData data;
public PacketPlayOutPlayerInfo(EnumSet actions, UUID uuid, PlayerInfoData data) {
this.actions = actions;
@@ -69,7 +70,7 @@ public class PacketPlayOutPlayerInfo extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeEnumSet(output, actions, PlayerInfoAction.class);
DataTypeIO.writeVarInt(output, 1);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerListHeaderFooter.java
index b957610..c3a5c6a 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerListHeaderFooter.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerListHeaderFooter.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -28,8 +29,8 @@ import java.io.IOException;
public class PacketPlayOutPlayerListHeaderFooter extends PacketOut{
- private Component header;
- private Component footer;
+ private final Component header;
+ private final Component footer;
public PacketPlayOutPlayerListHeaderFooter(Component header, Component footer) {
this.header = header;
@@ -50,7 +51,7 @@ public class PacketPlayOutPlayerListHeaderFooter extends PacketOut{
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeComponent(output, header);
DataTypeIO.writeComponent(output, footer);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPluginMessaging.java
index ab9fa24..cd2d5d1 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPluginMessaging.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPluginMessaging.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -28,8 +29,8 @@ import java.nio.charset.StandardCharsets;
public class PacketPlayOutPluginMessaging extends PacketOut {
- private String channel;
- private byte[] data;
+ private final String channel;
+ private final byte[] data;
public PacketPlayOutPluginMessaging(String channel, byte[] data) {
this.channel = channel;
@@ -49,7 +50,7 @@ public class PacketPlayOutPluginMessaging extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeString(output, channel, StandardCharsets.UTF_8);
output.write(data);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPositionAndLook.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPositionAndLook.java
index 044c24c..2ca5de9 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPositionAndLook.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPositionAndLook.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -48,13 +49,13 @@ public class PacketPlayOutPositionAndLook extends PacketOut {
}
}
- private double x;
- private double y;
- private double z;
- private float yaw;
- private float pitch;
- private Set flags;
- private int teleportId;
+ private final double x;
+ private final double y;
+ private final double z;
+ private final float yaw;
+ private final float pitch;
+ private final Set flags;
+ private final int teleportId;
public PacketPlayOutPositionAndLook(double x, double y, double z, float yaw, float pitch, int teleportId, PlayerTeleportFlags... flags) {
this.x = x;
@@ -99,7 +100,7 @@ public class PacketPlayOutPositionAndLook extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeDouble(x);
output.writeDouble(y);
output.writeDouble(z);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutRespawn.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutRespawn.java
index 32ecacd..62c0a4f 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutRespawn.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutRespawn.java
@@ -19,14 +19,13 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.registry.RegistryCustom;
import com.loohp.limbo.utils.DataTypeIO;
import com.loohp.limbo.utils.GameMode;
import com.loohp.limbo.world.Environment;
import com.loohp.limbo.world.World;
import net.kyori.adventure.key.Key;
-import net.querz.nbt.tag.CompoundTag;
-import net.querz.nbt.tag.ListTag;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
@@ -35,13 +34,13 @@ import java.nio.charset.StandardCharsets;
public class PacketPlayOutRespawn extends PacketOut {
- private Environment dimension;
- private World world;
- private long hashedSeed;
- private GameMode gamemode;
- private boolean isDebug;
- private boolean isFlat;
- private boolean copyMetaData;
+ private final Environment dimension;
+ private final World world;
+ private final long hashedSeed;
+ private final GameMode gamemode;
+ private final boolean isDebug;
+ private final boolean isFlat;
+ private final boolean copyMetaData;
public PacketPlayOutRespawn(World world, long hashedSeed, GameMode gamemode, boolean isDebug, boolean isFlat, boolean copyMetaData) {
this.dimension = world.getEnvironment();
@@ -86,7 +85,7 @@ public class PacketPlayOutRespawn extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, RegistryCustom.DIMENSION_TYPE.indexOf(world.getEnvironment().getKey()));
DataTypeIO.writeString(output, Key.key(world.getName()).toString(), StandardCharsets.UTF_8);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSetSlot.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSetSlot.java
index c87d221..d61226b 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSetSlot.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSetSlot.java
@@ -20,6 +20,7 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.inventory.ItemStack;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -61,7 +62,7 @@ public class PacketPlayOutSetSlot extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeByte(containerId);
DataTypeIO.writeVarInt(output, stateId);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntity.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntity.java
index 4d6b4d1..566b143 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntity.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntity.java
@@ -20,6 +20,7 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.entity.EntityType;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -29,19 +30,19 @@ import java.util.UUID;
public class PacketPlayOutSpawnEntity extends PacketOut {
- private int entityId;
- private UUID uuid;
- private EntityType type;
- private double x;
- private double y;
- private double z;
- private float pitch;
- private float yaw;
- private float headYaw;
- private int data;
- private short velocityX;
- private short velocityY;
- private short velocityZ;
+ private final int entityId;
+ private final UUID uuid;
+ private final EntityType type;
+ private final double x;
+ private final double y;
+ private final double z;
+ private final float pitch;
+ private final float yaw;
+ private final float headYaw;
+ private final int data;
+ private final short velocityX;
+ private final short velocityY;
+ private final short velocityZ;
public PacketPlayOutSpawnEntity(int entityId, UUID uuid, EntityType type, double x, double y, double z, float pitch, float yaw, float headYaw, int data, short velocityX, short velocityY, short velocityZ) {
this.entityId = entityId;
@@ -116,7 +117,7 @@ public class PacketPlayOutSpawnEntity extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, entityId);
DataTypeIO.writeUUID(output, uuid);
DataTypeIO.writeVarInt(output, type.getTypeId());
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnPosition.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnPosition.java
index fe61514..a06107f 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnPosition.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnPosition.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import com.loohp.limbo.world.BlockPosition;
@@ -28,8 +29,8 @@ import java.io.IOException;
public class PacketPlayOutSpawnPosition extends PacketOut {
- private BlockPosition position;
- private float angle;
+ private final BlockPosition position;
+ private final float angle;
public PacketPlayOutSpawnPosition(BlockPosition position, float angle) {
this.position = position;
@@ -48,7 +49,7 @@ public class PacketPlayOutSpawnPosition extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeBlockPosition(output, position);
output.writeFloat(angle);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutStopSound.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutStopSound.java
index 112d8ae..0630034 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutStopSound.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutStopSound.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.sound.Sound;
@@ -30,8 +31,8 @@ import java.nio.charset.StandardCharsets;
public class PacketPlayOutStopSound extends PacketOut {
- private Key sound;
- private Sound.Source source;
+ private final Key sound;
+ private final Sound.Source source;
public PacketPlayOutStopSound(Key sound, Sound.Source source) {
this.sound = sound;
@@ -51,7 +52,7 @@ public class PacketPlayOutStopSound extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
if (source != null) {
if (sound != null) {
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutTabComplete.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutTabComplete.java
index d0be470..8a9434f 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutTabComplete.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutTabComplete.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import net.kyori.adventure.text.Component;
@@ -30,10 +31,10 @@ import java.util.Optional;
public class PacketPlayOutTabComplete extends PacketOut {
- private int id;
- private int start;
- private int length;
- private TabCompleteMatches[] matches;
+ private final int id;
+ private final int start;
+ private final int length;
+ private final TabCompleteMatches[] matches;
public PacketPlayOutTabComplete(int id, int start, int length, TabCompleteMatches... matches) {
this.id = id;
@@ -63,7 +64,7 @@ public class PacketPlayOutTabComplete extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, id);
DataTypeIO.writeVarInt(output, start);
DataTypeIO.writeVarInt(output, length);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUnloadChunk.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUnloadChunk.java
index cd313a1..9291d51 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUnloadChunk.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUnloadChunk.java
@@ -19,14 +19,16 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class PacketPlayOutUnloadChunk extends PacketOut {
- private int chunkX;
- private int chunkZ;
+ private final int chunkX;
+ private final int chunkZ;
public PacketPlayOutUnloadChunk(int chunkX, int chunkZ) {
this.chunkX = chunkX;
@@ -46,7 +48,7 @@ public class PacketPlayOutUnloadChunk extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeInt(chunkX);
output.writeInt(chunkZ);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUpdateViewPosition.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUpdateViewPosition.java
index 2412797..d8e0e38 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUpdateViewPosition.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUpdateViewPosition.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -27,8 +28,8 @@ import java.io.IOException;
public class PacketPlayOutUpdateViewPosition extends PacketOut {
- private int chunkX;
- private int chunkZ;
+ private final int chunkX;
+ private final int chunkZ;
public PacketPlayOutUpdateViewPosition(int chunkX, int chunkZ) {
this.chunkX = chunkX;
@@ -48,7 +49,7 @@ public class PacketPlayOutUpdateViewPosition extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeVarInt(output, chunkX);
DataTypeIO.writeVarInt(output, chunkZ);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowData.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowData.java
index 4e3874c..6432117 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowData.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowData.java
@@ -19,15 +19,17 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class PacketPlayOutWindowData extends PacketOut {
- private int containerId;
- private int id;
- private int value;
+ private final int containerId;
+ private final int id;
+ private final int value;
public PacketPlayOutWindowData(int containerId, int id, int value) {
this.containerId = containerId;
@@ -52,7 +54,7 @@ public class PacketPlayOutWindowData extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeByte(containerId);
output.writeShort(id);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowItems.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowItems.java
index 0765ef9..2375c45 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowItems.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowItems.java
@@ -20,6 +20,7 @@
package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.inventory.ItemStack;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -29,10 +30,10 @@ import java.util.List;
public class PacketPlayOutWindowItems extends PacketOut {
- private int containerId;
- private int stateId;
- private List items;
- private ItemStack carriedItem;
+ private final int containerId;
+ private final int stateId;
+ private final List items;
+ private final ItemStack carriedItem;
public PacketPlayOutWindowItems(int containerId, int stateId, List items, ItemStack carriedItem) {
this.containerId = containerId;
@@ -62,7 +63,7 @@ public class PacketPlayOutWindowItems extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getPlayOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeByte(containerId);
DataTypeIO.writeVarInt(output, stateId);
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInPing.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInPing.java
index c305a96..fc122f6 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInPing.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInPing.java
@@ -24,7 +24,7 @@ import java.io.IOException;
public class PacketStatusInPing extends PacketIn {
- private long payload;
+ private final long payload;
public PacketStatusInPing(long payload) {
this.payload = payload;
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInRequest.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInRequest.java
index b931d4a..ef92c1f 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInRequest.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInRequest.java
@@ -24,7 +24,6 @@ import java.io.DataInputStream;
public class PacketStatusInRequest extends PacketIn {
public PacketStatusInRequest() {
-
}
public PacketStatusInRequest(DataInputStream in) {
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutPong.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutPong.java
index 44daaa8..b76218e 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutPong.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutPong.java
@@ -19,13 +19,15 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class PacketStatusOutPong extends PacketOut {
- private long payload;
+ private final long payload;
public PacketStatusOutPong(long payload) {
this.payload = payload;
@@ -40,7 +42,7 @@ public class PacketStatusOutPong extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getStatusOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeLong(payload);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutResponse.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutResponse.java
index 9b7e530..fb90740 100644
--- a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutResponse.java
+++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutResponse.java
@@ -19,6 +19,7 @@
package com.loohp.limbo.network.protocol.packets;
+import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import java.io.ByteArrayOutputStream;
@@ -28,7 +29,7 @@ import java.nio.charset.StandardCharsets;
public class PacketStatusOutResponse extends PacketOut {
- private String json;
+ private final String json;
public PacketStatusOutResponse(String json) {
this.json = json;
@@ -43,7 +44,7 @@ public class PacketStatusOutResponse extends PacketOut {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(buffer);
- output.writeByte(Packet.getStatusOut().get(getClass()));
+ output.writeByte(PacketRegistry.getPacketId(getClass()));
DataTypeIO.writeString(output, json, StandardCharsets.UTF_8);
return buffer.toByteArray();
diff --git a/src/main/java/com/loohp/limbo/registry/PacketRegistry.java b/src/main/java/com/loohp/limbo/registry/PacketRegistry.java
new file mode 100644
index 0000000..f4f9ee4
--- /dev/null
+++ b/src/main/java/com/loohp/limbo/registry/PacketRegistry.java
@@ -0,0 +1,349 @@
+/*
+ * This file is part of Limbo.
+ *
+ * Copyright (C) 2024. LoohpJames
+ * Copyright (C) 2024. Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.loohp.limbo.registry;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+import com.loohp.limbo.Limbo;
+import com.loohp.limbo.network.ClientConnection;
+import com.loohp.limbo.network.protocol.packets.ClientboundChunkBatchFinishedPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundChunkBatchStartPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundClearTitlesPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundFinishConfigurationPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundLevelChunkWithLightPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundRegistryDataPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundResourcePackPushPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundSetActionBarTextPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundSetSubtitleTextPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundSetTitleTextPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundSetTitlesAnimationPacket;
+import com.loohp.limbo.network.protocol.packets.ClientboundSystemChatPacket;
+import com.loohp.limbo.network.protocol.packets.Packet;
+import com.loohp.limbo.network.protocol.packets.PacketHandshakingIn;
+import com.loohp.limbo.network.protocol.packets.PacketLoginInLoginStart;
+import com.loohp.limbo.network.protocol.packets.PacketLoginInPluginMessaging;
+import com.loohp.limbo.network.protocol.packets.PacketLoginOutDisconnect;
+import com.loohp.limbo.network.protocol.packets.PacketLoginOutLoginSuccess;
+import com.loohp.limbo.network.protocol.packets.PacketLoginOutPluginMessaging;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInBlockDig;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInBlockPlace;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInChat;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInCloseWindow;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInHeldItemChange;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInItemName;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInKeepAlive;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInPickItem;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInPluginMessaging;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInPosition;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInPositionAndLook;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInRotation;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInSetCreativeSlot;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInTabComplete;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInUseItem;
+import com.loohp.limbo.network.protocol.packets.PacketPlayInWindowClick;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutBoss;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutCloseWindow;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutDeclareCommands;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutDisconnect;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityDestroy;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityMetadata;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameStateChange;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutKeepAlive;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutLogin;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutNamedSoundEffect;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutOpenWindow;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerAbilities;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerInfo;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerListHeaderFooter;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutPluginMessaging;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutPositionAndLook;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutRespawn;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutSetSlot;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutSpawnEntity;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutSpawnPosition;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutStopSound;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutTabComplete;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutUnloadChunk;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutUpdateViewPosition;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutWindowData;
+import com.loohp.limbo.network.protocol.packets.PacketPlayOutWindowItems;
+import com.loohp.limbo.network.protocol.packets.PacketStatusInPing;
+import com.loohp.limbo.network.protocol.packets.PacketStatusInRequest;
+import com.loohp.limbo.network.protocol.packets.PacketStatusOutPong;
+import com.loohp.limbo.network.protocol.packets.PacketStatusOutResponse;
+import com.loohp.limbo.network.protocol.packets.ServerboundChatCommandPacket;
+import com.loohp.limbo.network.protocol.packets.ServerboundFinishConfigurationPacket;
+import com.loohp.limbo.network.protocol.packets.ServerboundLoginAcknowledgedPacket;
+import com.loohp.limbo.network.protocol.packets.ServerboundResourcePackPacket;
+import net.kyori.adventure.key.Key;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+@SuppressWarnings("PatternValidation")
+public class PacketRegistry {
+
+ private static final Map>> ID_REGISTRY = new HashMap<>();
+ private static final BiMap, PacketClassInfo> CLASS_REGISTRY = HashBiMap.create();
+
+ static {
+ String name = "reports/packets.json";
+
+ InputStream inputStream = Limbo.class.getClassLoader().getResourceAsStream(name);
+ if (inputStream == null) {
+ throw new RuntimeException("Failed to load " + name + " from jar!");
+ }
+ try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) {
+ JSONObject json = (JSONObject) new JSONParser().parse(reader);
+ for (Object objKey : json.keySet()) {
+ String key = (String) objKey;
+ NetworkPhase networkPhase = NetworkPhase.fromName(key);
+ Map> mappings = new HashMap<>();
+ JSONObject jsonMappings = (JSONObject) json.get(key);
+ for (Object objBoundKey : jsonMappings.keySet()) {
+ String boundKey = (String) objBoundKey;
+ PacketBound packetBound = PacketBound.fromName(boundKey);
+ BiMap idMapping = HashBiMap.create();
+ JSONObject jsonIds = (JSONObject) jsonMappings.get(boundKey);
+ for (Object objPacketKey : jsonIds.keySet()) {
+ String packetKey = (String) objPacketKey;
+ idMapping.put(Key.key(packetKey), (int) (long) ((JSONObject) jsonIds.get(packetKey)).get("protocol_id"));
+ }
+ mappings.put(packetBound, idMapping);
+ }
+ ID_REGISTRY.put(networkPhase, mappings);
+ }
+ } catch (IOException | ParseException e) {
+ e.printStackTrace();
+ }
+
+ registerClass(PacketHandshakingIn.class, "minecraft:intention", NetworkPhase.HANDSHAKE, PacketBound.SERVERBOUND);
+
+ registerClass(PacketStatusInRequest.class, "minecraft:status_request", NetworkPhase.STATUS, PacketBound.SERVERBOUND);
+ registerClass(PacketStatusInPing.class, "minecraft:ping_request", NetworkPhase.STATUS, PacketBound.SERVERBOUND);
+
+ registerClass(PacketStatusOutResponse.class, "minecraft:status_response", NetworkPhase.STATUS, PacketBound.CLIENTBOUND);
+ registerClass(PacketStatusOutPong.class, "minecraft:pong_response", NetworkPhase.STATUS, PacketBound.CLIENTBOUND);
+
+ registerClass(PacketLoginInLoginStart.class, "minecraft:hello", NetworkPhase.LOGIN, PacketBound.SERVERBOUND);
+ registerClass(PacketLoginInPluginMessaging.class, "minecraft:custom_query_answer", NetworkPhase.LOGIN, PacketBound.SERVERBOUND);
+ registerClass(ServerboundLoginAcknowledgedPacket.class, "minecraft:login_acknowledged", NetworkPhase.LOGIN, PacketBound.SERVERBOUND);
+
+ registerClass(PacketLoginOutLoginSuccess.class, "minecraft:game_profile", NetworkPhase.LOGIN, PacketBound.CLIENTBOUND);
+ registerClass(PacketLoginOutDisconnect.class, "minecraft:login_disconnect", NetworkPhase.LOGIN, PacketBound.CLIENTBOUND);
+ registerClass(PacketLoginOutPluginMessaging.class, "minecraft:custom_query", NetworkPhase.LOGIN, PacketBound.CLIENTBOUND);
+
+ registerClass(ServerboundFinishConfigurationPacket.class, "minecraft:finish_configuration", NetworkPhase.CONFIGURATION, PacketBound.SERVERBOUND);
+
+ registerClass(ClientboundRegistryDataPacket.class, "minecraft:registry_data", NetworkPhase.CONFIGURATION, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundFinishConfigurationPacket.class, "minecraft:finish_configuration", NetworkPhase.CONFIGURATION, PacketBound.CLIENTBOUND);
+
+ registerClass(PacketPlayInKeepAlive.class, "minecraft:keep_alive", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(ServerboundChatCommandPacket.class, "minecraft:chat_command", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInChat.class, "minecraft:chat", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInPosition.class, "minecraft:move_player_pos", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInPositionAndLook.class, "minecraft:move_player_pos_rot", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInRotation.class, "minecraft:move_player_rot", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInPluginMessaging.class, "minecraft:custom_payload", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInTabComplete.class, "minecraft:command_suggestion", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInHeldItemChange.class, "minecraft:set_carried_item", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(ServerboundResourcePackPacket.class, "minecraft:resource_pack", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInUseItem.class, "minecraft:use_item_on", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInBlockPlace.class, "minecraft:use_item", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInSetCreativeSlot.class, "minecraft:set_creative_mode_slot", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInWindowClick.class, "minecraft:container_click", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInCloseWindow.class, "minecraft:container_close", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInPickItem.class, "minecraft:pick_item", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInBlockDig.class, "minecraft:player_action", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+ registerClass(PacketPlayInItemName.class, "minecraft:rename_item", NetworkPhase.PLAY, PacketBound.SERVERBOUND);
+
+ registerClass(PacketPlayOutLogin.class, "minecraft:login", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutPositionAndLook.class, "minecraft:player_position", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutSpawnPosition.class, "minecraft:set_default_spawn_position", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundSystemChatPacket.class, "minecraft:system_chat", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutPlayerAbilities.class, "minecraft:player_abilities", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundLevelChunkWithLightPacket.class, "minecraft:level_chunk_with_light", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutUnloadChunk.class, "minecraft:forget_level_chunk", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutKeepAlive.class, "minecraft:keep_alive", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutGameStateChange.class, "minecraft:game_event", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutPlayerInfo.class, "minecraft:player_info_update", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutUpdateViewPosition.class, "minecraft:set_chunk_cache_center", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutDisconnect.class, "minecraft:disconnect", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutPluginMessaging.class, "minecraft:custom_payload", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutTabComplete.class, "minecraft:command_suggestions", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutDeclareCommands.class, "minecraft:commands", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutRespawn.class, "minecraft:respawn", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutEntityDestroy.class, "minecraft:remove_entities", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutEntityMetadata.class, "minecraft:set_entity_data", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutSpawnEntity.class, "minecraft:add_entity", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutHeldItemChange.class, "minecraft:set_carried_item", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutPlayerListHeaderFooter.class, "minecraft:tab_list", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundResourcePackPushPacket.class, "minecraft:resource_pack_push", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundSetTitlesAnimationPacket.class, "minecraft:set_titles_animation", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundSetTitleTextPacket.class, "minecraft:set_title_text", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundSetSubtitleTextPacket.class, "minecraft:set_subtitle_text", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundSetActionBarTextPacket.class, "minecraft:set_action_bar_text", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundClearTitlesPacket.class, "minecraft:clear_titles", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutBoss.class, "minecraft:boss_event", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutNamedSoundEffect.class, "minecraft:sound", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutStopSound.class, "minecraft:stop_sound", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutWindowItems.class, "minecraft:container_set_content", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutSetSlot.class, "minecraft:container_set_slot", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutOpenWindow.class, "minecraft:open_screen", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutCloseWindow.class, "minecraft:container_close", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(PacketPlayOutWindowData.class, "minecraft:container_set_data", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundChunkBatchFinishedPacket.class, "minecraft:chunk_batch_finished", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ registerClass(ClientboundChunkBatchStartPacket.class, "minecraft:chunk_batch_start", NetworkPhase.PLAY, PacketBound.CLIENTBOUND);
+ }
+
+ private static void registerClass(Class extends Packet> packetClass, String key, NetworkPhase networkPhase, PacketBound packetBound) {
+ CLASS_REGISTRY.put(packetClass, new PacketClassInfo(Key.key(key), networkPhase, packetBound));
+ }
+
+ public static PacketClassInfo getPacketInfo(Class extends Packet> packetClass) {
+ return CLASS_REGISTRY.get(packetClass);
+ }
+
+ public static int getPacketId(Class extends Packet> packetClass) {
+ PacketClassInfo info = getPacketInfo(packetClass);
+ return ID_REGISTRY.get(info.getNetworkPhase()).get(info.getPacketBound()).get(info.getKey());
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Class extends T> getPacketClass(int packetId, NetworkPhase networkPhase, PacketBound packetBound) {
+ Key key = ID_REGISTRY.get(networkPhase).get(packetBound).inverse().get(packetId);
+ return (Class extends T>) CLASS_REGISTRY.inverse().get(new PacketClassInfo(key, networkPhase, packetBound));
+ }
+
+ public enum NetworkPhase {
+
+ HANDSHAKE("handshake", ClientConnection.ClientState.HANDSHAKE),
+ STATUS("status", ClientConnection.ClientState.STATUS),
+ CONFIGURATION("configuration", ClientConnection.ClientState.CONFIGURATION),
+ LOGIN("login", ClientConnection.ClientState.LOGIN),
+ PLAY("play", ClientConnection.ClientState.PLAY);
+
+ public static NetworkPhase fromName(String name) {
+ for (NetworkPhase phase : values()) {
+ if (phase.getName().equals(name)) {
+ return phase;
+ }
+ }
+ return null;
+ }
+
+ public static NetworkPhase fromClientState(ClientConnection.ClientState clientState) {
+ for (NetworkPhase phase : values()) {
+ if (phase.getClientState().equals(clientState)) {
+ return phase;
+ }
+ }
+ return null;
+ }
+
+ private final String name;
+ private final ClientConnection.ClientState clientState;
+
+ NetworkPhase(String name, ClientConnection.ClientState clientState) {
+ this.name = name;
+ this.clientState = clientState;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public ClientConnection.ClientState getClientState() {
+ return clientState;
+ }
+ }
+
+ public enum PacketBound {
+
+ SERVERBOUND("serverbound"),
+ CLIENTBOUND("clientbound");
+
+ public static PacketBound fromName(String name) {
+ for (PacketBound bound : values()) {
+ if (bound.getName().equals(name)) {
+ return bound;
+ }
+ }
+ return null;
+ }
+
+ private final String name;
+
+ PacketBound(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+ }
+
+ public static class PacketClassInfo {
+ private final Key key;
+ private final NetworkPhase networkPhase;
+ private final PacketBound packetBound;
+
+ public PacketClassInfo(Key key, NetworkPhase networkPhase, PacketBound packetBound) {
+ this.key = key;
+ this.networkPhase = networkPhase;
+ this.packetBound = packetBound;
+ }
+
+ public Key getKey() {
+ return key;
+ }
+
+ public NetworkPhase getNetworkPhase() {
+ return networkPhase;
+ }
+
+ public PacketBound getPacketBound() {
+ return packetBound;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PacketClassInfo that = (PacketClassInfo) o;
+ return Objects.equals(key, that.key) && networkPhase == that.networkPhase && packetBound == that.packetBound;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key, networkPhase, packetBound);
+ }
+ }
+
+}
diff --git a/src/main/java/com/loohp/limbo/registry/RegistryCustom.java b/src/main/java/com/loohp/limbo/registry/RegistryCustom.java
index 34c7d46..5e908a2 100644
--- a/src/main/java/com/loohp/limbo/registry/RegistryCustom.java
+++ b/src/main/java/com/loohp/limbo/registry/RegistryCustom.java
@@ -32,25 +32,47 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Pattern;
public class RegistryCustom {
- public static final RegistryCustom WORLDGEN_BIOME = new RegistryCustom("worldgen/biome");
- public static final RegistryCustom CHAT_TYPE = new RegistryCustom("chat_type");
- public static final RegistryCustom TRIM_PATTERN = new RegistryCustom("trim_pattern");
- public static final RegistryCustom TRIM_MATERIAL = new RegistryCustom("trim_material");
- public static final RegistryCustom WOLF_VARIANT = new RegistryCustom("wolf_variant");
- public static final RegistryCustom DIMENSION_TYPE = new RegistryCustom("dimension_type");
- public static final RegistryCustom DAMAGE_TYPE = new RegistryCustom("damage_type");
- public static final RegistryCustom BANNER_PATTERN = new RegistryCustom("banner_pattern");
+ private static final Map REGISTRIES = new HashMap<>();
+
+ public static final RegistryCustom ADVANCEMENT = register("advancement");
+ public static final RegistryCustom BANNER_PATTERN = register("banner_pattern");
+ public static final RegistryCustom CHAT_TYPE = register("chat_type");
+ public static final RegistryCustom DAMAGE_TYPE = register("damage_type");
+ public static final RegistryCustom DIMENSION_TYPE = register("dimension_type");
+ public static final RegistryCustom ENCHANTMENT = register("enchantment");
+ public static final RegistryCustom JUKEBOX_SONG = register("jukebox_song");
+ public static final RegistryCustom PAINTING_VARIANT = register("painting_variant");
+ public static final RegistryCustom TRIM_MATERIAL = register("trim_material");
+ public static final RegistryCustom TRIM_PATTERN = register("trim_pattern");
+ public static final RegistryCustom WOLF_VARIANT = register("wolf_variant");
+ public static final RegistryCustom WORLDGEN_BIOME = register("worldgen/biome");
+
+ private static RegistryCustom register(String identifier) {
+ RegistryCustom registryCustom = new RegistryCustom(identifier);
+ REGISTRIES.put(registryCustom.getIdentifier(), registryCustom);
+ return registryCustom;
+ }
+
+ public static RegistryCustom getRegistry(Key identifier) {
+ return REGISTRIES.get(identifier);
+ }
+
+ public static Collection getRegistries() {
+ return REGISTRIES.values();
+ }
private final Key identifier;
private final Map entries;
- public RegistryCustom(Key identifier, Map entries) {
+ private RegistryCustom(Key identifier, Map entries) {
this.identifier = identifier;
this.entries = entries;
}
diff --git a/src/main/resources/data/minecraft/advancement/adventure/adventuring_time.json b/src/main/resources/data/minecraft/advancement/adventure/adventuring_time.json
new file mode 100644
index 0000000..698b374
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/adventuring_time.json
@@ -0,0 +1,1031 @@
+{
+ "parent": "minecraft:adventure/sleep_in_bed",
+ "criteria": {
+ "minecraft:badlands": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:badlands"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:bamboo_jungle": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:bamboo_jungle"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:beach": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:beach"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:birch_forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:birch_forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:cherry_grove": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:cherry_grove"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:cold_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:cold_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:dark_forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:dark_forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:deep_cold_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:deep_cold_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:deep_dark": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:deep_dark"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:deep_frozen_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:deep_frozen_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:deep_lukewarm_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:deep_lukewarm_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:deep_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:deep_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:desert": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:desert"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:dripstone_caves": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:dripstone_caves"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:eroded_badlands": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:eroded_badlands"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:flower_forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:flower_forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:frozen_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:frozen_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:frozen_peaks": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:frozen_peaks"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:frozen_river": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:frozen_river"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:grove": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:grove"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:ice_spikes": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:ice_spikes"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:jagged_peaks": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:jagged_peaks"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:jungle": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:jungle"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:lukewarm_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:lukewarm_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:lush_caves": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:lush_caves"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:mangrove_swamp": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:mangrove_swamp"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:meadow": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:meadow"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:mushroom_fields": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:mushroom_fields"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:old_growth_birch_forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:old_growth_birch_forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:old_growth_pine_taiga": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:old_growth_pine_taiga"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:old_growth_spruce_taiga": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:old_growth_spruce_taiga"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:plains": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:plains"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:river": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:river"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:savanna": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:savanna"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:savanna_plateau": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:savanna_plateau"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:snowy_beach": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:snowy_beach"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:snowy_plains": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:snowy_plains"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:snowy_slopes": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:snowy_slopes"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:snowy_taiga": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:snowy_taiga"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:sparse_jungle": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:sparse_jungle"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:stony_peaks": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:stony_peaks"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:stony_shore": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:stony_shore"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:sunflower_plains": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:sunflower_plains"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:swamp": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:swamp"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:taiga": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:taiga"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:warm_ocean": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:warm_ocean"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:windswept_forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:windswept_forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:windswept_gravelly_hills": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:windswept_gravelly_hills"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:windswept_hills": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:windswept_hills"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:windswept_savanna": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:windswept_savanna"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:wooded_badlands": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:wooded_badlands"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.adventuring_time.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:diamond_boots"
+ },
+ "title": {
+ "translate": "advancements.adventure.adventuring_time.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:mushroom_fields"
+ ],
+ [
+ "minecraft:deep_frozen_ocean"
+ ],
+ [
+ "minecraft:frozen_ocean"
+ ],
+ [
+ "minecraft:deep_cold_ocean"
+ ],
+ [
+ "minecraft:cold_ocean"
+ ],
+ [
+ "minecraft:deep_ocean"
+ ],
+ [
+ "minecraft:ocean"
+ ],
+ [
+ "minecraft:deep_lukewarm_ocean"
+ ],
+ [
+ "minecraft:lukewarm_ocean"
+ ],
+ [
+ "minecraft:warm_ocean"
+ ],
+ [
+ "minecraft:stony_shore"
+ ],
+ [
+ "minecraft:swamp"
+ ],
+ [
+ "minecraft:mangrove_swamp"
+ ],
+ [
+ "minecraft:snowy_slopes"
+ ],
+ [
+ "minecraft:snowy_plains"
+ ],
+ [
+ "minecraft:snowy_beach"
+ ],
+ [
+ "minecraft:windswept_gravelly_hills"
+ ],
+ [
+ "minecraft:grove"
+ ],
+ [
+ "minecraft:windswept_hills"
+ ],
+ [
+ "minecraft:snowy_taiga"
+ ],
+ [
+ "minecraft:windswept_forest"
+ ],
+ [
+ "minecraft:taiga"
+ ],
+ [
+ "minecraft:plains"
+ ],
+ [
+ "minecraft:meadow"
+ ],
+ [
+ "minecraft:beach"
+ ],
+ [
+ "minecraft:forest"
+ ],
+ [
+ "minecraft:old_growth_spruce_taiga"
+ ],
+ [
+ "minecraft:flower_forest"
+ ],
+ [
+ "minecraft:birch_forest"
+ ],
+ [
+ "minecraft:dark_forest"
+ ],
+ [
+ "minecraft:savanna_plateau"
+ ],
+ [
+ "minecraft:savanna"
+ ],
+ [
+ "minecraft:jungle"
+ ],
+ [
+ "minecraft:badlands"
+ ],
+ [
+ "minecraft:desert"
+ ],
+ [
+ "minecraft:wooded_badlands"
+ ],
+ [
+ "minecraft:jagged_peaks"
+ ],
+ [
+ "minecraft:stony_peaks"
+ ],
+ [
+ "minecraft:frozen_river"
+ ],
+ [
+ "minecraft:river"
+ ],
+ [
+ "minecraft:ice_spikes"
+ ],
+ [
+ "minecraft:old_growth_pine_taiga"
+ ],
+ [
+ "minecraft:sunflower_plains"
+ ],
+ [
+ "minecraft:old_growth_birch_forest"
+ ],
+ [
+ "minecraft:sparse_jungle"
+ ],
+ [
+ "minecraft:bamboo_jungle"
+ ],
+ [
+ "minecraft:eroded_badlands"
+ ],
+ [
+ "minecraft:windswept_savanna"
+ ],
+ [
+ "minecraft:cherry_grove"
+ ],
+ [
+ "minecraft:frozen_peaks"
+ ],
+ [
+ "minecraft:dripstone_caves"
+ ],
+ [
+ "minecraft:lush_caves"
+ ],
+ [
+ "minecraft:deep_dark"
+ ]
+ ],
+ "rewards": {
+ "experience": 500
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/arbalistic.json b/src/main/resources/data/minecraft/advancement/adventure/arbalistic.json
new file mode 100644
index 0000000..e561887
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/arbalistic.json
@@ -0,0 +1,34 @@
+{
+ "parent": "minecraft:adventure/ol_betsy",
+ "criteria": {
+ "arbalistic": {
+ "conditions": {
+ "unique_entity_types": 5
+ },
+ "trigger": "minecraft:killed_by_crossbow"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.arbalistic.description"
+ },
+ "frame": "challenge",
+ "hidden": true,
+ "icon": {
+ "count": 1,
+ "id": "minecraft:crossbow"
+ },
+ "title": {
+ "translate": "advancements.adventure.arbalistic.title"
+ }
+ },
+ "requirements": [
+ [
+ "arbalistic"
+ ]
+ ],
+ "rewards": {
+ "experience": 85
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/avoid_vibration.json b/src/main/resources/data/minecraft/advancement/adventure/avoid_vibration.json
new file mode 100644
index 0000000..4eeb713
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/avoid_vibration.json
@@ -0,0 +1,26 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "avoid_vibration": {
+ "trigger": "minecraft:avoid_vibration"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.avoid_vibration.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:sculk_sensor"
+ },
+ "title": {
+ "translate": "advancements.adventure.avoid_vibration.title"
+ }
+ },
+ "requirements": [
+ [
+ "avoid_vibration"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/blowback.json b/src/main/resources/data/minecraft/advancement/adventure/blowback.json
new file mode 100644
index 0000000..2426093
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/blowback.json
@@ -0,0 +1,52 @@
+{
+ "parent": "minecraft:adventure/minecraft_trials_edition",
+ "criteria": {
+ "blowback": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:breeze"
+ }
+ }
+ ],
+ "killing_blow": {
+ "direct_entity": {
+ "type": "minecraft:breeze_wind_charge"
+ },
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_projectile"
+ }
+ ]
+ }
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.blowback.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:wind_charge"
+ },
+ "title": {
+ "translate": "advancements.adventure.blowback.title"
+ }
+ },
+ "requirements": [
+ [
+ "blowback"
+ ]
+ ],
+ "rewards": {
+ "experience": 40
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/brush_armadillo.json b/src/main/resources/data/minecraft/advancement/adventure/brush_armadillo.json
new file mode 100644
index 0000000..ac8d193
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/brush_armadillo.json
@@ -0,0 +1,40 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "brush_armadillo": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:armadillo"
+ }
+ }
+ ],
+ "item": {
+ "items": "minecraft:brush"
+ }
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.brush_armadillo.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:armadillo_scute"
+ },
+ "title": {
+ "translate": "advancements.adventure.brush_armadillo.title"
+ }
+ },
+ "requirements": [
+ [
+ "brush_armadillo"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/bullseye.json b/src/main/resources/data/minecraft/advancement/adventure/bullseye.json
new file mode 100644
index 0000000..2d63571
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/bullseye.json
@@ -0,0 +1,46 @@
+{
+ "parent": "minecraft:adventure/shoot_arrow",
+ "criteria": {
+ "bullseye": {
+ "conditions": {
+ "projectile": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "distance": {
+ "horizontal": {
+ "min": 30.0
+ }
+ }
+ }
+ }
+ ],
+ "signal_strength": 15
+ },
+ "trigger": "minecraft:target_hit"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.bullseye.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:target"
+ },
+ "title": {
+ "translate": "advancements.adventure.bullseye.title"
+ }
+ },
+ "requirements": [
+ [
+ "bullseye"
+ ]
+ ],
+ "rewards": {
+ "experience": 50
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/craft_decorated_pot_using_only_sherds.json b/src/main/resources/data/minecraft/advancement/adventure/craft_decorated_pot_using_only_sherds.json
new file mode 100644
index 0000000..8f661b4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/craft_decorated_pot_using_only_sherds.json
@@ -0,0 +1,51 @@
+{
+ "parent": "minecraft:adventure/salvage_sherd",
+ "criteria": {
+ "pot_crafted_using_only_sherds": {
+ "conditions": {
+ "ingredients": [
+ {
+ "items": "#minecraft:decorated_pot_sherds"
+ },
+ {
+ "items": "#minecraft:decorated_pot_sherds"
+ },
+ {
+ "items": "#minecraft:decorated_pot_sherds"
+ },
+ {
+ "items": "#minecraft:decorated_pot_sherds"
+ }
+ ],
+ "recipe_id": "minecraft:decorated_pot"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.craft_decorated_pot_using_only_sherds.description"
+ },
+ "icon": {
+ "components": {
+ "minecraft:pot_decorations": [
+ "minecraft:brick",
+ "minecraft:heart_pottery_sherd",
+ "minecraft:brick",
+ "minecraft:explorer_pottery_sherd"
+ ]
+ },
+ "count": 1,
+ "id": "minecraft:decorated_pot"
+ },
+ "title": {
+ "translate": "advancements.adventure.craft_decorated_pot_using_only_sherds.title"
+ }
+ },
+ "requirements": [
+ [
+ "pot_crafted_using_only_sherds"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/crafters_crafting_crafters.json b/src/main/resources/data/minecraft/advancement/adventure/crafters_crafting_crafters.json
new file mode 100644
index 0000000..5ffe36e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/crafters_crafting_crafters.json
@@ -0,0 +1,29 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "crafter_crafted_crafter": {
+ "conditions": {
+ "recipe_id": "minecraft:crafter"
+ },
+ "trigger": "minecraft:crafter_recipe_crafted"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.crafters_crafting_crafters.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:crafter"
+ },
+ "title": {
+ "translate": "advancements.adventure.crafters_crafting_crafters.title"
+ }
+ },
+ "requirements": [
+ [
+ "crafter_crafted_crafter"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/fall_from_world_height.json b/src/main/resources/data/minecraft/advancement/adventure/fall_from_world_height.json
new file mode 100644
index 0000000..8af2284
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/fall_from_world_height.json
@@ -0,0 +1,55 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "fall_from_world_height": {
+ "conditions": {
+ "distance": {
+ "y": {
+ "min": 379.0
+ }
+ },
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "position": {
+ "y": {
+ "max": -59.0
+ }
+ }
+ }
+ }
+ }
+ ],
+ "start_position": {
+ "position": {
+ "y": {
+ "min": 319.0
+ }
+ }
+ }
+ },
+ "trigger": "minecraft:fall_from_height"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.fall_from_world_height.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:water_bucket"
+ },
+ "title": {
+ "translate": "advancements.adventure.fall_from_world_height.title"
+ }
+ },
+ "requirements": [
+ [
+ "fall_from_world_height"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/hero_of_the_village.json b/src/main/resources/data/minecraft/advancement/adventure/hero_of_the_village.json
new file mode 100644
index 0000000..21a4bb0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/hero_of_the_village.json
@@ -0,0 +1,69 @@
+{
+ "parent": "minecraft:adventure/voluntary_exile",
+ "criteria": {
+ "hero_of_the_village": {
+ "trigger": "minecraft:hero_of_the_village"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.hero_of_the_village.description"
+ },
+ "frame": "challenge",
+ "hidden": true,
+ "icon": {
+ "components": {
+ "minecraft:banner_patterns": [
+ {
+ "color": "cyan",
+ "pattern": "minecraft:rhombus"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:stripe_bottom"
+ },
+ {
+ "color": "gray",
+ "pattern": "minecraft:stripe_center"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:border"
+ },
+ {
+ "color": "black",
+ "pattern": "minecraft:stripe_middle"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:half_horizontal"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:circle"
+ },
+ {
+ "color": "black",
+ "pattern": "minecraft:border"
+ }
+ ],
+ "minecraft:hide_additional_tooltip": {},
+ "minecraft:item_name": "{\"color\":\"gold\",\"translate\":\"block.minecraft.ominous_banner\"}"
+ },
+ "count": 1,
+ "id": "minecraft:white_banner"
+ },
+ "title": {
+ "translate": "advancements.adventure.hero_of_the_village.title"
+ }
+ },
+ "requirements": [
+ [
+ "hero_of_the_village"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/honey_block_slide.json b/src/main/resources/data/minecraft/advancement/adventure/honey_block_slide.json
new file mode 100644
index 0000000..e665dbd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/honey_block_slide.json
@@ -0,0 +1,29 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "honey_block_slide": {
+ "conditions": {
+ "block": "minecraft:honey_block"
+ },
+ "trigger": "minecraft:slide_down_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.honey_block_slide.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:honey_block"
+ },
+ "title": {
+ "translate": "advancements.adventure.honey_block_slide.title"
+ }
+ },
+ "requirements": [
+ [
+ "honey_block_slide"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/kill_a_mob.json b/src/main/resources/data/minecraft/advancement/adventure/kill_a_mob.json
new file mode 100644
index 0000000..85ac6c8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/kill_a_mob.json
@@ -0,0 +1,562 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "minecraft:blaze": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:blaze"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:bogged": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:bogged"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:breeze": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:breeze"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:cave_spider": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:cave_spider"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:creeper": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:creeper"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:drowned": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:drowned"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:elder_guardian": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:elder_guardian"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:ender_dragon": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ender_dragon"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:enderman": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:enderman"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:endermite": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:endermite"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:evoker": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:evoker"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:ghast": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ghast"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:guardian": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:guardian"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:hoglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:hoglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:husk": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:husk"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:magma_cube": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:magma_cube"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:phantom": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:phantom"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:piglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:piglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:piglin_brute": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:piglin_brute"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:pillager": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:pillager"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:ravager": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ravager"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:shulker": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:shulker"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:silverfish": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:silverfish"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:skeleton": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:skeleton"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:slime": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:slime"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:spider": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:spider"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:stray": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:stray"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:vex": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:vex"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:vindicator": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:vindicator"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:witch": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:witch"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:wither": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wither"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:wither_skeleton": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wither_skeleton"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zoglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zoglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zombie": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zombie"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zombie_villager": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zombie_villager"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zombified_piglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zombified_piglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.kill_a_mob.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:iron_sword"
+ },
+ "title": {
+ "translate": "advancements.adventure.kill_a_mob.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:blaze",
+ "minecraft:bogged",
+ "minecraft:breeze",
+ "minecraft:cave_spider",
+ "minecraft:creeper",
+ "minecraft:drowned",
+ "minecraft:elder_guardian",
+ "minecraft:ender_dragon",
+ "minecraft:enderman",
+ "minecraft:endermite",
+ "minecraft:evoker",
+ "minecraft:ghast",
+ "minecraft:guardian",
+ "minecraft:hoglin",
+ "minecraft:husk",
+ "minecraft:magma_cube",
+ "minecraft:phantom",
+ "minecraft:piglin",
+ "minecraft:piglin_brute",
+ "minecraft:pillager",
+ "minecraft:ravager",
+ "minecraft:shulker",
+ "minecraft:silverfish",
+ "minecraft:skeleton",
+ "minecraft:slime",
+ "minecraft:spider",
+ "minecraft:stray",
+ "minecraft:vex",
+ "minecraft:vindicator",
+ "minecraft:witch",
+ "minecraft:wither_skeleton",
+ "minecraft:wither",
+ "minecraft:zoglin",
+ "minecraft:zombie_villager",
+ "minecraft:zombie",
+ "minecraft:zombified_piglin"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/kill_all_mobs.json b/src/main/resources/data/minecraft/advancement/adventure/kill_all_mobs.json
new file mode 100644
index 0000000..e7ffa09
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/kill_all_mobs.json
@@ -0,0 +1,636 @@
+{
+ "parent": "minecraft:adventure/kill_a_mob",
+ "criteria": {
+ "minecraft:blaze": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:blaze"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:bogged": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:bogged"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:breeze": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:breeze"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:cave_spider": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:cave_spider"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:creeper": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:creeper"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:drowned": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:drowned"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:elder_guardian": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:elder_guardian"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:ender_dragon": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ender_dragon"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:enderman": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:enderman"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:endermite": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:endermite"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:evoker": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:evoker"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:ghast": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ghast"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:guardian": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:guardian"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:hoglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:hoglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:husk": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:husk"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:magma_cube": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:magma_cube"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:phantom": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:phantom"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:piglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:piglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:piglin_brute": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:piglin_brute"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:pillager": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:pillager"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:ravager": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ravager"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:shulker": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:shulker"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:silverfish": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:silverfish"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:skeleton": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:skeleton"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:slime": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:slime"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:spider": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:spider"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:stray": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:stray"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:vex": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:vex"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:vindicator": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:vindicator"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:witch": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:witch"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:wither": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wither"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:wither_skeleton": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wither_skeleton"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zoglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zoglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zombie": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zombie"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zombie_villager": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zombie_villager"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ },
+ "minecraft:zombified_piglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:zombified_piglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.kill_all_mobs.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:diamond_sword"
+ },
+ "title": {
+ "translate": "advancements.adventure.kill_all_mobs.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:blaze"
+ ],
+ [
+ "minecraft:bogged"
+ ],
+ [
+ "minecraft:breeze"
+ ],
+ [
+ "minecraft:cave_spider"
+ ],
+ [
+ "minecraft:creeper"
+ ],
+ [
+ "minecraft:drowned"
+ ],
+ [
+ "minecraft:elder_guardian"
+ ],
+ [
+ "minecraft:ender_dragon"
+ ],
+ [
+ "minecraft:enderman"
+ ],
+ [
+ "minecraft:endermite"
+ ],
+ [
+ "minecraft:evoker"
+ ],
+ [
+ "minecraft:ghast"
+ ],
+ [
+ "minecraft:guardian"
+ ],
+ [
+ "minecraft:hoglin"
+ ],
+ [
+ "minecraft:husk"
+ ],
+ [
+ "minecraft:magma_cube"
+ ],
+ [
+ "minecraft:phantom"
+ ],
+ [
+ "minecraft:piglin"
+ ],
+ [
+ "minecraft:piglin_brute"
+ ],
+ [
+ "minecraft:pillager"
+ ],
+ [
+ "minecraft:ravager"
+ ],
+ [
+ "minecraft:shulker"
+ ],
+ [
+ "minecraft:silverfish"
+ ],
+ [
+ "minecraft:skeleton"
+ ],
+ [
+ "minecraft:slime"
+ ],
+ [
+ "minecraft:spider"
+ ],
+ [
+ "minecraft:stray"
+ ],
+ [
+ "minecraft:vex"
+ ],
+ [
+ "minecraft:vindicator"
+ ],
+ [
+ "minecraft:witch"
+ ],
+ [
+ "minecraft:wither_skeleton"
+ ],
+ [
+ "minecraft:wither"
+ ],
+ [
+ "minecraft:zoglin"
+ ],
+ [
+ "minecraft:zombie_villager"
+ ],
+ [
+ "minecraft:zombie"
+ ],
+ [
+ "minecraft:zombified_piglin"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/kill_mob_near_sculk_catalyst.json b/src/main/resources/data/minecraft/advancement/adventure/kill_mob_near_sculk_catalyst.json
new file mode 100644
index 0000000..e7218a4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/kill_mob_near_sculk_catalyst.json
@@ -0,0 +1,27 @@
+{
+ "parent": "minecraft:adventure/kill_a_mob",
+ "criteria": {
+ "kill_mob_near_sculk_catalyst": {
+ "trigger": "minecraft:kill_mob_near_sculk_catalyst"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.kill_mob_near_sculk_catalyst.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:sculk_catalyst"
+ },
+ "title": {
+ "translate": "advancements.adventure.kill_mob_near_sculk_catalyst.title"
+ }
+ },
+ "requirements": [
+ [
+ "kill_mob_near_sculk_catalyst"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/lighten_up.json b/src/main/resources/data/minecraft/advancement/adventure/lighten_up.json
new file mode 100644
index 0000000..4311397
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/lighten_up.json
@@ -0,0 +1,61 @@
+{
+ "parent": "minecraft:adventure/minecraft_trials_edition",
+ "criteria": {
+ "lighten_up": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": [
+ "minecraft:oxidized_copper_bulb",
+ "minecraft:weathered_copper_bulb",
+ "minecraft:exposed_copper_bulb",
+ "minecraft:waxed_oxidized_copper_bulb",
+ "minecraft:waxed_weathered_copper_bulb",
+ "minecraft:waxed_exposed_copper_bulb"
+ ],
+ "state": {
+ "lit": "true"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": [
+ "minecraft:wooden_axe",
+ "minecraft:golden_axe",
+ "minecraft:stone_axe",
+ "minecraft:iron_axe",
+ "minecraft:diamond_axe",
+ "minecraft:netherite_axe"
+ ]
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.lighten_up.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:copper_bulb"
+ },
+ "title": {
+ "translate": "advancements.adventure.lighten_up.title"
+ }
+ },
+ "requirements": [
+ [
+ "lighten_up"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/lightning_rod_with_villager_no_fire.json b/src/main/resources/data/minecraft/advancement/adventure/lightning_rod_with_villager_no_fire.json
new file mode 100644
index 0000000..24160c5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/lightning_rod_with_villager_no_fire.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "lightning_rod_with_villager_no_fire": {
+ "conditions": {
+ "bystander": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:villager"
+ }
+ }
+ ],
+ "lightning": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "distance": {
+ "absolute": {
+ "max": 30.0
+ }
+ },
+ "type_specific": {
+ "type": "minecraft:lightning",
+ "blocks_set_on_fire": 0
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:lightning_strike"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.lightning_rod_with_villager_no_fire.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:lightning_rod"
+ },
+ "title": {
+ "translate": "advancements.adventure.lightning_rod_with_villager_no_fire.title"
+ }
+ },
+ "requirements": [
+ [
+ "lightning_rod_with_villager_no_fire"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/minecraft_trials_edition.json b/src/main/resources/data/minecraft/advancement/adventure/minecraft_trials_edition.json
new file mode 100644
index 0000000..b89cb9d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/minecraft_trials_edition.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "minecraft_trials_edition": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "structures": "minecraft:trial_chambers"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.minecraft_trials_edition.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:chiseled_tuff"
+ },
+ "title": {
+ "translate": "advancements.adventure.minecraft_trials_edition.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft_trials_edition"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/ol_betsy.json b/src/main/resources/data/minecraft/advancement/adventure/ol_betsy.json
new file mode 100644
index 0000000..410ba6a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/ol_betsy.json
@@ -0,0 +1,31 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "shot_crossbow": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:crossbow"
+ }
+ },
+ "trigger": "minecraft:shot_crossbow"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.ol_betsy.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:crossbow"
+ },
+ "title": {
+ "translate": "advancements.adventure.ol_betsy.title"
+ }
+ },
+ "requirements": [
+ [
+ "shot_crossbow"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/overoverkill.json b/src/main/resources/data/minecraft/advancement/adventure/overoverkill.json
new file mode 100644
index 0000000..4674533
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/overoverkill.json
@@ -0,0 +1,53 @@
+{
+ "parent": "minecraft:adventure/minecraft_trials_edition",
+ "criteria": {
+ "overoverkill": {
+ "conditions": {
+ "damage": {
+ "type": {
+ "direct_entity": {
+ "type": "minecraft:player",
+ "equipment": {
+ "mainhand": {
+ "items": "minecraft:mace"
+ }
+ }
+ },
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_player_attack"
+ }
+ ]
+ },
+ "dealt": {
+ "min": 100.0
+ }
+ }
+ },
+ "trigger": "minecraft:player_hurt_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.overoverkill.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:mace"
+ },
+ "title": {
+ "translate": "advancements.adventure.overoverkill.title"
+ }
+ },
+ "requirements": [
+ [
+ "overoverkill"
+ ]
+ ],
+ "rewards": {
+ "experience": 50
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/play_jukebox_in_meadows.json b/src/main/resources/data/minecraft/advancement/adventure/play_jukebox_in_meadows.json
new file mode 100644
index 0000000..cc798d4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/play_jukebox_in_meadows.json
@@ -0,0 +1,47 @@
+{
+ "parent": "minecraft:adventure/sleep_in_bed",
+ "criteria": {
+ "play_jukebox_in_meadows": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "biomes": "minecraft:meadow",
+ "block": {
+ "blocks": "minecraft:jukebox"
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "predicates": {
+ "minecraft:jukebox_playable": {}
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.play_jukebox_in_meadows.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:jukebox"
+ },
+ "title": {
+ "translate": "advancements.adventure.play_jukebox_in_meadows.title"
+ }
+ },
+ "requirements": [
+ [
+ "play_jukebox_in_meadows"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/read_power_of_chiseled_bookshelf.json b/src/main/resources/data/minecraft/advancement/adventure/read_power_of_chiseled_bookshelf.json
new file mode 100644
index 0000000..7de7905
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/read_power_of_chiseled_bookshelf.json
@@ -0,0 +1,184 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "chiseled_bookshelf": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:chiseled_bookshelf",
+ "condition": "minecraft:block_state_property"
+ },
+ {
+ "condition": "minecraft:any_of",
+ "terms": [
+ {
+ "condition": "minecraft:location_check",
+ "offsetZ": 1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:comparator",
+ "state": {
+ "facing": "north"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "offsetZ": -1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:comparator",
+ "state": {
+ "facing": "south"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "offsetX": 1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:comparator",
+ "state": {
+ "facing": "west"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "offsetX": -1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:comparator",
+ "state": {
+ "facing": "east"
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "comparator": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:any_of",
+ "terms": [
+ {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "block": "minecraft:comparator",
+ "condition": "minecraft:block_state_property",
+ "properties": {
+ "facing": "north"
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "offsetZ": -1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:chiseled_bookshelf"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "block": "minecraft:comparator",
+ "condition": "minecraft:block_state_property",
+ "properties": {
+ "facing": "south"
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "offsetZ": 1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:chiseled_bookshelf"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "block": "minecraft:comparator",
+ "condition": "minecraft:block_state_property",
+ "properties": {
+ "facing": "west"
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "offsetX": -1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:chiseled_bookshelf"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "block": "minecraft:comparator",
+ "condition": "minecraft:block_state_property",
+ "properties": {
+ "facing": "east"
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "offsetX": 1,
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:chiseled_bookshelf"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.read_power_from_chiseled_bookshelf.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:chiseled_bookshelf"
+ },
+ "title": {
+ "translate": "advancements.adventure.read_power_from_chiseled_bookshelf.title"
+ }
+ },
+ "requirements": [
+ [
+ "chiseled_bookshelf",
+ "comparator"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/revaulting.json b/src/main/resources/data/minecraft/advancement/adventure/revaulting.json
new file mode 100644
index 0000000..0c3d0c7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/revaulting.json
@@ -0,0 +1,48 @@
+{
+ "parent": "minecraft:adventure/under_lock_and_key",
+ "criteria": {
+ "revaulting": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:vault",
+ "state": {
+ "ominous": "true"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:ominous_trial_key"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.revaulting.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:ominous_trial_key"
+ },
+ "title": {
+ "translate": "advancements.adventure.revaulting.title"
+ }
+ },
+ "requirements": [
+ [
+ "revaulting"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/root.json b/src/main/resources/data/minecraft/advancement/adventure/root.json
new file mode 100644
index 0000000..a6b2855
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/root.json
@@ -0,0 +1,32 @@
+{
+ "criteria": {
+ "killed_by_something": {
+ "trigger": "minecraft:entity_killed_player"
+ },
+ "killed_something": {
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "announce_to_chat": false,
+ "background": "minecraft:textures/gui/advancements/backgrounds/adventure.png",
+ "description": {
+ "translate": "advancements.adventure.root.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:map"
+ },
+ "show_toast": false,
+ "title": {
+ "translate": "advancements.adventure.root.title"
+ }
+ },
+ "requirements": [
+ [
+ "killed_something",
+ "killed_by_something"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/salvage_sherd.json b/src/main/resources/data/minecraft/advancement/adventure/salvage_sherd.json
new file mode 100644
index 0000000..c2ea7ac
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/salvage_sherd.json
@@ -0,0 +1,77 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "desert_pyramid": {
+ "conditions": {
+ "loot_table": "minecraft:archaeology/desert_pyramid"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "desert_well": {
+ "conditions": {
+ "loot_table": "minecraft:archaeology/desert_well"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "has_sherd": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:decorated_pot_sherds"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "ocean_ruin_cold": {
+ "conditions": {
+ "loot_table": "minecraft:archaeology/ocean_ruin_cold"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "ocean_ruin_warm": {
+ "conditions": {
+ "loot_table": "minecraft:archaeology/ocean_ruin_warm"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "trail_ruins_common": {
+ "conditions": {
+ "loot_table": "minecraft:archaeology/trail_ruins_common"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "trail_ruins_rare": {
+ "conditions": {
+ "loot_table": "minecraft:archaeology/trail_ruins_rare"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.salvage_sherd.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:brush"
+ },
+ "title": {
+ "translate": "advancements.adventure.salvage_sherd.title"
+ }
+ },
+ "requirements": [
+ [
+ "desert_pyramid",
+ "desert_well",
+ "ocean_ruin_cold",
+ "ocean_ruin_warm",
+ "trail_ruins_rare",
+ "trail_ruins_common"
+ ],
+ [
+ "has_sherd"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/shoot_arrow.json b/src/main/resources/data/minecraft/advancement/adventure/shoot_arrow.json
new file mode 100644
index 0000000..5584f99
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/shoot_arrow.json
@@ -0,0 +1,41 @@
+{
+ "parent": "minecraft:adventure/kill_a_mob",
+ "criteria": {
+ "shot_arrow": {
+ "conditions": {
+ "damage": {
+ "type": {
+ "direct_entity": {
+ "type": "#minecraft:arrows"
+ },
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_projectile"
+ }
+ ]
+ }
+ }
+ },
+ "trigger": "minecraft:player_hurt_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.shoot_arrow.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:bow"
+ },
+ "title": {
+ "translate": "advancements.adventure.shoot_arrow.title"
+ }
+ },
+ "requirements": [
+ [
+ "shot_arrow"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/sleep_in_bed.json b/src/main/resources/data/minecraft/advancement/adventure/sleep_in_bed.json
new file mode 100644
index 0000000..3cd59de
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/sleep_in_bed.json
@@ -0,0 +1,26 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "slept_in_bed": {
+ "trigger": "minecraft:slept_in_bed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.sleep_in_bed.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:red_bed"
+ },
+ "title": {
+ "translate": "advancements.adventure.sleep_in_bed.title"
+ }
+ },
+ "requirements": [
+ [
+ "slept_in_bed"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/sniper_duel.json b/src/main/resources/data/minecraft/advancement/adventure/sniper_duel.json
new file mode 100644
index 0000000..c138880
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/sniper_duel.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:adventure/shoot_arrow",
+ "criteria": {
+ "killed_skeleton": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:skeleton",
+ "distance": {
+ "horizontal": {
+ "min": 50.0
+ }
+ }
+ }
+ }
+ ],
+ "killing_blow": {
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_projectile"
+ }
+ ]
+ }
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.sniper_duel.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:arrow"
+ },
+ "title": {
+ "translate": "advancements.adventure.sniper_duel.title"
+ }
+ },
+ "requirements": [
+ [
+ "killed_skeleton"
+ ]
+ ],
+ "rewards": {
+ "experience": 50
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_dragon.json b/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_dragon.json
new file mode 100644
index 0000000..6063eff
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_dragon.json
@@ -0,0 +1,45 @@
+{
+ "parent": "minecraft:adventure/spyglass_at_ghast",
+ "criteria": {
+ "spyglass_at_dragon": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:spyglass"
+ },
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:player",
+ "looking_at": {
+ "type": "minecraft:ender_dragon"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:using_item"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.spyglass_at_dragon.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:spyglass"
+ },
+ "title": {
+ "translate": "advancements.adventure.spyglass_at_dragon.title"
+ }
+ },
+ "requirements": [
+ [
+ "spyglass_at_dragon"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_ghast.json b/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_ghast.json
new file mode 100644
index 0000000..03317f4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_ghast.json
@@ -0,0 +1,45 @@
+{
+ "parent": "minecraft:adventure/spyglass_at_parrot",
+ "criteria": {
+ "spyglass_at_ghast": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:spyglass"
+ },
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:player",
+ "looking_at": {
+ "type": "minecraft:ghast"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:using_item"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.spyglass_at_ghast.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:spyglass"
+ },
+ "title": {
+ "translate": "advancements.adventure.spyglass_at_ghast.title"
+ }
+ },
+ "requirements": [
+ [
+ "spyglass_at_ghast"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_parrot.json b/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_parrot.json
new file mode 100644
index 0000000..5453e1e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/spyglass_at_parrot.json
@@ -0,0 +1,45 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "spyglass_at_parrot": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:spyglass"
+ },
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:player",
+ "looking_at": {
+ "type": "minecraft:parrot"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:using_item"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.spyglass_at_parrot.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:spyglass"
+ },
+ "title": {
+ "translate": "advancements.adventure.spyglass_at_parrot.title"
+ }
+ },
+ "requirements": [
+ [
+ "spyglass_at_parrot"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/summon_iron_golem.json b/src/main/resources/data/minecraft/advancement/adventure/summon_iron_golem.json
new file mode 100644
index 0000000..6665e2a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/summon_iron_golem.json
@@ -0,0 +1,38 @@
+{
+ "parent": "minecraft:adventure/trade",
+ "criteria": {
+ "summoned_golem": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:iron_golem"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:summoned_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.summon_iron_golem.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:carved_pumpkin"
+ },
+ "title": {
+ "translate": "advancements.adventure.summon_iron_golem.title"
+ }
+ },
+ "requirements": [
+ [
+ "summoned_golem"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/throw_trident.json b/src/main/resources/data/minecraft/advancement/adventure/throw_trident.json
new file mode 100644
index 0000000..c9094c6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/throw_trident.json
@@ -0,0 +1,41 @@
+{
+ "parent": "minecraft:adventure/kill_a_mob",
+ "criteria": {
+ "shot_trident": {
+ "conditions": {
+ "damage": {
+ "type": {
+ "direct_entity": {
+ "type": "minecraft:trident"
+ },
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_projectile"
+ }
+ ]
+ }
+ }
+ },
+ "trigger": "minecraft:player_hurt_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.throw_trident.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:trident"
+ },
+ "title": {
+ "translate": "advancements.adventure.throw_trident.title"
+ }
+ },
+ "requirements": [
+ [
+ "shot_trident"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/totem_of_undying.json b/src/main/resources/data/minecraft/advancement/adventure/totem_of_undying.json
new file mode 100644
index 0000000..c5e907c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/totem_of_undying.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:adventure/kill_a_mob",
+ "criteria": {
+ "used_totem": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:totem_of_undying"
+ }
+ },
+ "trigger": "minecraft:used_totem"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.totem_of_undying.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:totem_of_undying"
+ },
+ "title": {
+ "translate": "advancements.adventure.totem_of_undying.title"
+ }
+ },
+ "requirements": [
+ [
+ "used_totem"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/trade.json b/src/main/resources/data/minecraft/advancement/adventure/trade.json
new file mode 100644
index 0000000..b2cbcfd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/trade.json
@@ -0,0 +1,26 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "traded": {
+ "trigger": "minecraft:villager_trade"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.trade.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:emerald"
+ },
+ "title": {
+ "translate": "advancements.adventure.trade.title"
+ }
+ },
+ "requirements": [
+ [
+ "traded"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/trade_at_world_height.json b/src/main/resources/data/minecraft/advancement/adventure/trade_at_world_height.json
new file mode 100644
index 0000000..02faa83
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/trade_at_world_height.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:adventure/trade",
+ "criteria": {
+ "trade_at_world_height": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "position": {
+ "y": {
+ "min": 319.0
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:villager_trade"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.trade_at_world_height.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:emerald"
+ },
+ "title": {
+ "translate": "advancements.adventure.trade_at_world_height.title"
+ }
+ },
+ "requirements": [
+ [
+ "trade_at_world_height"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/trim_with_all_exclusive_armor_patterns.json b/src/main/resources/data/minecraft/advancement/adventure/trim_with_all_exclusive_armor_patterns.json
new file mode 100644
index 0000000..a61139d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/trim_with_all_exclusive_armor_patterns.json
@@ -0,0 +1,96 @@
+{
+ "parent": "minecraft:adventure/trim_with_any_armor_pattern",
+ "criteria": {
+ "armor_trimmed_minecraft:rib_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:rib_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:silence_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:silence_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:snout_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:snout_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:spire_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:spire_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:tide_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:tide_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:vex_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:vex_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:ward_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:ward_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:wayfinder_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:wayfinder_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.trim_with_all_exclusive_armor_patterns.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:silence_armor_trim_smithing_template"
+ },
+ "title": {
+ "translate": "advancements.adventure.trim_with_all_exclusive_armor_patterns.title"
+ }
+ },
+ "requirements": [
+ [
+ "armor_trimmed_minecraft:rib_armor_trim_smithing_template_smithing_trim"
+ ],
+ [
+ "armor_trimmed_minecraft:silence_armor_trim_smithing_template_smithing_trim"
+ ],
+ [
+ "armor_trimmed_minecraft:snout_armor_trim_smithing_template_smithing_trim"
+ ],
+ [
+ "armor_trimmed_minecraft:spire_armor_trim_smithing_template_smithing_trim"
+ ],
+ [
+ "armor_trimmed_minecraft:tide_armor_trim_smithing_template_smithing_trim"
+ ],
+ [
+ "armor_trimmed_minecraft:vex_armor_trim_smithing_template_smithing_trim"
+ ],
+ [
+ "armor_trimmed_minecraft:ward_armor_trim_smithing_template_smithing_trim"
+ ],
+ [
+ "armor_trimmed_minecraft:wayfinder_armor_trim_smithing_template_smithing_trim"
+ ]
+ ],
+ "rewards": {
+ "experience": 150
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/trim_with_any_armor_pattern.json b/src/main/resources/data/minecraft/advancement/adventure/trim_with_any_armor_pattern.json
new file mode 100644
index 0000000..6576f32
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/trim_with_any_armor_pattern.json
@@ -0,0 +1,148 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "armor_trimmed_minecraft:bolt_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:bolt_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:coast_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:coast_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:dune_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:dune_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:eye_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:eye_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:flow_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:flow_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:host_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:host_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:raiser_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:raiser_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:rib_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:rib_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:sentry_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:sentry_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:shaper_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:shaper_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:silence_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:silence_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:snout_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:snout_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:spire_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:spire_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:tide_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:tide_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:vex_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:vex_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:ward_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:ward_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:wayfinder_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:wayfinder_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ },
+ "armor_trimmed_minecraft:wild_armor_trim_smithing_template_smithing_trim": {
+ "conditions": {
+ "recipe_id": "minecraft:wild_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_crafted"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.trim_with_any_armor_pattern.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:dune_armor_trim_smithing_template"
+ },
+ "title": {
+ "translate": "advancements.adventure.trim_with_any_armor_pattern.title"
+ }
+ },
+ "requirements": [
+ [
+ "armor_trimmed_minecraft:bolt_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:coast_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:dune_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:eye_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:flow_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:host_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:raiser_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:rib_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:sentry_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:shaper_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:silence_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:snout_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:spire_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:tide_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:vex_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:ward_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:wayfinder_armor_trim_smithing_template_smithing_trim",
+ "armor_trimmed_minecraft:wild_armor_trim_smithing_template_smithing_trim"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/two_birds_one_arrow.json b/src/main/resources/data/minecraft/advancement/adventure/two_birds_one_arrow.json
new file mode 100644
index 0000000..adea222
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/two_birds_one_arrow.json
@@ -0,0 +1,52 @@
+{
+ "parent": "minecraft:adventure/ol_betsy",
+ "criteria": {
+ "two_birds": {
+ "conditions": {
+ "victims": [
+ [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:phantom"
+ }
+ }
+ ],
+ [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:phantom"
+ }
+ }
+ ]
+ ]
+ },
+ "trigger": "minecraft:killed_by_crossbow"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.two_birds_one_arrow.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:crossbow"
+ },
+ "title": {
+ "translate": "advancements.adventure.two_birds_one_arrow.title"
+ }
+ },
+ "requirements": [
+ [
+ "two_birds"
+ ]
+ ],
+ "rewards": {
+ "experience": 65
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/under_lock_and_key.json b/src/main/resources/data/minecraft/advancement/adventure/under_lock_and_key.json
new file mode 100644
index 0000000..952b4fd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/under_lock_and_key.json
@@ -0,0 +1,47 @@
+{
+ "parent": "minecraft:adventure/minecraft_trials_edition",
+ "criteria": {
+ "under_lock_and_key": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:vault",
+ "state": {
+ "ominous": "false"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:trial_key"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.under_lock_and_key.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:trial_key"
+ },
+ "title": {
+ "translate": "advancements.adventure.under_lock_and_key.title"
+ }
+ },
+ "requirements": [
+ [
+ "under_lock_and_key"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/very_very_frightening.json b/src/main/resources/data/minecraft/advancement/adventure/very_very_frightening.json
new file mode 100644
index 0000000..38e6ffc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/very_very_frightening.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:adventure/throw_trident",
+ "criteria": {
+ "struck_villager": {
+ "conditions": {
+ "victims": [
+ [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:villager"
+ }
+ }
+ ]
+ ]
+ },
+ "trigger": "minecraft:channeled_lightning"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.very_very_frightening.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:trident"
+ },
+ "title": {
+ "translate": "advancements.adventure.very_very_frightening.title"
+ }
+ },
+ "requirements": [
+ [
+ "struck_villager"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/voluntary_exile.json b/src/main/resources/data/minecraft/advancement/adventure/voluntary_exile.json
new file mode 100644
index 0000000..e45f9f6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/voluntary_exile.json
@@ -0,0 +1,129 @@
+{
+ "parent": "minecraft:adventure/root",
+ "criteria": {
+ "voluntary_exile": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "#minecraft:raiders",
+ "equipment": {
+ "head": {
+ "components": {
+ "minecraft:attribute_modifiers": {
+ "modifiers": []
+ },
+ "minecraft:banner_patterns": [
+ {
+ "color": "cyan",
+ "pattern": "minecraft:rhombus"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:stripe_bottom"
+ },
+ {
+ "color": "gray",
+ "pattern": "minecraft:stripe_center"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:border"
+ },
+ {
+ "color": "black",
+ "pattern": "minecraft:stripe_middle"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:half_horizontal"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:circle"
+ },
+ {
+ "color": "black",
+ "pattern": "minecraft:border"
+ }
+ ],
+ "minecraft:enchantments": {
+ "levels": {}
+ },
+ "minecraft:hide_additional_tooltip": {},
+ "minecraft:item_name": "{\"color\":\"gold\",\"translate\":\"block.minecraft.ominous_banner\"}",
+ "minecraft:lore": [],
+ "minecraft:max_stack_size": 16,
+ "minecraft:rarity": "common",
+ "minecraft:repair_cost": 0
+ },
+ "items": "minecraft:white_banner"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.voluntary_exile.description"
+ },
+ "hidden": true,
+ "icon": {
+ "components": {
+ "minecraft:banner_patterns": [
+ {
+ "color": "cyan",
+ "pattern": "minecraft:rhombus"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:stripe_bottom"
+ },
+ {
+ "color": "gray",
+ "pattern": "minecraft:stripe_center"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:border"
+ },
+ {
+ "color": "black",
+ "pattern": "minecraft:stripe_middle"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:half_horizontal"
+ },
+ {
+ "color": "light_gray",
+ "pattern": "minecraft:circle"
+ },
+ {
+ "color": "black",
+ "pattern": "minecraft:border"
+ }
+ ],
+ "minecraft:hide_additional_tooltip": {},
+ "minecraft:item_name": "{\"color\":\"gold\",\"translate\":\"block.minecraft.ominous_banner\"}"
+ },
+ "count": 1,
+ "id": "minecraft:white_banner"
+ },
+ "title": {
+ "translate": "advancements.adventure.voluntary_exile.title"
+ }
+ },
+ "requirements": [
+ [
+ "voluntary_exile"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/walk_on_powder_snow_with_leather_boots.json b/src/main/resources/data/minecraft/advancement/adventure/walk_on_powder_snow_with_leather_boots.json
new file mode 100644
index 0000000..09ba124
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/walk_on_powder_snow_with_leather_boots.json
@@ -0,0 +1,46 @@
+{
+ "parent": "minecraft:adventure/sleep_in_bed",
+ "criteria": {
+ "walk_on_powder_snow_with_leather_boots": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "feet": {
+ "items": "minecraft:leather_boots"
+ }
+ },
+ "stepping_on": {
+ "block": {
+ "blocks": "minecraft:powder_snow"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.walk_on_powder_snow_with_leather_boots.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:leather_boots"
+ },
+ "title": {
+ "translate": "advancements.adventure.walk_on_powder_snow_with_leather_boots.title"
+ }
+ },
+ "requirements": [
+ [
+ "walk_on_powder_snow_with_leather_boots"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/who_needs_rockets.json b/src/main/resources/data/minecraft/advancement/adventure/who_needs_rockets.json
new file mode 100644
index 0000000..2f08766
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/who_needs_rockets.json
@@ -0,0 +1,42 @@
+{
+ "parent": "minecraft:adventure/minecraft_trials_edition",
+ "criteria": {
+ "who_needs_rockets": {
+ "conditions": {
+ "cause": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wind_charge"
+ }
+ }
+ ],
+ "distance": {
+ "y": {
+ "min": 7.0
+ }
+ }
+ },
+ "trigger": "minecraft:fall_after_explosion"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.who_needs_rockets.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:wind_charge"
+ },
+ "title": {
+ "translate": "advancements.adventure.who_needs_rockets.title"
+ }
+ },
+ "requirements": [
+ [
+ "who_needs_rockets"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/adventure/whos_the_pillager_now.json b/src/main/resources/data/minecraft/advancement/adventure/whos_the_pillager_now.json
new file mode 100644
index 0000000..8a59f94
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/adventure/whos_the_pillager_now.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:adventure/ol_betsy",
+ "criteria": {
+ "kill_pillager": {
+ "conditions": {
+ "victims": [
+ [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:pillager"
+ }
+ }
+ ]
+ ]
+ },
+ "trigger": "minecraft:killed_by_crossbow"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.adventure.whos_the_pillager_now.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:crossbow"
+ },
+ "title": {
+ "translate": "advancements.adventure.whos_the_pillager_now.title"
+ }
+ },
+ "requirements": [
+ [
+ "kill_pillager"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/dragon_breath.json b/src/main/resources/data/minecraft/advancement/end/dragon_breath.json
new file mode 100644
index 0000000..4d8cf62
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/dragon_breath.json
@@ -0,0 +1,34 @@
+{
+ "parent": "minecraft:end/kill_dragon",
+ "criteria": {
+ "dragon_breath": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dragon_breath"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.dragon_breath.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:dragon_breath"
+ },
+ "title": {
+ "translate": "advancements.end.dragon_breath.title"
+ }
+ },
+ "requirements": [
+ [
+ "dragon_breath"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/dragon_egg.json b/src/main/resources/data/minecraft/advancement/end/dragon_egg.json
new file mode 100644
index 0000000..906dbbc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/dragon_egg.json
@@ -0,0 +1,34 @@
+{
+ "parent": "minecraft:end/kill_dragon",
+ "criteria": {
+ "dragon_egg": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dragon_egg"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.dragon_egg.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:dragon_egg"
+ },
+ "title": {
+ "translate": "advancements.end.dragon_egg.title"
+ }
+ },
+ "requirements": [
+ [
+ "dragon_egg"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/elytra.json b/src/main/resources/data/minecraft/advancement/end/elytra.json
new file mode 100644
index 0000000..41c0b55
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/elytra.json
@@ -0,0 +1,34 @@
+{
+ "parent": "minecraft:end/find_end_city",
+ "criteria": {
+ "elytra": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:elytra"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.elytra.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:elytra"
+ },
+ "title": {
+ "translate": "advancements.end.elytra.title"
+ }
+ },
+ "requirements": [
+ [
+ "elytra"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/enter_end_gateway.json b/src/main/resources/data/minecraft/advancement/end/enter_end_gateway.json
new file mode 100644
index 0000000..d0f44ef
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/enter_end_gateway.json
@@ -0,0 +1,29 @@
+{
+ "parent": "minecraft:end/kill_dragon",
+ "criteria": {
+ "entered_end_gateway": {
+ "conditions": {
+ "block": "minecraft:end_gateway"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.enter_end_gateway.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:ender_pearl"
+ },
+ "title": {
+ "translate": "advancements.end.enter_end_gateway.title"
+ }
+ },
+ "requirements": [
+ [
+ "entered_end_gateway"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/find_end_city.json b/src/main/resources/data/minecraft/advancement/end/find_end_city.json
new file mode 100644
index 0000000..d2c25c5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/find_end_city.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:end/enter_end_gateway",
+ "criteria": {
+ "in_city": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "structures": "minecraft:end_city"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.find_end_city.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:purpur_block"
+ },
+ "title": {
+ "translate": "advancements.end.find_end_city.title"
+ }
+ },
+ "requirements": [
+ [
+ "in_city"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/kill_dragon.json b/src/main/resources/data/minecraft/advancement/end/kill_dragon.json
new file mode 100644
index 0000000..d5e1637
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/kill_dragon.json
@@ -0,0 +1,37 @@
+{
+ "parent": "minecraft:end/root",
+ "criteria": {
+ "killed_dragon": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ender_dragon"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.kill_dragon.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:dragon_head"
+ },
+ "title": {
+ "translate": "advancements.end.kill_dragon.title"
+ }
+ },
+ "requirements": [
+ [
+ "killed_dragon"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/levitate.json b/src/main/resources/data/minecraft/advancement/end/levitate.json
new file mode 100644
index 0000000..9339790
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/levitate.json
@@ -0,0 +1,37 @@
+{
+ "parent": "minecraft:end/find_end_city",
+ "criteria": {
+ "levitated": {
+ "conditions": {
+ "distance": {
+ "y": {
+ "min": 50.0
+ }
+ }
+ },
+ "trigger": "minecraft:levitation"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.levitate.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:shulker_shell"
+ },
+ "title": {
+ "translate": "advancements.end.levitate.title"
+ }
+ },
+ "requirements": [
+ [
+ "levitated"
+ ]
+ ],
+ "rewards": {
+ "experience": 50
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/respawn_dragon.json b/src/main/resources/data/minecraft/advancement/end/respawn_dragon.json
new file mode 100644
index 0000000..c98fc91
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/respawn_dragon.json
@@ -0,0 +1,38 @@
+{
+ "parent": "minecraft:end/kill_dragon",
+ "criteria": {
+ "summoned_dragon": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ender_dragon"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:summoned_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.end.respawn_dragon.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:end_crystal"
+ },
+ "title": {
+ "translate": "advancements.end.respawn_dragon.title"
+ }
+ },
+ "requirements": [
+ [
+ "summoned_dragon"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/end/root.json b/src/main/resources/data/minecraft/advancement/end/root.json
new file mode 100644
index 0000000..9d788a5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/end/root.json
@@ -0,0 +1,31 @@
+{
+ "criteria": {
+ "entered_end": {
+ "conditions": {
+ "to": "minecraft:the_end"
+ },
+ "trigger": "minecraft:changed_dimension"
+ }
+ },
+ "display": {
+ "announce_to_chat": false,
+ "background": "minecraft:textures/gui/advancements/backgrounds/end.png",
+ "description": {
+ "translate": "advancements.end.root.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:end_stone"
+ },
+ "show_toast": false,
+ "title": {
+ "translate": "advancements.end.root.title"
+ }
+ },
+ "requirements": [
+ [
+ "entered_end"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/allay_deliver_cake_to_note_block.json b/src/main/resources/data/minecraft/advancement/husbandry/allay_deliver_cake_to_note_block.json
new file mode 100644
index 0000000..523fc69
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/allay_deliver_cake_to_note_block.json
@@ -0,0 +1,45 @@
+{
+ "parent": "minecraft:husbandry/allay_deliver_item_to_player",
+ "criteria": {
+ "allay_deliver_cake_to_note_block": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:note_block"
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:cake"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:allay_drop_item_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.allay_deliver_cake_to_note_block.description"
+ },
+ "hidden": true,
+ "icon": {
+ "count": 1,
+ "id": "minecraft:note_block"
+ },
+ "title": {
+ "translate": "advancements.husbandry.allay_deliver_cake_to_note_block.title"
+ }
+ },
+ "requirements": [
+ [
+ "allay_deliver_cake_to_note_block"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/allay_deliver_item_to_player.json b/src/main/resources/data/minecraft/advancement/husbandry/allay_deliver_item_to_player.json
new file mode 100644
index 0000000..8bc02b9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/allay_deliver_item_to_player.json
@@ -0,0 +1,38 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "allay_deliver_item_to_player": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:allay"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:thrown_item_picked_up_by_player"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.allay_deliver_item_to_player.description"
+ },
+ "hidden": true,
+ "icon": {
+ "count": 1,
+ "id": "minecraft:cookie"
+ },
+ "title": {
+ "translate": "advancements.husbandry.allay_deliver_item_to_player.title"
+ }
+ },
+ "requirements": [
+ [
+ "allay_deliver_item_to_player"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/axolotl_in_a_bucket.json b/src/main/resources/data/minecraft/advancement/husbandry/axolotl_in_a_bucket.json
new file mode 100644
index 0000000..a4d290e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/axolotl_in_a_bucket.json
@@ -0,0 +1,31 @@
+{
+ "parent": "minecraft:husbandry/tactical_fishing",
+ "criteria": {
+ "axolotl_bucket": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:axolotl_bucket"
+ }
+ },
+ "trigger": "minecraft:filled_bucket"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.axolotl_in_a_bucket.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:axolotl_bucket"
+ },
+ "title": {
+ "translate": "advancements.husbandry.axolotl_in_a_bucket.title"
+ }
+ },
+ "requirements": [
+ [
+ "axolotl_bucket"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/balanced_diet.json b/src/main/resources/data/minecraft/advancement/husbandry/balanced_diet.json
new file mode 100644
index 0000000..ced7a04
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/balanced_diet.json
@@ -0,0 +1,464 @@
+{
+ "parent": "minecraft:husbandry/plant_seed",
+ "criteria": {
+ "apple": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:apple"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "baked_potato": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:baked_potato"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "beef": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:beef"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "beetroot": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:beetroot"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "beetroot_soup": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:beetroot_soup"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "bread": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:bread"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "carrot": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:carrot"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "chicken": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:chicken"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "chorus_fruit": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:chorus_fruit"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cod": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cod"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cooked_beef": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cooked_beef"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cooked_chicken": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cooked_chicken"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cooked_cod": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cooked_cod"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cooked_mutton": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cooked_mutton"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cooked_porkchop": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cooked_porkchop"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cooked_rabbit": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cooked_rabbit"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cooked_salmon": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cooked_salmon"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "cookie": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cookie"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "dried_kelp": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:dried_kelp"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "enchanted_golden_apple": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:enchanted_golden_apple"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "glow_berries": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:glow_berries"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "golden_apple": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:golden_apple"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "golden_carrot": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:golden_carrot"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "honey_bottle": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:honey_bottle"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "melon_slice": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:melon_slice"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "mushroom_stew": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:mushroom_stew"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "mutton": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:mutton"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "poisonous_potato": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:poisonous_potato"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "porkchop": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:porkchop"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "potato": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:potato"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "pufferfish": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:pufferfish"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "pumpkin_pie": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:pumpkin_pie"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "rabbit": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:rabbit"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "rabbit_stew": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:rabbit_stew"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "rotten_flesh": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:rotten_flesh"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "salmon": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:salmon"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "spider_eye": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:spider_eye"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "suspicious_stew": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:suspicious_stew"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "sweet_berries": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:sweet_berries"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ },
+ "tropical_fish": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:tropical_fish"
+ }
+ },
+ "trigger": "minecraft:consume_item"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.balanced_diet.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:apple"
+ },
+ "title": {
+ "translate": "advancements.husbandry.balanced_diet.title"
+ }
+ },
+ "requirements": [
+ [
+ "apple"
+ ],
+ [
+ "mushroom_stew"
+ ],
+ [
+ "bread"
+ ],
+ [
+ "porkchop"
+ ],
+ [
+ "cooked_porkchop"
+ ],
+ [
+ "golden_apple"
+ ],
+ [
+ "enchanted_golden_apple"
+ ],
+ [
+ "cod"
+ ],
+ [
+ "salmon"
+ ],
+ [
+ "tropical_fish"
+ ],
+ [
+ "pufferfish"
+ ],
+ [
+ "cooked_cod"
+ ],
+ [
+ "cooked_salmon"
+ ],
+ [
+ "cookie"
+ ],
+ [
+ "melon_slice"
+ ],
+ [
+ "beef"
+ ],
+ [
+ "cooked_beef"
+ ],
+ [
+ "chicken"
+ ],
+ [
+ "cooked_chicken"
+ ],
+ [
+ "rotten_flesh"
+ ],
+ [
+ "spider_eye"
+ ],
+ [
+ "carrot"
+ ],
+ [
+ "potato"
+ ],
+ [
+ "baked_potato"
+ ],
+ [
+ "poisonous_potato"
+ ],
+ [
+ "golden_carrot"
+ ],
+ [
+ "pumpkin_pie"
+ ],
+ [
+ "rabbit"
+ ],
+ [
+ "cooked_rabbit"
+ ],
+ [
+ "rabbit_stew"
+ ],
+ [
+ "mutton"
+ ],
+ [
+ "cooked_mutton"
+ ],
+ [
+ "chorus_fruit"
+ ],
+ [
+ "beetroot"
+ ],
+ [
+ "beetroot_soup"
+ ],
+ [
+ "dried_kelp"
+ ],
+ [
+ "suspicious_stew"
+ ],
+ [
+ "sweet_berries"
+ ],
+ [
+ "honey_bottle"
+ ],
+ [
+ "glow_berries"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/bred_all_animals.json b/src/main/resources/data/minecraft/advancement/husbandry/bred_all_animals.json
new file mode 100644
index 0000000..d87b0eb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/bred_all_animals.json
@@ -0,0 +1,476 @@
+{
+ "parent": "minecraft:husbandry/breed_an_animal",
+ "criteria": {
+ "minecraft:armadillo": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:armadillo"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:axolotl": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:axolotl"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:bee": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:bee"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:camel": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:camel"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:cat": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:cat"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:chicken": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:chicken"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:cow": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:cow"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:donkey": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:donkey"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:fox": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:fox"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:frog": {
+ "conditions": {
+ "parent": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:frog"
+ }
+ }
+ ],
+ "partner": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:frog"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:goat": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:goat"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:hoglin": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:hoglin"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:horse": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:horse"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:llama": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:llama"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:mooshroom": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:mooshroom"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:mule": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:mule"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:ocelot": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ocelot"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:panda": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:panda"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:pig": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:pig"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:rabbit": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:rabbit"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:sheep": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:sheep"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:sniffer": {
+ "conditions": {
+ "parent": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:sniffer"
+ }
+ }
+ ],
+ "partner": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:sniffer"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:strider": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:strider"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:turtle": {
+ "conditions": {
+ "parent": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:turtle"
+ }
+ }
+ ],
+ "partner": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:turtle"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ },
+ "minecraft:wolf": {
+ "conditions": {
+ "child": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wolf"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:bred_animals"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.breed_all_animals.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:golden_carrot"
+ },
+ "title": {
+ "translate": "advancements.husbandry.breed_all_animals.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:horse"
+ ],
+ [
+ "minecraft:donkey"
+ ],
+ [
+ "minecraft:mule"
+ ],
+ [
+ "minecraft:sheep"
+ ],
+ [
+ "minecraft:cow"
+ ],
+ [
+ "minecraft:mooshroom"
+ ],
+ [
+ "minecraft:pig"
+ ],
+ [
+ "minecraft:chicken"
+ ],
+ [
+ "minecraft:wolf"
+ ],
+ [
+ "minecraft:ocelot"
+ ],
+ [
+ "minecraft:rabbit"
+ ],
+ [
+ "minecraft:llama"
+ ],
+ [
+ "minecraft:cat"
+ ],
+ [
+ "minecraft:panda"
+ ],
+ [
+ "minecraft:fox"
+ ],
+ [
+ "minecraft:bee"
+ ],
+ [
+ "minecraft:hoglin"
+ ],
+ [
+ "minecraft:strider"
+ ],
+ [
+ "minecraft:goat"
+ ],
+ [
+ "minecraft:axolotl"
+ ],
+ [
+ "minecraft:camel"
+ ],
+ [
+ "minecraft:armadillo"
+ ],
+ [
+ "minecraft:turtle"
+ ],
+ [
+ "minecraft:frog"
+ ],
+ [
+ "minecraft:sniffer"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/breed_an_animal.json b/src/main/resources/data/minecraft/advancement/husbandry/breed_an_animal.json
new file mode 100644
index 0000000..3379603
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/breed_an_animal.json
@@ -0,0 +1,26 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "bred": {
+ "trigger": "minecraft:bred_animals"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.breed_an_animal.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:wheat"
+ },
+ "title": {
+ "translate": "advancements.husbandry.breed_an_animal.title"
+ }
+ },
+ "requirements": [
+ [
+ "bred"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/complete_catalogue.json b/src/main/resources/data/minecraft/advancement/husbandry/complete_catalogue.json
new file mode 100644
index 0000000..31749d5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/complete_catalogue.json
@@ -0,0 +1,244 @@
+{
+ "parent": "minecraft:husbandry/tame_an_animal",
+ "criteria": {
+ "minecraft:all_black": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:all_black"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:black": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:black"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:british_shorthair": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:british_shorthair"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:calico": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:calico"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:jellie": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:jellie"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:persian": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:persian"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:ragdoll": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:ragdoll"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:red": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:red"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:siamese": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:siamese"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:tabby": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:tabby"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:white": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:cat",
+ "variant": "minecraft:white"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.complete_catalogue.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:cod"
+ },
+ "title": {
+ "translate": "advancements.husbandry.complete_catalogue.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:all_black"
+ ],
+ [
+ "minecraft:black"
+ ],
+ [
+ "minecraft:british_shorthair"
+ ],
+ [
+ "minecraft:calico"
+ ],
+ [
+ "minecraft:jellie"
+ ],
+ [
+ "minecraft:persian"
+ ],
+ [
+ "minecraft:ragdoll"
+ ],
+ [
+ "minecraft:red"
+ ],
+ [
+ "minecraft:siamese"
+ ],
+ [
+ "minecraft:tabby"
+ ],
+ [
+ "minecraft:white"
+ ]
+ ],
+ "rewards": {
+ "experience": 50
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/feed_snifflet.json b/src/main/resources/data/minecraft/advancement/husbandry/feed_snifflet.json
new file mode 100644
index 0000000..8ec72eb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/feed_snifflet.json
@@ -0,0 +1,44 @@
+{
+ "parent": "minecraft:husbandry/obtain_sniffer_egg",
+ "criteria": {
+ "feed_snifflet": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:sniffer",
+ "flags": {
+ "is_baby": true
+ }
+ }
+ }
+ ],
+ "item": {
+ "items": "#minecraft:sniffer_food"
+ }
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.feed_snifflet.description"
+ },
+ "hidden": true,
+ "icon": {
+ "count": 1,
+ "id": "minecraft:torchflower_seeds"
+ },
+ "title": {
+ "translate": "advancements.husbandry.feed_snifflet.title"
+ }
+ },
+ "requirements": [
+ [
+ "feed_snifflet"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/fishy_business.json b/src/main/resources/data/minecraft/advancement/husbandry/fishy_business.json
new file mode 100644
index 0000000..e9da5e3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/fishy_business.json
@@ -0,0 +1,58 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "cod": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cod"
+ }
+ },
+ "trigger": "minecraft:fishing_rod_hooked"
+ },
+ "pufferfish": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:pufferfish"
+ }
+ },
+ "trigger": "minecraft:fishing_rod_hooked"
+ },
+ "salmon": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:salmon"
+ }
+ },
+ "trigger": "minecraft:fishing_rod_hooked"
+ },
+ "tropical_fish": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:tropical_fish"
+ }
+ },
+ "trigger": "minecraft:fishing_rod_hooked"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.fishy_business.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:fishing_rod"
+ },
+ "title": {
+ "translate": "advancements.husbandry.fishy_business.title"
+ }
+ },
+ "requirements": [
+ [
+ "cod",
+ "tropical_fish",
+ "pufferfish",
+ "salmon"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/froglights.json b/src/main/resources/data/minecraft/advancement/husbandry/froglights.json
new file mode 100644
index 0000000..83dbb62
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/froglights.json
@@ -0,0 +1,40 @@
+{
+ "parent": "minecraft:husbandry/leash_all_frog_variants",
+ "criteria": {
+ "froglights": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ochre_froglight"
+ },
+ {
+ "items": "minecraft:pearlescent_froglight"
+ },
+ {
+ "items": "minecraft:verdant_froglight"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.froglights.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:verdant_froglight"
+ },
+ "title": {
+ "translate": "advancements.husbandry.froglights.title"
+ }
+ },
+ "requirements": [
+ [
+ "froglights"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/kill_axolotl_target.json b/src/main/resources/data/minecraft/advancement/husbandry/kill_axolotl_target.json
new file mode 100644
index 0000000..1a556ff
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/kill_axolotl_target.json
@@ -0,0 +1,37 @@
+{
+ "parent": "minecraft:husbandry/axolotl_in_a_bucket",
+ "criteria": {
+ "kill_axolotl_target": {
+ "conditions": {
+ "source": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:axolotl"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:effects_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.kill_axolotl_target.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:tropical_fish_bucket"
+ },
+ "title": {
+ "translate": "advancements.husbandry.kill_axolotl_target.title"
+ }
+ },
+ "requirements": [
+ [
+ "kill_axolotl_target"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/leash_all_frog_variants.json b/src/main/resources/data/minecraft/advancement/husbandry/leash_all_frog_variants.json
new file mode 100644
index 0000000..52a2ded
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/leash_all_frog_variants.json
@@ -0,0 +1,92 @@
+{
+ "parent": "minecraft:husbandry/tadpole_in_a_bucket",
+ "criteria": {
+ "minecraft:cold": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:frog",
+ "type_specific": {
+ "type": "minecraft:frog",
+ "variant": "minecraft:cold"
+ }
+ }
+ }
+ ],
+ "item": {
+ "items": "minecraft:lead"
+ }
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ },
+ "minecraft:temperate": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:frog",
+ "type_specific": {
+ "type": "minecraft:frog",
+ "variant": "minecraft:temperate"
+ }
+ }
+ }
+ ],
+ "item": {
+ "items": "minecraft:lead"
+ }
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ },
+ "minecraft:warm": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:frog",
+ "type_specific": {
+ "type": "minecraft:frog",
+ "variant": "minecraft:warm"
+ }
+ }
+ }
+ ],
+ "item": {
+ "items": "minecraft:lead"
+ }
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.leash_all_frog_variants.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:lead"
+ },
+ "title": {
+ "translate": "advancements.husbandry.leash_all_frog_variants.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:temperate"
+ ],
+ [
+ "minecraft:warm"
+ ],
+ [
+ "minecraft:cold"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/make_a_sign_glow.json b/src/main/resources/data/minecraft/advancement/husbandry/make_a_sign_glow.json
new file mode 100644
index 0000000..9195039
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/make_a_sign_glow.json
@@ -0,0 +1,44 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "make_a_sign_glow": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": "#minecraft:all_signs"
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:glow_ink_sac"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.make_a_sign_glow.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:glow_ink_sac"
+ },
+ "title": {
+ "translate": "advancements.husbandry.make_a_sign_glow.title"
+ }
+ },
+ "requirements": [
+ [
+ "make_a_sign_glow"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/obtain_netherite_hoe.json b/src/main/resources/data/minecraft/advancement/husbandry/obtain_netherite_hoe.json
new file mode 100644
index 0000000..d7e27b4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/obtain_netherite_hoe.json
@@ -0,0 +1,37 @@
+{
+ "parent": "minecraft:husbandry/plant_seed",
+ "criteria": {
+ "netherite_hoe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_hoe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.netherite_hoe.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:netherite_hoe"
+ },
+ "title": {
+ "translate": "advancements.husbandry.netherite_hoe.title"
+ }
+ },
+ "requirements": [
+ [
+ "netherite_hoe"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/obtain_sniffer_egg.json b/src/main/resources/data/minecraft/advancement/husbandry/obtain_sniffer_egg.json
new file mode 100644
index 0000000..c9c9fdd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/obtain_sniffer_egg.json
@@ -0,0 +1,34 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "obtain_sniffer_egg": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sniffer_egg"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.obtain_sniffer_egg.description"
+ },
+ "hidden": true,
+ "icon": {
+ "count": 1,
+ "id": "minecraft:sniffer_egg"
+ },
+ "title": {
+ "translate": "advancements.husbandry.obtain_sniffer_egg.title"
+ }
+ },
+ "requirements": [
+ [
+ "obtain_sniffer_egg"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/plant_any_sniffer_seed.json b/src/main/resources/data/minecraft/advancement/husbandry/plant_any_sniffer_seed.json
new file mode 100644
index 0000000..4bc25a9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/plant_any_sniffer_seed.json
@@ -0,0 +1,47 @@
+{
+ "parent": "minecraft:husbandry/feed_snifflet",
+ "criteria": {
+ "pitcher_pod": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:pitcher_crop",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "torchflower": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:torchflower_crop",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.plant_any_sniffer_seed.description"
+ },
+ "hidden": true,
+ "icon": {
+ "count": 1,
+ "id": "minecraft:pitcher_pod"
+ },
+ "title": {
+ "translate": "advancements.husbandry.plant_any_sniffer_seed.title"
+ }
+ },
+ "requirements": [
+ [
+ "torchflower",
+ "pitcher_pod"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/plant_seed.json b/src/main/resources/data/minecraft/advancement/husbandry/plant_seed.json
new file mode 100644
index 0000000..494fcc6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/plant_seed.json
@@ -0,0 +1,106 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "beetroots": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:beetroots",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "melon_stem": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:melon_stem",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "nether_wart": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:nether_wart",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "pitcher_pod": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:pitcher_crop",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "pumpkin_stem": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:pumpkin_stem",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "torchflower": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:torchflower_crop",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ },
+ "wheat": {
+ "conditions": {
+ "location": [
+ {
+ "block": "minecraft:wheat",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ },
+ "trigger": "minecraft:placed_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.plant_seed.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:wheat"
+ },
+ "title": {
+ "translate": "advancements.husbandry.plant_seed.title"
+ }
+ },
+ "requirements": [
+ [
+ "wheat",
+ "pumpkin_stem",
+ "melon_stem",
+ "beetroots",
+ "nether_wart",
+ "torchflower",
+ "pitcher_pod"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/remove_wolf_armor.json b/src/main/resources/data/minecraft/advancement/husbandry/remove_wolf_armor.json
new file mode 100644
index 0000000..57c05fb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/remove_wolf_armor.json
@@ -0,0 +1,40 @@
+{
+ "parent": "minecraft:husbandry/tame_an_animal",
+ "criteria": {
+ "remove_wolf_armor": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wolf"
+ }
+ }
+ ],
+ "item": {
+ "items": "minecraft:shears"
+ }
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.remove_wolf_armor.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:shears"
+ },
+ "title": {
+ "translate": "advancements.husbandry.remove_wolf_armor.title"
+ }
+ },
+ "requirements": [
+ [
+ "remove_wolf_armor"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/repair_wolf_armor.json b/src/main/resources/data/minecraft/advancement/husbandry/repair_wolf_armor.json
new file mode 100644
index 0000000..c6ad2fb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/repair_wolf_armor.json
@@ -0,0 +1,48 @@
+{
+ "parent": "minecraft:husbandry/tame_an_animal",
+ "criteria": {
+ "repair_wolf_armor": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wolf",
+ "equipment": {
+ "body": {
+ "components": {
+ "minecraft:damage": 0
+ },
+ "items": "minecraft:wolf_armor"
+ }
+ }
+ }
+ }
+ ],
+ "item": {
+ "items": "minecraft:armadillo_scute"
+ }
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.repair_wolf_armor.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:wolf_armor"
+ },
+ "title": {
+ "translate": "advancements.husbandry.repair_wolf_armor.title"
+ }
+ },
+ "requirements": [
+ [
+ "repair_wolf_armor"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/ride_a_boat_with_a_goat.json b/src/main/resources/data/minecraft/advancement/husbandry/ride_a_boat_with_a_goat.json
new file mode 100644
index 0000000..0ae432c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/ride_a_boat_with_a_goat.json
@@ -0,0 +1,42 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "ride_a_boat_with_a_goat": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "vehicle": {
+ "type": "minecraft:boat",
+ "passenger": {
+ "type": "minecraft:goat"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:started_riding"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.ride_a_boat_with_a_goat.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:oak_boat"
+ },
+ "title": {
+ "translate": "advancements.husbandry.ride_a_boat_with_a_goat.title"
+ }
+ },
+ "requirements": [
+ [
+ "ride_a_boat_with_a_goat"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/root.json b/src/main/resources/data/minecraft/advancement/husbandry/root.json
new file mode 100644
index 0000000..4061aa9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/root.json
@@ -0,0 +1,28 @@
+{
+ "criteria": {
+ "consumed_item": {
+ "trigger": "minecraft:consume_item"
+ }
+ },
+ "display": {
+ "announce_to_chat": false,
+ "background": "minecraft:textures/gui/advancements/backgrounds/husbandry.png",
+ "description": {
+ "translate": "advancements.husbandry.root.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:hay_block"
+ },
+ "show_toast": false,
+ "title": {
+ "translate": "advancements.husbandry.root.title"
+ }
+ },
+ "requirements": [
+ [
+ "consumed_item"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/safely_harvest_honey.json b/src/main/resources/data/minecraft/advancement/husbandry/safely_harvest_honey.json
new file mode 100644
index 0000000..f530dc1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/safely_harvest_honey.json
@@ -0,0 +1,45 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "safely_harvest_honey": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": "#minecraft:beehives"
+ },
+ "smokey": true
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:glass_bottle"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.safely_harvest_honey.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:honey_bottle"
+ },
+ "title": {
+ "translate": "advancements.husbandry.safely_harvest_honey.title"
+ }
+ },
+ "requirements": [
+ [
+ "safely_harvest_honey"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/silk_touch_nest.json b/src/main/resources/data/minecraft/advancement/husbandry/silk_touch_nest.json
new file mode 100644
index 0000000..1fd94b8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/silk_touch_nest.json
@@ -0,0 +1,42 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "silk_touch_nest": {
+ "conditions": {
+ "block": "minecraft:bee_nest",
+ "item": {
+ "predicates": {
+ "minecraft:enchantments": [
+ {
+ "enchantments": "minecraft:silk_touch",
+ "levels": {
+ "min": 1
+ }
+ }
+ ]
+ }
+ },
+ "num_bees_inside": 3
+ },
+ "trigger": "minecraft:bee_nest_destroyed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.silk_touch_nest.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:bee_nest"
+ },
+ "title": {
+ "translate": "advancements.husbandry.silk_touch_nest.title"
+ }
+ },
+ "requirements": [
+ [
+ "silk_touch_nest"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/tactical_fishing.json b/src/main/resources/data/minecraft/advancement/husbandry/tactical_fishing.json
new file mode 100644
index 0000000..bc8efbe
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/tactical_fishing.json
@@ -0,0 +1,58 @@
+{
+ "parent": "minecraft:husbandry/fishy_business",
+ "criteria": {
+ "cod_bucket": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:cod_bucket"
+ }
+ },
+ "trigger": "minecraft:filled_bucket"
+ },
+ "pufferfish_bucket": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:pufferfish_bucket"
+ }
+ },
+ "trigger": "minecraft:filled_bucket"
+ },
+ "salmon_bucket": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:salmon_bucket"
+ }
+ },
+ "trigger": "minecraft:filled_bucket"
+ },
+ "tropical_fish_bucket": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:tropical_fish_bucket"
+ }
+ },
+ "trigger": "minecraft:filled_bucket"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.tactical_fishing.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:pufferfish_bucket"
+ },
+ "title": {
+ "translate": "advancements.husbandry.tactical_fishing.title"
+ }
+ },
+ "requirements": [
+ [
+ "cod_bucket",
+ "tropical_fish_bucket",
+ "pufferfish_bucket",
+ "salmon_bucket"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/tadpole_in_a_bucket.json b/src/main/resources/data/minecraft/advancement/husbandry/tadpole_in_a_bucket.json
new file mode 100644
index 0000000..66ee8d8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/tadpole_in_a_bucket.json
@@ -0,0 +1,31 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "tadpole_bucket": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:tadpole_bucket"
+ }
+ },
+ "trigger": "minecraft:filled_bucket"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.tadpole_in_a_bucket.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:tadpole_bucket"
+ },
+ "title": {
+ "translate": "advancements.husbandry.tadpole_in_a_bucket.title"
+ }
+ },
+ "requirements": [
+ [
+ "tadpole_bucket"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/tame_an_animal.json b/src/main/resources/data/minecraft/advancement/husbandry/tame_an_animal.json
new file mode 100644
index 0000000..69168b2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/tame_an_animal.json
@@ -0,0 +1,26 @@
+{
+ "parent": "minecraft:husbandry/root",
+ "criteria": {
+ "tamed_animal": {
+ "trigger": "minecraft:tame_animal"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.tame_an_animal.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:lead"
+ },
+ "title": {
+ "translate": "advancements.husbandry.tame_an_animal.title"
+ }
+ },
+ "requirements": [
+ [
+ "tamed_animal"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/wax_off.json b/src/main/resources/data/minecraft/advancement/husbandry/wax_off.json
new file mode 100644
index 0000000..288ba95
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/wax_off.json
@@ -0,0 +1,88 @@
+{
+ "parent": "minecraft:husbandry/wax_on",
+ "criteria": {
+ "wax_off": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": [
+ "minecraft:waxed_copper_block",
+ "minecraft:waxed_exposed_copper",
+ "minecraft:waxed_weathered_copper",
+ "minecraft:waxed_oxidized_copper",
+ "minecraft:waxed_cut_copper",
+ "minecraft:waxed_exposed_cut_copper",
+ "minecraft:waxed_weathered_cut_copper",
+ "minecraft:waxed_oxidized_cut_copper",
+ "minecraft:waxed_cut_copper_slab",
+ "minecraft:waxed_exposed_cut_copper_slab",
+ "minecraft:waxed_weathered_cut_copper_slab",
+ "minecraft:waxed_oxidized_cut_copper_slab",
+ "minecraft:waxed_cut_copper_stairs",
+ "minecraft:waxed_exposed_cut_copper_stairs",
+ "minecraft:waxed_weathered_cut_copper_stairs",
+ "minecraft:waxed_oxidized_cut_copper_stairs",
+ "minecraft:waxed_chiseled_copper",
+ "minecraft:waxed_exposed_chiseled_copper",
+ "minecraft:waxed_weathered_chiseled_copper",
+ "minecraft:waxed_oxidized_chiseled_copper",
+ "minecraft:waxed_copper_door",
+ "minecraft:waxed_exposed_copper_door",
+ "minecraft:waxed_weathered_copper_door",
+ "minecraft:waxed_oxidized_copper_door",
+ "minecraft:waxed_copper_trapdoor",
+ "minecraft:waxed_exposed_copper_trapdoor",
+ "minecraft:waxed_weathered_copper_trapdoor",
+ "minecraft:waxed_oxidized_copper_trapdoor",
+ "minecraft:waxed_copper_grate",
+ "minecraft:waxed_exposed_copper_grate",
+ "minecraft:waxed_weathered_copper_grate",
+ "minecraft:waxed_oxidized_copper_grate",
+ "minecraft:waxed_copper_bulb",
+ "minecraft:waxed_exposed_copper_bulb",
+ "minecraft:waxed_weathered_copper_bulb",
+ "minecraft:waxed_oxidized_copper_bulb"
+ ]
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": [
+ "minecraft:wooden_axe",
+ "minecraft:golden_axe",
+ "minecraft:stone_axe",
+ "minecraft:iron_axe",
+ "minecraft:diamond_axe",
+ "minecraft:netherite_axe"
+ ]
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.wax_off.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:stone_axe"
+ },
+ "title": {
+ "translate": "advancements.husbandry.wax_off.title"
+ }
+ },
+ "requirements": [
+ [
+ "wax_off"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/wax_on.json b/src/main/resources/data/minecraft/advancement/husbandry/wax_on.json
new file mode 100644
index 0000000..ca319bf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/wax_on.json
@@ -0,0 +1,81 @@
+{
+ "parent": "minecraft:husbandry/safely_harvest_honey",
+ "criteria": {
+ "wax_on": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": [
+ "minecraft:copper_block",
+ "minecraft:exposed_copper",
+ "minecraft:weathered_copper",
+ "minecraft:oxidized_copper",
+ "minecraft:cut_copper",
+ "minecraft:exposed_cut_copper",
+ "minecraft:weathered_cut_copper",
+ "minecraft:oxidized_cut_copper",
+ "minecraft:cut_copper_slab",
+ "minecraft:exposed_cut_copper_slab",
+ "minecraft:weathered_cut_copper_slab",
+ "minecraft:oxidized_cut_copper_slab",
+ "minecraft:cut_copper_stairs",
+ "minecraft:exposed_cut_copper_stairs",
+ "minecraft:weathered_cut_copper_stairs",
+ "minecraft:oxidized_cut_copper_stairs",
+ "minecraft:chiseled_copper",
+ "minecraft:exposed_chiseled_copper",
+ "minecraft:weathered_chiseled_copper",
+ "minecraft:oxidized_chiseled_copper",
+ "minecraft:copper_door",
+ "minecraft:exposed_copper_door",
+ "minecraft:weathered_copper_door",
+ "minecraft:oxidized_copper_door",
+ "minecraft:copper_trapdoor",
+ "minecraft:exposed_copper_trapdoor",
+ "minecraft:weathered_copper_trapdoor",
+ "minecraft:oxidized_copper_trapdoor",
+ "minecraft:copper_grate",
+ "minecraft:exposed_copper_grate",
+ "minecraft:weathered_copper_grate",
+ "minecraft:oxidized_copper_grate",
+ "minecraft:copper_bulb",
+ "minecraft:exposed_copper_bulb",
+ "minecraft:weathered_copper_bulb",
+ "minecraft:oxidized_copper_bulb"
+ ]
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:honeycomb"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.wax_on.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:honeycomb"
+ },
+ "title": {
+ "translate": "advancements.husbandry.wax_on.title"
+ }
+ },
+ "requirements": [
+ [
+ "wax_on"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/husbandry/whole_pack.json b/src/main/resources/data/minecraft/advancement/husbandry/whole_pack.json
new file mode 100644
index 0000000..26a20d5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/husbandry/whole_pack.json
@@ -0,0 +1,204 @@
+{
+ "parent": "minecraft:husbandry/tame_an_animal",
+ "criteria": {
+ "minecraft:ashen": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:ashen"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:black": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:black"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:chestnut": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:chestnut"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:pale": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:pale"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:rusty": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:rusty"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:snowy": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:snowy"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:spotted": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:spotted"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:striped": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:striped"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ },
+ "minecraft:woods": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type_specific": {
+ "type": "minecraft:wolf",
+ "variant": "minecraft:woods"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:tame_animal"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.husbandry.whole_pack.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:bone"
+ },
+ "title": {
+ "translate": "advancements.husbandry.whole_pack.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:ashen"
+ ],
+ [
+ "minecraft:black"
+ ],
+ [
+ "minecraft:chestnut"
+ ],
+ [
+ "minecraft:pale"
+ ],
+ [
+ "minecraft:rusty"
+ ],
+ [
+ "minecraft:snowy"
+ ],
+ [
+ "minecraft:spotted"
+ ],
+ [
+ "minecraft:striped"
+ ],
+ [
+ "minecraft:woods"
+ ]
+ ],
+ "rewards": {
+ "experience": 50
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/all_effects.json b/src/main/resources/data/minecraft/advancement/nether/all_effects.json
new file mode 100644
index 0000000..fdf89ac
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/all_effects.json
@@ -0,0 +1,68 @@
+{
+ "parent": "minecraft:nether/all_potions",
+ "criteria": {
+ "all_effects": {
+ "conditions": {
+ "effects": {
+ "minecraft:absorption": {},
+ "minecraft:bad_omen": {},
+ "minecraft:blindness": {},
+ "minecraft:conduit_power": {},
+ "minecraft:darkness": {},
+ "minecraft:dolphins_grace": {},
+ "minecraft:fire_resistance": {},
+ "minecraft:glowing": {},
+ "minecraft:haste": {},
+ "minecraft:hero_of_the_village": {},
+ "minecraft:hunger": {},
+ "minecraft:infested": {},
+ "minecraft:invisibility": {},
+ "minecraft:jump_boost": {},
+ "minecraft:levitation": {},
+ "minecraft:mining_fatigue": {},
+ "minecraft:nausea": {},
+ "minecraft:night_vision": {},
+ "minecraft:oozing": {},
+ "minecraft:poison": {},
+ "minecraft:raid_omen": {},
+ "minecraft:regeneration": {},
+ "minecraft:resistance": {},
+ "minecraft:slow_falling": {},
+ "minecraft:slowness": {},
+ "minecraft:speed": {},
+ "minecraft:strength": {},
+ "minecraft:trial_omen": {},
+ "minecraft:water_breathing": {},
+ "minecraft:weakness": {},
+ "minecraft:weaving": {},
+ "minecraft:wind_charged": {},
+ "minecraft:wither": {}
+ }
+ },
+ "trigger": "minecraft:effects_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.all_effects.description"
+ },
+ "frame": "challenge",
+ "hidden": true,
+ "icon": {
+ "count": 1,
+ "id": "minecraft:bucket"
+ },
+ "title": {
+ "translate": "advancements.nether.all_effects.title"
+ }
+ },
+ "requirements": [
+ [
+ "all_effects"
+ ]
+ ],
+ "rewards": {
+ "experience": 1000
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/all_potions.json b/src/main/resources/data/minecraft/advancement/nether/all_potions.json
new file mode 100644
index 0000000..43f6f1f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/all_potions.json
@@ -0,0 +1,51 @@
+{
+ "parent": "minecraft:nether/brew_potion",
+ "criteria": {
+ "all_effects": {
+ "conditions": {
+ "effects": {
+ "minecraft:fire_resistance": {},
+ "minecraft:infested": {},
+ "minecraft:invisibility": {},
+ "minecraft:jump_boost": {},
+ "minecraft:night_vision": {},
+ "minecraft:oozing": {},
+ "minecraft:poison": {},
+ "minecraft:regeneration": {},
+ "minecraft:resistance": {},
+ "minecraft:slow_falling": {},
+ "minecraft:slowness": {},
+ "minecraft:speed": {},
+ "minecraft:strength": {},
+ "minecraft:water_breathing": {},
+ "minecraft:weakness": {},
+ "minecraft:weaving": {},
+ "minecraft:wind_charged": {}
+ }
+ },
+ "trigger": "minecraft:effects_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.all_potions.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:milk_bucket"
+ },
+ "title": {
+ "translate": "advancements.nether.all_potions.title"
+ }
+ },
+ "requirements": [
+ [
+ "all_effects"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/brew_potion.json b/src/main/resources/data/minecraft/advancement/nether/brew_potion.json
new file mode 100644
index 0000000..c180197
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/brew_potion.json
@@ -0,0 +1,26 @@
+{
+ "parent": "minecraft:nether/obtain_blaze_rod",
+ "criteria": {
+ "potion": {
+ "trigger": "minecraft:brewed_potion"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.brew_potion.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:potion"
+ },
+ "title": {
+ "translate": "advancements.nether.brew_potion.title"
+ }
+ },
+ "requirements": [
+ [
+ "potion"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/charge_respawn_anchor.json b/src/main/resources/data/minecraft/advancement/nether/charge_respawn_anchor.json
new file mode 100644
index 0000000..c7a2b37
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/charge_respawn_anchor.json
@@ -0,0 +1,47 @@
+{
+ "parent": "minecraft:nether/obtain_crying_obsidian",
+ "criteria": {
+ "charge_respawn_anchor": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:respawn_anchor",
+ "state": {
+ "charges": "4"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:glowstone"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.charge_respawn_anchor.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:respawn_anchor"
+ },
+ "title": {
+ "translate": "advancements.nether.charge_respawn_anchor.title"
+ }
+ },
+ "requirements": [
+ [
+ "charge_respawn_anchor"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/create_beacon.json b/src/main/resources/data/minecraft/advancement/nether/create_beacon.json
new file mode 100644
index 0000000..53aaad6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/create_beacon.json
@@ -0,0 +1,31 @@
+{
+ "parent": "minecraft:nether/summon_wither",
+ "criteria": {
+ "beacon": {
+ "conditions": {
+ "level": {
+ "min": 1
+ }
+ },
+ "trigger": "minecraft:construct_beacon"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.create_beacon.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:beacon"
+ },
+ "title": {
+ "translate": "advancements.nether.create_beacon.title"
+ }
+ },
+ "requirements": [
+ [
+ "beacon"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/create_full_beacon.json b/src/main/resources/data/minecraft/advancement/nether/create_full_beacon.json
new file mode 100644
index 0000000..9744f0e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/create_full_beacon.json
@@ -0,0 +1,30 @@
+{
+ "parent": "minecraft:nether/create_beacon",
+ "criteria": {
+ "beacon": {
+ "conditions": {
+ "level": 4
+ },
+ "trigger": "minecraft:construct_beacon"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.create_full_beacon.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:beacon"
+ },
+ "title": {
+ "translate": "advancements.nether.create_full_beacon.title"
+ }
+ },
+ "requirements": [
+ [
+ "beacon"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/distract_piglin.json b/src/main/resources/data/minecraft/advancement/nether/distract_piglin.json
new file mode 100644
index 0000000..2faa718
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/distract_piglin.json
@@ -0,0 +1,180 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "distract_piglin": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:piglin",
+ "flags": {
+ "is_baby": false
+ }
+ }
+ }
+ ],
+ "item": {
+ "items": "#minecraft:piglin_loved"
+ },
+ "player": [
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "head": {
+ "items": "minecraft:golden_helmet"
+ }
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "chest": {
+ "items": "minecraft:golden_chestplate"
+ }
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "legs": {
+ "items": "minecraft:golden_leggings"
+ }
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "feet": {
+ "items": "minecraft:golden_boots"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:thrown_item_picked_up_by_entity"
+ },
+ "distract_piglin_directly": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:piglin",
+ "flags": {
+ "is_baby": false
+ }
+ }
+ }
+ ],
+ "item": {
+ "items": "minecraft:gold_ingot"
+ },
+ "player": [
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "head": {
+ "items": "minecraft:golden_helmet"
+ }
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "chest": {
+ "items": "minecraft:golden_chestplate"
+ }
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "legs": {
+ "items": "minecraft:golden_leggings"
+ }
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "equipment": {
+ "feet": {
+ "items": "minecraft:golden_boots"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_interacted_with_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.distract_piglin.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:gold_ingot"
+ },
+ "title": {
+ "translate": "advancements.nether.distract_piglin.title"
+ }
+ },
+ "requirements": [
+ [
+ "distract_piglin",
+ "distract_piglin_directly"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/explore_nether.json b/src/main/resources/data/minecraft/advancement/nether/explore_nether.json
new file mode 100644
index 0000000..76fdf21
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/explore_nether.json
@@ -0,0 +1,119 @@
+{
+ "parent": "minecraft:nether/ride_strider",
+ "criteria": {
+ "minecraft:basalt_deltas": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:basalt_deltas"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:crimson_forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:crimson_forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:nether_wastes": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:nether_wastes"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:soul_sand_valley": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:soul_sand_valley"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ },
+ "minecraft:warped_forest": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "biomes": "minecraft:warped_forest"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.explore_nether.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:netherite_boots"
+ },
+ "title": {
+ "translate": "advancements.nether.explore_nether.title"
+ }
+ },
+ "requirements": [
+ [
+ "minecraft:nether_wastes"
+ ],
+ [
+ "minecraft:soul_sand_valley"
+ ],
+ [
+ "minecraft:crimson_forest"
+ ],
+ [
+ "minecraft:warped_forest"
+ ],
+ [
+ "minecraft:basalt_deltas"
+ ]
+ ],
+ "rewards": {
+ "experience": 500
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/fast_travel.json b/src/main/resources/data/minecraft/advancement/nether/fast_travel.json
new file mode 100644
index 0000000..3c61107
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/fast_travel.json
@@ -0,0 +1,37 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "travelled": {
+ "conditions": {
+ "distance": {
+ "horizontal": {
+ "min": 7000.0
+ }
+ }
+ },
+ "trigger": "minecraft:nether_travel"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.fast_travel.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:map"
+ },
+ "title": {
+ "translate": "advancements.nether.fast_travel.title"
+ }
+ },
+ "requirements": [
+ [
+ "travelled"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/find_bastion.json b/src/main/resources/data/minecraft/advancement/nether/find_bastion.json
new file mode 100644
index 0000000..9b25346
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/find_bastion.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "bastion": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "structures": "minecraft:bastion_remnant"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.find_bastion.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:polished_blackstone_bricks"
+ },
+ "title": {
+ "translate": "advancements.nether.find_bastion.title"
+ }
+ },
+ "requirements": [
+ [
+ "bastion"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/find_fortress.json b/src/main/resources/data/minecraft/advancement/nether/find_fortress.json
new file mode 100644
index 0000000..26b1ee3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/find_fortress.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "fortress": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "structures": "minecraft:fortress"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.find_fortress.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:nether_bricks"
+ },
+ "title": {
+ "translate": "advancements.nether.find_fortress.title"
+ }
+ },
+ "requirements": [
+ [
+ "fortress"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/get_wither_skull.json b/src/main/resources/data/minecraft/advancement/nether/get_wither_skull.json
new file mode 100644
index 0000000..aee6f71
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/get_wither_skull.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:nether/find_fortress",
+ "criteria": {
+ "wither_skull": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wither_skeleton_skull"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.get_wither_skull.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:wither_skeleton_skull"
+ },
+ "title": {
+ "translate": "advancements.nether.get_wither_skull.title"
+ }
+ },
+ "requirements": [
+ [
+ "wither_skull"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/loot_bastion.json b/src/main/resources/data/minecraft/advancement/nether/loot_bastion.json
new file mode 100644
index 0000000..97a15e0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/loot_bastion.json
@@ -0,0 +1,50 @@
+{
+ "parent": "minecraft:nether/find_bastion",
+ "criteria": {
+ "loot_bastion_bridge": {
+ "conditions": {
+ "loot_table": "minecraft:chests/bastion_bridge"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "loot_bastion_hoglin_stable": {
+ "conditions": {
+ "loot_table": "minecraft:chests/bastion_hoglin_stable"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "loot_bastion_other": {
+ "conditions": {
+ "loot_table": "minecraft:chests/bastion_other"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ },
+ "loot_bastion_treasure": {
+ "conditions": {
+ "loot_table": "minecraft:chests/bastion_treasure"
+ },
+ "trigger": "minecraft:player_generates_container_loot"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.loot_bastion.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:chest"
+ },
+ "title": {
+ "translate": "advancements.nether.loot_bastion.title"
+ }
+ },
+ "requirements": [
+ [
+ "loot_bastion_other",
+ "loot_bastion_treasure",
+ "loot_bastion_hoglin_stable",
+ "loot_bastion_bridge"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/netherite_armor.json b/src/main/resources/data/minecraft/advancement/nether/netherite_armor.json
new file mode 100644
index 0000000..29e64ba
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/netherite_armor.json
@@ -0,0 +1,46 @@
+{
+ "parent": "minecraft:nether/obtain_ancient_debris",
+ "criteria": {
+ "netherite_armor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_helmet"
+ },
+ {
+ "items": "minecraft:netherite_chestplate"
+ },
+ {
+ "items": "minecraft:netherite_leggings"
+ },
+ {
+ "items": "minecraft:netherite_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.netherite_armor.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:netherite_chestplate"
+ },
+ "title": {
+ "translate": "advancements.nether.netherite_armor.title"
+ }
+ },
+ "requirements": [
+ [
+ "netherite_armor"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/obtain_ancient_debris.json b/src/main/resources/data/minecraft/advancement/nether/obtain_ancient_debris.json
new file mode 100644
index 0000000..d153810
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/obtain_ancient_debris.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "ancient_debris": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ancient_debris"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.obtain_ancient_debris.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:ancient_debris"
+ },
+ "title": {
+ "translate": "advancements.nether.obtain_ancient_debris.title"
+ }
+ },
+ "requirements": [
+ [
+ "ancient_debris"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/obtain_blaze_rod.json b/src/main/resources/data/minecraft/advancement/nether/obtain_blaze_rod.json
new file mode 100644
index 0000000..e18cbbf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/obtain_blaze_rod.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:nether/find_fortress",
+ "criteria": {
+ "blaze_rod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blaze_rod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.obtain_blaze_rod.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:blaze_rod"
+ },
+ "title": {
+ "translate": "advancements.nether.obtain_blaze_rod.title"
+ }
+ },
+ "requirements": [
+ [
+ "blaze_rod"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/obtain_crying_obsidian.json b/src/main/resources/data/minecraft/advancement/nether/obtain_crying_obsidian.json
new file mode 100644
index 0000000..8561c21
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/obtain_crying_obsidian.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "crying_obsidian": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crying_obsidian"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.obtain_crying_obsidian.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:crying_obsidian"
+ },
+ "title": {
+ "translate": "advancements.nether.obtain_crying_obsidian.title"
+ }
+ },
+ "requirements": [
+ [
+ "crying_obsidian"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/return_to_sender.json b/src/main/resources/data/minecraft/advancement/nether/return_to_sender.json
new file mode 100644
index 0000000..22b88ee
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/return_to_sender.json
@@ -0,0 +1,52 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "killed_ghast": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ghast"
+ }
+ }
+ ],
+ "killing_blow": {
+ "direct_entity": {
+ "type": "minecraft:fireball"
+ },
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_projectile"
+ }
+ ]
+ }
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.return_to_sender.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:fire_charge"
+ },
+ "title": {
+ "translate": "advancements.nether.return_to_sender.title"
+ }
+ },
+ "requirements": [
+ [
+ "killed_ghast"
+ ]
+ ],
+ "rewards": {
+ "experience": 50
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/ride_strider.json b/src/main/resources/data/minecraft/advancement/nether/ride_strider.json
new file mode 100644
index 0000000..376de8e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/ride_strider.json
@@ -0,0 +1,42 @@
+{
+ "parent": "minecraft:nether/root",
+ "criteria": {
+ "used_warped_fungus_on_a_stick": {
+ "conditions": {
+ "item": {
+ "items": "minecraft:warped_fungus_on_a_stick"
+ },
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "vehicle": {
+ "type": "minecraft:strider"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_durability_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.ride_strider.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:warped_fungus_on_a_stick"
+ },
+ "title": {
+ "translate": "advancements.nether.ride_strider.title"
+ }
+ },
+ "requirements": [
+ [
+ "used_warped_fungus_on_a_stick"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/ride_strider_in_overworld_lava.json b/src/main/resources/data/minecraft/advancement/nether/ride_strider_in_overworld_lava.json
new file mode 100644
index 0000000..c172699
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/ride_strider_in_overworld_lava.json
@@ -0,0 +1,47 @@
+{
+ "parent": "minecraft:nether/ride_strider",
+ "criteria": {
+ "ride_entity_distance": {
+ "conditions": {
+ "distance": {
+ "horizontal": {
+ "min": 50.0
+ }
+ },
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "dimension": "minecraft:overworld"
+ },
+ "vehicle": {
+ "type": "minecraft:strider"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:ride_entity_in_lava"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.ride_strider_in_overworld_lava.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:warped_fungus_on_a_stick"
+ },
+ "title": {
+ "translate": "advancements.nether.ride_strider_in_overworld_lava.title"
+ }
+ },
+ "requirements": [
+ [
+ "ride_entity_distance"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/root.json b/src/main/resources/data/minecraft/advancement/nether/root.json
new file mode 100644
index 0000000..6ef424e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/root.json
@@ -0,0 +1,31 @@
+{
+ "criteria": {
+ "entered_nether": {
+ "conditions": {
+ "to": "minecraft:the_nether"
+ },
+ "trigger": "minecraft:changed_dimension"
+ }
+ },
+ "display": {
+ "announce_to_chat": false,
+ "background": "minecraft:textures/gui/advancements/backgrounds/nether.png",
+ "description": {
+ "translate": "advancements.nether.root.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:red_nether_bricks"
+ },
+ "show_toast": false,
+ "title": {
+ "translate": "advancements.nether.root.title"
+ }
+ },
+ "requirements": [
+ [
+ "entered_nether"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/summon_wither.json b/src/main/resources/data/minecraft/advancement/nether/summon_wither.json
new file mode 100644
index 0000000..9c85556
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/summon_wither.json
@@ -0,0 +1,37 @@
+{
+ "parent": "minecraft:nether/get_wither_skull",
+ "criteria": {
+ "summoned": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:wither"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:summoned_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.summon_wither.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:nether_star"
+ },
+ "title": {
+ "translate": "advancements.nether.summon_wither.title"
+ }
+ },
+ "requirements": [
+ [
+ "summoned"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/uneasy_alliance.json b/src/main/resources/data/minecraft/advancement/nether/uneasy_alliance.json
new file mode 100644
index 0000000..eb27bb7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/uneasy_alliance.json
@@ -0,0 +1,44 @@
+{
+ "parent": "minecraft:nether/return_to_sender",
+ "criteria": {
+ "killed_ghast": {
+ "conditions": {
+ "entity": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:ghast",
+ "location": {
+ "dimension": "minecraft:overworld"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:player_killed_entity"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.uneasy_alliance.description"
+ },
+ "frame": "challenge",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:ghast_tear"
+ },
+ "title": {
+ "translate": "advancements.nether.uneasy_alliance.title"
+ }
+ },
+ "requirements": [
+ [
+ "killed_ghast"
+ ]
+ ],
+ "rewards": {
+ "experience": 100
+ },
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/nether/use_lodestone.json b/src/main/resources/data/minecraft/advancement/nether/use_lodestone.json
new file mode 100644
index 0000000..dfa084d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/nether/use_lodestone.json
@@ -0,0 +1,44 @@
+{
+ "parent": "minecraft:nether/obtain_ancient_debris",
+ "criteria": {
+ "use_lodestone": {
+ "conditions": {
+ "location": [
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "block": {
+ "blocks": "minecraft:lodestone"
+ }
+ }
+ },
+ {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:compass"
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:item_used_on_block"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.nether.use_lodestone.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:lodestone"
+ },
+ "title": {
+ "translate": "advancements.nether.use_lodestone.title"
+ }
+ },
+ "requirements": [
+ [
+ "use_lodestone"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/blaze_powder.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/blaze_powder.json
new file mode 100644
index 0000000..8d1dddd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/blaze_powder.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blaze_rod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blaze_rod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blaze_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blaze_rod"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blaze_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/brewing_stand.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/brewing_stand.json
new file mode 100644
index 0000000..0ac47f8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/brewing_stand.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blaze_rod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blaze_rod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brewing_stand"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blaze_rod"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brewing_stand"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/cauldron.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/cauldron.json
new file mode 100644
index 0000000..ff39eb3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/cauldron.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cauldron"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_water_bucket": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:water_bucket"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_water_bucket"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cauldron"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/fermented_spider_eye.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/fermented_spider_eye.json
new file mode 100644
index 0000000..8a3761d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/fermented_spider_eye.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_spider_eye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spider_eye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:fermented_spider_eye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_spider_eye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:fermented_spider_eye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/glass_bottle.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/glass_bottle.json
new file mode 100644
index 0000000..fe21e43
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/glass_bottle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:glass_bottle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:glass_bottle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/glistering_melon_slice.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/glistering_melon_slice.json
new file mode 100644
index 0000000..857f041
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/glistering_melon_slice.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_melon": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:melon_slice"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:glistering_melon_slice"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_melon"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:glistering_melon_slice"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/golden_carrot.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/golden_carrot.json
new file mode 100644
index 0000000..08d9c0d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/golden_carrot.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_nugget": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_nugget"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_carrot"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_nugget"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_carrot"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/brewing/magma_cream.json b/src/main/resources/data/minecraft/advancement/recipes/brewing/magma_cream.json
new file mode 100644
index 0000000..fc58250
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/brewing/magma_cream.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blaze_powder": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blaze_powder"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magma_cream"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blaze_powder"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magma_cream"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_planks.json
new file mode 100644
index 0000000..6ac8ef0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:acacia_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_slab.json
new file mode 100644
index 0000000..b689bb1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_stairs.json
new file mode 100644
index 0000000..48d940b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_wood.json
new file mode 100644
index 0000000..3e2bb81
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/acacia_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/amethyst_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/amethyst_block.json
new file mode 100644
index 0000000..427da1b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/amethyst_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_amethyst_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:amethyst_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:amethyst_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_amethyst_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:amethyst_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite.json
new file mode 100644
index 0000000..66f931d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:andesite"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:andesite"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_slab.json
new file mode 100644
index 0000000..34f4b6f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:andesite_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:andesite_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_slab_from_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_slab_from_andesite_stonecutting.json
new file mode 100644
index 0000000..fd703a5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_slab_from_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:andesite_slab_from_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:andesite_slab_from_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_stairs.json
new file mode 100644
index 0000000..a5645ee
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:andesite_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:andesite_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_stairs_from_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_stairs_from_andesite_stonecutting.json
new file mode 100644
index 0000000..2206f37
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/andesite_stairs_from_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:andesite_stairs_from_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:andesite_stairs_from_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_block.json
new file mode 100644
index 0000000..c738c90
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bamboo": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bamboo"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_mosaic_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_mosaic_slab.json
new file mode 100644
index 0000000..9204c7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_mosaic_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bamboo_mosaic": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_mosaic"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_mosaic_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bamboo_mosaic"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_mosaic_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_mosaic_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_mosaic_stairs.json
new file mode 100644
index 0000000..7ba886b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_mosaic_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bamboo_mosaic": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_mosaic"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_mosaic_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bamboo_mosaic"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_mosaic_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_planks.json
new file mode 100644
index 0000000..f8a7cd8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:bamboo_blocks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_slab.json
new file mode 100644
index 0000000..bd1270c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_stairs.json
new file mode 100644
index 0000000..671a991
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bamboo_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_planks.json
new file mode 100644
index 0000000..33ff452
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:birch_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_slab.json
new file mode 100644
index 0000000..22b07f0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_stairs.json
new file mode 100644
index 0000000..93c4a0a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_wood.json
new file mode 100644
index 0000000..ca81455
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/birch_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_concrete_powder.json
new file mode 100644
index 0000000..cada244
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_stained_glass.json
new file mode 100644
index 0000000..8cdecae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_terracotta.json
new file mode 100644
index 0000000..da09c67
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/black_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_slab.json
new file mode 100644
index 0000000..396bfc7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blackstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blackstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_slab_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_slab_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..358fd4b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_slab_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blackstone_slab_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blackstone_slab_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_stairs.json
new file mode 100644
index 0000000..4d3708f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blackstone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blackstone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_stairs_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_stairs_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..41a99da
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blackstone_stairs_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blackstone_stairs_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blackstone_stairs_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_concrete_powder.json
new file mode 100644
index 0000000..9f25469
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_ice.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_ice.json
new file mode 100644
index 0000000..da1920a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_ice.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_packed_ice": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:packed_ice"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_ice"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_packed_ice"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_ice"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_stained_glass.json
new file mode 100644
index 0000000..abfc34c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_terracotta.json
new file mode 100644
index 0000000..76b6ed8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/blue_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bone_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bone_block.json
new file mode 100644
index 0000000..efb51c7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bone_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bone_meal": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bone_meal"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bone_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bone_meal"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bone_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bookshelf.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bookshelf.json
new file mode 100644
index 0000000..940dc9d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bookshelf.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_book": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:book"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bookshelf"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_book"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bookshelf"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_slab.json
new file mode 100644
index 0000000..bfc8c4a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_slab_from_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_slab_from_bricks_stonecutting.json
new file mode 100644
index 0000000..996dd7e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_slab_from_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brick_slab_from_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brick_slab_from_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_stairs.json
new file mode 100644
index 0000000..ab6165a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_stairs_from_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_stairs_from_bricks_stonecutting.json
new file mode 100644
index 0000000..10f026a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brick_stairs_from_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brick_stairs_from_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brick_stairs_from_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bricks.json
new file mode 100644
index 0000000..e7da1c7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_concrete_powder.json
new file mode 100644
index 0000000..0d70496
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_stained_glass.json
new file mode 100644
index 0000000..e16a209
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_terracotta.json
new file mode 100644
index 0000000..3bccb2a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/brown_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_planks.json
new file mode 100644
index 0000000..00dde3c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:cherry_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_slab.json
new file mode 100644
index 0000000..0ec95c0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_stairs.json
new file mode 100644
index 0000000..50c80f1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_wood.json
new file mode 100644
index 0000000..083d3a3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cherry_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_bookshelf.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_bookshelf.json
new file mode 100644
index 0000000..4cac964
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_bookshelf.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_book": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:book"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_bookshelf"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_book"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_bookshelf"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper.json
new file mode 100644
index 0000000..51c1eeb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper_from_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper_from_copper_block_stonecutting.json
new file mode 100644
index 0000000..5140c19
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper_from_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_copper_from_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_copper_from_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper_from_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper_from_cut_copper_stonecutting.json
new file mode 100644
index 0000000..466dcf8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_copper_from_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_copper_from_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_copper_from_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_deepslate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_deepslate.json
new file mode 100644
index 0000000..5150c4e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_deepslate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_deepslate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_deepslate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_deepslate_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_deepslate_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..ccf8dc0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_deepslate_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_deepslate_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_deepslate_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_nether_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_nether_bricks.json
new file mode 100644
index 0000000..88b409f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_nether_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_brick_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_brick_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_nether_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_brick_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_nether_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_nether_bricks_from_nether_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_nether_bricks_from_nether_bricks_stonecutting.json
new file mode 100644
index 0000000..0c2324b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_nether_bricks_from_nether_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_nether_bricks_from_nether_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_nether_bricks_from_nether_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone.json
new file mode 100644
index 0000000..e089c93
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_polished_blackstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_polished_blackstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..affd482
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_polished_blackstone_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_polished_blackstone_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..f084caa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_polished_blackstone_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_polished_blackstone_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_polished_blackstone_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_quartz_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_quartz_block.json
new file mode 100644
index 0000000..f56f83a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_quartz_block.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_pillar": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_pillar"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_quartz_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chiseled_quartz_block",
+ "has_quartz_block",
+ "has_quartz_pillar"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_quartz_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_quartz_block_from_quartz_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_quartz_block_from_quartz_block_stonecutting.json
new file mode 100644
index 0000000..2a50bf3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_quartz_block_from_quartz_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_quartz_block_from_quartz_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_quartz_block_from_quartz_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_red_sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_red_sandstone.json
new file mode 100644
index 0000000..236b2f2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_red_sandstone.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_cut_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_red_sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone",
+ "has_chiseled_red_sandstone",
+ "has_cut_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_red_sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_red_sandstone_from_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_red_sandstone_from_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..2ecfb75
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_red_sandstone_from_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_red_sandstone_from_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_red_sandstone_from_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_sandstone.json
new file mode 100644
index 0000000..450da41
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_sandstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_sandstone_from_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_sandstone_from_sandstone_stonecutting.json
new file mode 100644
index 0000000..8582a73
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_sandstone_from_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_sandstone_from_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_sandstone_from_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks.json
new file mode 100644
index 0000000..d51c7ae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_tag": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_stone_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tag"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_stone_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks_from_stone_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks_from_stone_bricks_stonecutting.json
new file mode 100644
index 0000000..d292337
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks_from_stone_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_stone_bricks_from_stone_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_stone_bricks_from_stone_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks_stone_from_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks_stone_from_stonecutting.json
new file mode 100644
index 0000000..3e54dab
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_stone_bricks_stone_from_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_stone_bricks_stone_from_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_stone_bricks_stone_from_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff.json
new file mode 100644
index 0000000..bf0d032
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_tuff"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_tuff"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks.json
new file mode 100644
index 0000000..471700c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_tuff_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_brick_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_brick_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_brick_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_tuff_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..d6bcb51
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_tuff_bricks_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_tuff_bricks_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_tuff_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_tuff_bricks_stonecutting.json
new file mode 100644
index 0000000..6a64f40
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_tuff_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_tuff_bricks_from_tuff_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_tuff_bricks_from_tuff_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_tuff_stonecutting.json
new file mode 100644
index 0000000..f6f51ba
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_bricks_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_tuff_bricks_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_tuff_bricks_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_from_tuff_stonecutting.json
new file mode 100644
index 0000000..b596b5b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/chiseled_tuff_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chiseled_tuff_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chiseled_tuff_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/clay.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/clay.json
new file mode 100644
index 0000000..ca22e41
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/clay.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_clay_ball": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:clay_ball"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:clay"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_clay_ball"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:clay"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/coal_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/coal_block.json
new file mode 100644
index 0000000..fae9443
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/coal_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_coal": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:coal"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coal_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_coal"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coal_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/coarse_dirt.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/coarse_dirt.json
new file mode 100644
index 0000000..f554b73
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/coarse_dirt.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coarse_dirt"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coarse_dirt"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_slab.json
new file mode 100644
index 0000000..514d2f3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobbled_deepslate_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobbled_deepslate_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_slab_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_slab_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..c38bba2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_slab_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobbled_deepslate_slab_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobbled_deepslate_slab_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_stairs.json
new file mode 100644
index 0000000..36881a5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobbled_deepslate_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobbled_deepslate_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_stairs_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_stairs_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..dc6df98
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobbled_deepslate_stairs_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobbled_deepslate_stairs_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobbled_deepslate_stairs_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_slab.json
new file mode 100644
index 0000000..e9137a3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobblestone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobblestone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_slab_from_cobblestone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_slab_from_cobblestone_stonecutting.json
new file mode 100644
index 0000000..5a2a0ca
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_slab_from_cobblestone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobblestone_slab_from_cobblestone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobblestone_slab_from_cobblestone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_stairs.json
new file mode 100644
index 0000000..313f238
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobblestone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobblestone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_stairs_from_cobblestone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_stairs_from_cobblestone_stonecutting.json
new file mode 100644
index 0000000..0d7117d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cobblestone_stairs_from_cobblestone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobblestone_stairs_from_cobblestone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobblestone_stairs_from_cobblestone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_block.json
new file mode 100644
index 0000000..ccb1af3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_grate.json
new file mode 100644
index 0000000..0748aaa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_grate_from_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_grate_from_copper_block_stonecutting.json
new file mode 100644
index 0000000..db02a2a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/copper_grate_from_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_grate_from_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_grate_from_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_deepslate_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_deepslate_bricks.json
new file mode 100644
index 0000000..9d01062
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_deepslate_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cracked_deepslate_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cracked_deepslate_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_deepslate_tiles.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_deepslate_tiles.json
new file mode 100644
index 0000000..a4088a4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_deepslate_tiles.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_tiles": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_tiles"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cracked_deepslate_tiles"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_tiles"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cracked_deepslate_tiles"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_nether_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_nether_bricks.json
new file mode 100644
index 0000000..8f52984
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_nether_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cracked_nether_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cracked_nether_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_polished_blackstone_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_polished_blackstone_bricks.json
new file mode 100644
index 0000000..1c6e2b1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_polished_blackstone_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cracked_polished_blackstone_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cracked_polished_blackstone_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_stone_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_stone_bricks.json
new file mode 100644
index 0000000..afecad1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cracked_stone_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cracked_stone_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cracked_stone_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_hyphae.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_hyphae.json
new file mode 100644
index 0000000..ed56eba
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_hyphae.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_stem"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_hyphae"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_hyphae"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_planks.json
new file mode 100644
index 0000000..068c734
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:crimson_stems"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_slab.json
new file mode 100644
index 0000000..6287bba
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_stairs.json
new file mode 100644
index 0000000..54629e8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/crimson_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper.json
new file mode 100644
index 0000000..5842a49
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_from_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_from_copper_block_stonecutting.json
new file mode 100644
index 0000000..b0f42ce
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_from_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper_from_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper_from_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab.json
new file mode 100644
index 0000000..8cd916b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab_from_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab_from_copper_block_stonecutting.json
new file mode 100644
index 0000000..dd6699e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab_from_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper_slab_from_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper_slab_from_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab_from_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab_from_cut_copper_stonecutting.json
new file mode 100644
index 0000000..1e1d347
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_slab_from_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper_slab_from_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper_slab_from_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs.json
new file mode 100644
index 0000000..aa841a4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs_from_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs_from_copper_block_stonecutting.json
new file mode 100644
index 0000000..d6021a0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs_from_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper_stairs_from_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper_stairs_from_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs_from_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs_from_cut_copper_stonecutting.json
new file mode 100644
index 0000000..7ec3553
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_copper_stairs_from_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_copper_stairs_from_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_copper_stairs_from_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone.json
new file mode 100644
index 0000000..4f4e56d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_red_sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_red_sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_from_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_from_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..2626bf8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_from_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_red_sandstone_from_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_red_sandstone_from_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab.json
new file mode 100644
index 0000000..a40ffcc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_red_sandstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_red_sandstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab_from_cut_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab_from_cut_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..6e8c882
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab_from_cut_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_red_sandstone_slab_from_cut_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_red_sandstone_slab_from_cut_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab_from_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab_from_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..d7c8a63
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_red_sandstone_slab_from_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_red_sandstone_slab_from_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_red_sandstone_slab_from_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone.json
new file mode 100644
index 0000000..a7b5cc6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_from_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_from_sandstone_stonecutting.json
new file mode 100644
index 0000000..73db84e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_from_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_sandstone_from_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_sandstone_from_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab.json
new file mode 100644
index 0000000..10affaa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_sandstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_sandstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab_from_cut_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab_from_cut_sandstone_stonecutting.json
new file mode 100644
index 0000000..b634647
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab_from_cut_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_sandstone_slab_from_cut_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_sandstone_slab_from_cut_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab_from_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab_from_sandstone_stonecutting.json
new file mode 100644
index 0000000..3017cd6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cut_sandstone_slab_from_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cut_sandstone_slab_from_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cut_sandstone_slab_from_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_concrete_powder.json
new file mode 100644
index 0000000..7e56c07
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_stained_glass.json
new file mode 100644
index 0000000..392dcac
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_terracotta.json
new file mode 100644
index 0000000..88981ad
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/cyan_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_planks.json
new file mode 100644
index 0000000..c2edc97
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:dark_oak_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_slab.json
new file mode 100644
index 0000000..b9b7981
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_stairs.json
new file mode 100644
index 0000000..37fef66
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_wood.json
new file mode 100644
index 0000000..7f626fb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_oak_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine.json
new file mode 100644
index 0000000..c7f7a40
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_prismarine"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_prismarine"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_slab.json
new file mode 100644
index 0000000..1aebf45
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dark_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_prismarine_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dark_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_prismarine_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_slab_from_dark_prismarine_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_slab_from_dark_prismarine_stonecutting.json
new file mode 100644
index 0000000..b3fb42e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_slab_from_dark_prismarine_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dark_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_prismarine_slab_from_dark_prismarine_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dark_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_prismarine_slab_from_dark_prismarine_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_stairs.json
new file mode 100644
index 0000000..50d5dcf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dark_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_prismarine_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dark_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_prismarine_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_stairs_from_dark_prismarine_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_stairs_from_dark_prismarine_stonecutting.json
new file mode 100644
index 0000000..911f69e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dark_prismarine_stairs_from_dark_prismarine_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dark_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_prismarine_stairs_from_dark_prismarine_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dark_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_prismarine_stairs_from_dark_prismarine_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate.json
new file mode 100644
index 0000000..18d876e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab.json
new file mode 100644
index 0000000..9a8c5d7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..32b6d21
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_slab_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_slab_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_deepslate_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_deepslate_bricks_stonecutting.json
new file mode 100644
index 0000000..c0e7624
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_deepslate_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_slab_from_deepslate_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_slab_from_deepslate_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..7fce54b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_slab_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_slab_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_slab_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs.json
new file mode 100644
index 0000000..513cc8f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..3739988
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_stairs_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_stairs_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_deepslate_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_deepslate_bricks_stonecutting.json
new file mode 100644
index 0000000..49efdf8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_deepslate_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_stairs_from_deepslate_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_stairs_from_deepslate_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..b194ed1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_brick_stairs_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_stairs_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_stairs_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks.json
new file mode 100644
index 0000000..6f21d28
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..50bb9a9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_bricks_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_bricks_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..aef6f1c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_bricks_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_bricks_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_bricks_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab.json
new file mode 100644
index 0000000..8b156c1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_tiles": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_tiles"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_tiles"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..a89f85d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_slab_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_slab_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_deepslate_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_deepslate_bricks_stonecutting.json
new file mode 100644
index 0000000..bea52e9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_deepslate_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_slab_from_deepslate_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_slab_from_deepslate_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_deepslate_tiles_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_deepslate_tiles_stonecutting.json
new file mode 100644
index 0000000..35cd426
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_deepslate_tiles_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_tiles": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_tiles"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_slab_from_deepslate_tiles_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_tiles"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_slab_from_deepslate_tiles_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..b79c0f7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_slab_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_slab_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_slab_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs.json
new file mode 100644
index 0000000..7c3c72b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_tiles": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_tiles"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_tiles"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..3ee1d0d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_stairs_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_stairs_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_deepslate_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_deepslate_bricks_stonecutting.json
new file mode 100644
index 0000000..3ba8b11
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_deepslate_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_stairs_from_deepslate_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_stairs_from_deepslate_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_deepslate_tiles_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_deepslate_tiles_stonecutting.json
new file mode 100644
index 0000000..3fd2105
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_deepslate_tiles_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_tiles": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_tiles"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_stairs_from_deepslate_tiles_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_tiles"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_stairs_from_deepslate_tiles_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..de129b1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tile_stairs_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_stairs_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_stairs_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles.json
new file mode 100644
index 0000000..3ecb725
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tiles"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tiles"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..5c4cfb2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tiles_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tiles_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_deepslate_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_deepslate_bricks_stonecutting.json
new file mode 100644
index 0000000..afb22ed
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_deepslate_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tiles_from_deepslate_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tiles_from_deepslate_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..3236263
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/deepslate_tiles_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tiles_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tiles_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diamond_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diamond_block.json
new file mode 100644
index 0000000..06ac57a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diamond_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite.json
new file mode 100644
index 0000000..4f8b5af
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diorite"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diorite"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_slab.json
new file mode 100644
index 0000000..666f1f2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diorite_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diorite_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_slab_from_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_slab_from_diorite_stonecutting.json
new file mode 100644
index 0000000..bee3144
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_slab_from_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diorite_slab_from_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diorite_slab_from_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_stairs.json
new file mode 100644
index 0000000..70fd044
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diorite_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diorite_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_stairs_from_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_stairs_from_diorite_stonecutting.json
new file mode 100644
index 0000000..fbb4c7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/diorite_stairs_from_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diorite_stairs_from_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diorite_stairs_from_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dried_kelp_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dried_kelp_block.json
new file mode 100644
index 0000000..6b5058d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dried_kelp_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dried_kelp": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dried_kelp"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dried_kelp_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dried_kelp"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dried_kelp_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dripstone_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dripstone_block.json
new file mode 100644
index 0000000..94c9419
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dripstone_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pointed_dripstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pointed_dripstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dripstone_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pointed_dripstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dripstone_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_bed.json
new file mode 100644
index 0000000..cf361c1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_black_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_black_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_carpet.json
new file mode 100644
index 0000000..3900027
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_black_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_black_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_wool.json
new file mode 100644
index 0000000..f3040dc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_black_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_black_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_black_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_bed.json
new file mode 100644
index 0000000..dc6607d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_blue_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_blue_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_carpet.json
new file mode 100644
index 0000000..f1efd20
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_blue_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_blue_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_wool.json
new file mode 100644
index 0000000..66b95b3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_blue_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_blue_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_blue_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_bed.json
new file mode 100644
index 0000000..f57f8d7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_brown_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_brown_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_carpet.json
new file mode 100644
index 0000000..c6754e2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_brown_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_brown_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_wool.json
new file mode 100644
index 0000000..8345ecb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_brown_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_brown_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_brown_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_bed.json
new file mode 100644
index 0000000..30eb18a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_cyan_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_cyan_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_carpet.json
new file mode 100644
index 0000000..6dd04f3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_cyan_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_cyan_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_wool.json
new file mode 100644
index 0000000..dc50081
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_cyan_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_cyan_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_cyan_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_bed.json
new file mode 100644
index 0000000..1b0e6ea
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_gray_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_gray_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_carpet.json
new file mode 100644
index 0000000..bcc80ed
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_gray_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_gray_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_wool.json
new file mode 100644
index 0000000..e7d85ca
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_gray_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_gray_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_gray_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_bed.json
new file mode 100644
index 0000000..6211d9d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_green_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_green_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_carpet.json
new file mode 100644
index 0000000..c77daae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_green_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_green_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_wool.json
new file mode 100644
index 0000000..70830bd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_green_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_green_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_green_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_bed.json
new file mode 100644
index 0000000..dd1cd70
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_light_blue_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_light_blue_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_carpet.json
new file mode 100644
index 0000000..2d3c370
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_light_blue_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_light_blue_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_wool.json
new file mode 100644
index 0000000..22148ae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_blue_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_light_blue_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_light_blue_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_bed.json
new file mode 100644
index 0000000..ef1f2b6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_light_gray_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_light_gray_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_carpet.json
new file mode 100644
index 0000000..15d9cd2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_light_gray_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_light_gray_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_wool.json
new file mode 100644
index 0000000..97d25d4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_light_gray_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_light_gray_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_light_gray_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_bed.json
new file mode 100644
index 0000000..775ac65
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_lime_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_lime_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_carpet.json
new file mode 100644
index 0000000..376f1be
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_lime_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_lime_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_wool.json
new file mode 100644
index 0000000..47e5df8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_lime_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_lime_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_lime_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_bed.json
new file mode 100644
index 0000000..d950fc6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_magenta_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_magenta_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_carpet.json
new file mode 100644
index 0000000..e6bc516
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_magenta_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_magenta_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_wool.json
new file mode 100644
index 0000000..f4bf3fb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_magenta_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_magenta_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_magenta_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_bed.json
new file mode 100644
index 0000000..1cdd148
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_orange_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_orange_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_carpet.json
new file mode 100644
index 0000000..75628c7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_orange_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_orange_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_wool.json
new file mode 100644
index 0000000..9054108
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_orange_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_orange_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_orange_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_bed.json
new file mode 100644
index 0000000..48541cf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_pink_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_pink_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_carpet.json
new file mode 100644
index 0000000..cd85f0a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_pink_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_pink_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_wool.json
new file mode 100644
index 0000000..9b76b8b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_pink_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_pink_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_pink_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_bed.json
new file mode 100644
index 0000000..f3d0e29
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_purple_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_purple_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_carpet.json
new file mode 100644
index 0000000..9072913
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_purple_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_purple_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_wool.json
new file mode 100644
index 0000000..f59e38e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_purple_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_purple_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_purple_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_bed.json
new file mode 100644
index 0000000..9ca7efc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_red_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_red_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_carpet.json
new file mode 100644
index 0000000..26226af
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_red_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_red_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_wool.json
new file mode 100644
index 0000000..7b9456e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_red_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_red_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_red_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_bed.json
new file mode 100644
index 0000000..ac91e95
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_white_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_white_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_carpet.json
new file mode 100644
index 0000000..3ee77f1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_white_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_white_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_wool.json
new file mode 100644
index 0000000..c5b267b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_white_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_white_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_white_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_bed.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_bed.json
new file mode 100644
index 0000000..4945ceb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_yellow_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_yellow_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_carpet.json
new file mode 100644
index 0000000..514a040
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_yellow_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_yellow_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_wool.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_wool.json
new file mode 100644
index 0000000..0a0186c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/dye_yellow_wool.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_needed_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dye_yellow_wool"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_needed_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dye_yellow_wool"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/emerald_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/emerald_block.json
new file mode 100644
index 0000000..7448651
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/emerald_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_emerald": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:emerald"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:emerald_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_emerald"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:emerald_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab.json
new file mode 100644
index 0000000..3b54184
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab_from_end_stone_brick_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab_from_end_stone_brick_stonecutting.json
new file mode 100644
index 0000000..9173497
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab_from_end_stone_brick_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_slab_from_end_stone_brick_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_slab_from_end_stone_brick_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab_from_end_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab_from_end_stone_stonecutting.json
new file mode 100644
index 0000000..00394e8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_slab_from_end_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_slab_from_end_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_slab_from_end_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs.json
new file mode 100644
index 0000000..cf734db
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs_from_end_stone_brick_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs_from_end_stone_brick_stonecutting.json
new file mode 100644
index 0000000..e828105
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs_from_end_stone_brick_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_stairs_from_end_stone_brick_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_stairs_from_end_stone_brick_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs_from_end_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs_from_end_stone_stonecutting.json
new file mode 100644
index 0000000..750d97c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_brick_stairs_from_end_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_stairs_from_end_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_stairs_from_end_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_bricks.json
new file mode 100644
index 0000000..3887ba0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_bricks_from_end_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_bricks_from_end_stone_stonecutting.json
new file mode 100644
index 0000000..69e6418
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/end_stone_bricks_from_end_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_bricks_from_end_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_bricks_from_end_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper.json
new file mode 100644
index 0000000..901494a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper_from_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper_from_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..4856a0c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper_from_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_chiseled_copper_from_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_chiseled_copper_from_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper_from_exposed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper_from_exposed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..41988aa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_chiseled_copper_from_exposed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_chiseled_copper_from_exposed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_chiseled_copper_from_exposed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_copper_grate.json
new file mode 100644
index 0000000..d0b76a6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_copper_grate_from_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_copper_grate_from_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..a393517
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_copper_grate_from_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_copper_grate_from_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_copper_grate_from_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper.json
new file mode 100644
index 0000000..960ad06
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_from_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_from_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..32f962b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_from_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper_from_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper_from_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab.json
new file mode 100644
index 0000000..d815d61
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab_from_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab_from_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..426fd67
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab_from_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper_slab_from_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper_slab_from_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab_from_exposed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab_from_exposed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..e9782fd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_slab_from_exposed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper_slab_from_exposed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper_slab_from_exposed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs.json
new file mode 100644
index 0000000..1d2bd27
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs_from_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs_from_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..ee4a9fe
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs_from_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper_stairs_from_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper_stairs_from_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs_from_exposed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs_from_exposed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..8b07775
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/exposed_cut_copper_stairs_from_exposed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_cut_copper_stairs_from_exposed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_cut_copper_stairs_from_exposed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/glass.json
new file mode 100644
index 0000000..fea555d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smelts_to_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:smelts_to_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smelts_to_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/glowstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/glowstone.json
new file mode 100644
index 0000000..aa0f34d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/glowstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glowstone_dust": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glowstone_dust"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:glowstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glowstone_dust"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:glowstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gold_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gold_block.json
new file mode 100644
index 0000000..4e4a46e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gold_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite.json
new file mode 100644
index 0000000..6bfad77
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:granite"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:granite"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_slab.json
new file mode 100644
index 0000000..4633162
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:granite_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:granite_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_slab_from_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_slab_from_granite_stonecutting.json
new file mode 100644
index 0000000..84cf8f1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_slab_from_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:granite_slab_from_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:granite_slab_from_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_stairs.json
new file mode 100644
index 0000000..6603cc6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:granite_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:granite_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_stairs_from_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_stairs_from_granite_stonecutting.json
new file mode 100644
index 0000000..6082c7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/granite_stairs_from_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:granite_stairs_from_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:granite_stairs_from_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_concrete_powder.json
new file mode 100644
index 0000000..1f95253
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_stained_glass.json
new file mode 100644
index 0000000..dc962e8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_terracotta.json
new file mode 100644
index 0000000..3df2b42
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/gray_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_concrete_powder.json
new file mode 100644
index 0000000..007e290
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_stained_glass.json
new file mode 100644
index 0000000..09d3221
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_terracotta.json
new file mode 100644
index 0000000..5a827b3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/green_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/hay_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/hay_block.json
new file mode 100644
index 0000000..7c3eca3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/hay_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:hay_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wheat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wheat"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wheat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:hay_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/iron_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/iron_block.json
new file mode 100644
index 0000000..d1f4ad3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/iron_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jack_o_lantern.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jack_o_lantern.json
new file mode 100644
index 0000000..2d437a5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jack_o_lantern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_carved_pumpkin": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:carved_pumpkin"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jack_o_lantern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_carved_pumpkin"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jack_o_lantern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_planks.json
new file mode 100644
index 0000000..ef63f54
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:jungle_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_slab.json
new file mode 100644
index 0000000..1ed3e96
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_stairs.json
new file mode 100644
index 0000000..72e9cb8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_wood.json
new file mode 100644
index 0000000..9b9f749
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/jungle_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lapis_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lapis_block.json
new file mode 100644
index 0000000..347dcbc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lapis_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lapis_lazuli": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lapis_lazuli"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lapis_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lapis_lazuli"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lapis_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_concrete_powder.json
new file mode 100644
index 0000000..99d9edf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_stained_glass.json
new file mode 100644
index 0000000..ba00647
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_terracotta.json
new file mode 100644
index 0000000..89d3dff
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_blue_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_concrete_powder.json
new file mode 100644
index 0000000..191b17a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_stained_glass.json
new file mode 100644
index 0000000..e1b4786
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_terracotta.json
new file mode 100644
index 0000000..264ebe7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/light_gray_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_concrete_powder.json
new file mode 100644
index 0000000..7b68fd6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_stained_glass.json
new file mode 100644
index 0000000..b13111b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_terracotta.json
new file mode 100644
index 0000000..42f0ed5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/lime_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_concrete_powder.json
new file mode 100644
index 0000000..49b0cde
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_stained_glass.json
new file mode 100644
index 0000000..8c72a24
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_terracotta.json
new file mode 100644
index 0000000..d1c896f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magenta_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magma_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magma_block.json
new file mode 100644
index 0000000..e315951
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/magma_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_magma_cream": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magma_cream"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magma_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_magma_cream"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magma_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_planks.json
new file mode 100644
index 0000000..2a7cecd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:mangrove_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_slab.json
new file mode 100644
index 0000000..36e234f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_stairs.json
new file mode 100644
index 0000000..921298e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_wood.json
new file mode 100644
index 0000000..d52aed5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mangrove_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/melon.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/melon.json
new file mode 100644
index 0000000..a23ca0f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/melon.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_melon": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:melon_slice"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:melon"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_melon"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:melon"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_from_moss_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_from_moss_block.json
new file mode 100644
index 0000000..0113de3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_from_moss_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_moss_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:moss_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_from_moss_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_moss_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_from_moss_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_from_vine.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_from_vine.json
new file mode 100644
index 0000000..9ff8e89
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_from_vine.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_from_vine"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_vine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:vine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_vine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_from_vine"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_slab.json
new file mode 100644
index 0000000..ab6fcfd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_slab_from_mossy_cobblestone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_slab_from_mossy_cobblestone_stonecutting.json
new file mode 100644
index 0000000..1a7ce96
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_slab_from_mossy_cobblestone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_slab_from_mossy_cobblestone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_slab_from_mossy_cobblestone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_stairs.json
new file mode 100644
index 0000000..a35129d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_stairs_from_mossy_cobblestone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_stairs_from_mossy_cobblestone_stonecutting.json
new file mode 100644
index 0000000..f6f19ce
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_cobblestone_stairs_from_mossy_cobblestone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_stairs_from_mossy_cobblestone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_stairs_from_mossy_cobblestone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_slab.json
new file mode 100644
index 0000000..a79f07a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting.json
new file mode 100644
index 0000000..bbcbeac
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_stairs.json
new file mode 100644
index 0000000..71802c6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting.json
new file mode 100644
index 0000000..47c58b7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_bricks_from_moss_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_bricks_from_moss_block.json
new file mode 100644
index 0000000..d63c504
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_bricks_from_moss_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_moss_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:moss_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_bricks_from_moss_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_moss_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_bricks_from_moss_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_bricks_from_vine.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_bricks_from_vine.json
new file mode 100644
index 0000000..f3b1e2e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mossy_stone_bricks_from_vine.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_bricks_from_vine"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_vine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:vine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_vine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_bricks_from_vine"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_slab.json
new file mode 100644
index 0000000..d2331ff
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mud_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mud_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mud_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mud_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mud_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_slab_from_mud_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_slab_from_mud_bricks_stonecutting.json
new file mode 100644
index 0000000..fed8ff7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_slab_from_mud_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mud_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mud_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mud_brick_slab_from_mud_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mud_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mud_brick_slab_from_mud_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_stairs.json
new file mode 100644
index 0000000..dce37c8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mud_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mud_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mud_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mud_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mud_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_stairs_from_mud_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_stairs_from_mud_bricks_stonecutting.json
new file mode 100644
index 0000000..6a1a23e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_brick_stairs_from_mud_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mud_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mud_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mud_brick_stairs_from_mud_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mud_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mud_brick_stairs_from_mud_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_bricks.json
new file mode 100644
index 0000000..0c6d3aa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/mud_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_packed_mud": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:packed_mud"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mud_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_packed_mud"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mud_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/muddy_mangrove_roots.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/muddy_mangrove_roots.json
new file mode 100644
index 0000000..b704cb5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/muddy_mangrove_roots.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mangrove_roots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_roots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:muddy_mangrove_roots"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mangrove_roots"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:muddy_mangrove_roots"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_slab.json
new file mode 100644
index 0000000..c808e02
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_slab_from_nether_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_slab_from_nether_bricks_stonecutting.json
new file mode 100644
index 0000000..9e803c1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_slab_from_nether_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick_slab_from_nether_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick_slab_from_nether_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_stairs.json
new file mode 100644
index 0000000..b57b944
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_stairs_from_nether_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_stairs_from_nether_bricks_stonecutting.json
new file mode 100644
index 0000000..2150048
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_brick_stairs_from_nether_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick_stairs_from_nether_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick_stairs_from_nether_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_bricks.json
new file mode 100644
index 0000000..ed2c3ae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_brick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_wart_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_wart_block.json
new file mode 100644
index 0000000..2728873
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/nether_wart_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_wart": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_wart"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_wart_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_wart"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_wart_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/netherite_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/netherite_block.json
new file mode 100644
index 0000000..91d676a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/netherite_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_planks.json
new file mode 100644
index 0000000..6c78d04
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:oak_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_slab.json
new file mode 100644
index 0000000..cef0e37
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_stairs.json
new file mode 100644
index 0000000..4a2b6cf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_wood.json
new file mode 100644
index 0000000..bd62427
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oak_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_concrete_powder.json
new file mode 100644
index 0000000..8116800
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_stained_glass.json
new file mode 100644
index 0000000..5ae8d6f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_terracotta.json
new file mode 100644
index 0000000..ca71a5c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/orange_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper.json
new file mode 100644
index 0000000..6796d32
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper_from_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper_from_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..0a2b057
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper_from_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_chiseled_copper_from_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_chiseled_copper_from_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper_from_oxidized_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper_from_oxidized_cut_copper_stonecutting.json
new file mode 100644
index 0000000..dab869a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_chiseled_copper_from_oxidized_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_chiseled_copper_from_oxidized_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_chiseled_copper_from_oxidized_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_copper_grate.json
new file mode 100644
index 0000000..5cea8fc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_copper_grate_from_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_copper_grate_from_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..ecb7807
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_copper_grate_from_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_copper_grate_from_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_copper_grate_from_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper.json
new file mode 100644
index 0000000..7eb45a1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_from_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_from_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..6f5bb3b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_from_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper_from_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper_from_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab.json
new file mode 100644
index 0000000..3cea579
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab_from_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab_from_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..ec034dd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab_from_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper_slab_from_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper_slab_from_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab_from_oxidized_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab_from_oxidized_cut_copper_stonecutting.json
new file mode 100644
index 0000000..d321f6f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_slab_from_oxidized_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper_slab_from_oxidized_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper_slab_from_oxidized_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs.json
new file mode 100644
index 0000000..02118cd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs_from_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs_from_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..3001961
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs_from_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper_stairs_from_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper_stairs_from_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs_from_oxidized_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs_from_oxidized_cut_copper_stonecutting.json
new file mode 100644
index 0000000..30b343f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/oxidized_cut_copper_stairs_from_oxidized_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_cut_copper_stairs_from_oxidized_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_cut_copper_stairs_from_oxidized_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/packed_ice.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/packed_ice.json
new file mode 100644
index 0000000..e4ac8a5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/packed_ice.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_ice": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ice"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:packed_ice"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_ice"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:packed_ice"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/packed_mud.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/packed_mud.json
new file mode 100644
index 0000000..5cd96a0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/packed_mud.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mud": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mud"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:packed_mud"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mud"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:packed_mud"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_concrete_powder.json
new file mode 100644
index 0000000..d66ee5e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_stained_glass.json
new file mode 100644
index 0000000..08559fc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_terracotta.json
new file mode 100644
index 0000000..7749715
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/pink_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite.json
new file mode 100644
index 0000000..ec5ca85
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_from_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_from_andesite_stonecutting.json
new file mode 100644
index 0000000..07256bf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_from_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite_from_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite_from_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab.json
new file mode 100644
index 0000000..7836486
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab_from_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab_from_andesite_stonecutting.json
new file mode 100644
index 0000000..d60cac0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab_from_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite_slab_from_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite_slab_from_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab_from_polished_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab_from_polished_andesite_stonecutting.json
new file mode 100644
index 0000000..54578ae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_slab_from_polished_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite_slab_from_polished_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite_slab_from_polished_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs.json
new file mode 100644
index 0000000..f208355
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs_from_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs_from_andesite_stonecutting.json
new file mode 100644
index 0000000..3d21f9e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs_from_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite_stairs_from_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite_stairs_from_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs_from_polished_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs_from_polished_andesite_stonecutting.json
new file mode 100644
index 0000000..21b84f4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_andesite_stairs_from_polished_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_andesite_stairs_from_polished_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_andesite_stairs_from_polished_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_basalt.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_basalt.json
new file mode 100644
index 0000000..f048e7a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_basalt.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_basalt": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:basalt"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_basalt"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_basalt"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_basalt"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_basalt_from_basalt_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_basalt_from_basalt_stonecutting.json
new file mode 100644
index 0000000..fad1817
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_basalt_from_basalt_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_basalt": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:basalt"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_basalt_from_basalt_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_basalt"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_basalt_from_basalt_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone.json
new file mode 100644
index 0000000..13234a3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab.json
new file mode 100644
index 0000000..e30b651
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..ca11200
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_slab_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_slab_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_bricks_stonecutting.json
new file mode 100644
index 0000000..557a6c1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_slab_from_polished_blackstone_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_slab_from_polished_blackstone_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..e3b0d31
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_slab_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_slab_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs.json
new file mode 100644
index 0000000..06d31c5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..7b78a36
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_stairs_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_stairs_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_bricks_stonecutting.json
new file mode 100644
index 0000000..330d44a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_stairs_from_polished_blackstone_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_stairs_from_polished_blackstone_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..5570cf0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_stairs_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_stairs_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks.json
new file mode 100644
index 0000000..6d89484
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..06d07a1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_bricks_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_bricks_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..972c995
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_bricks_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_bricks_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_bricks_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..fc8687b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab.json
new file mode 100644
index 0000000..51e8b24
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..28b6e2a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_slab_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_slab_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..1f4768b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_slab_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_slab_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_slab_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs.json
new file mode 100644
index 0000000..2ef334c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..17146d8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_stairs_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_stairs_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..16749d6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_blackstone_stairs_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_stairs_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_stairs_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate.json
new file mode 100644
index 0000000..ecbe21c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..0cb2f0c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab.json
new file mode 100644
index 0000000..5a2f9c9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..f5868a8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_slab_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_slab_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..ea3650a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_slab_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_slab_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_slab_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs.json
new file mode 100644
index 0000000..5b98823
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..1018229
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_stairs_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_stairs_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..ac64672
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_deepslate_stairs_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_stairs_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_stairs_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite.json
new file mode 100644
index 0000000..8e20b11
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_from_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_from_diorite_stonecutting.json
new file mode 100644
index 0000000..002402d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_from_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite_from_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite_from_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab.json
new file mode 100644
index 0000000..eee8ccf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab_from_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab_from_diorite_stonecutting.json
new file mode 100644
index 0000000..911b2ab
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab_from_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite_slab_from_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite_slab_from_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab_from_polished_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab_from_polished_diorite_stonecutting.json
new file mode 100644
index 0000000..c18e088
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_slab_from_polished_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite_slab_from_polished_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite_slab_from_polished_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs.json
new file mode 100644
index 0000000..622b47e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs_from_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs_from_diorite_stonecutting.json
new file mode 100644
index 0000000..c2a60ae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs_from_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite_stairs_from_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite_stairs_from_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs_from_polished_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs_from_polished_diorite_stonecutting.json
new file mode 100644
index 0000000..ed96087
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_diorite_stairs_from_polished_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_diorite_stairs_from_polished_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_diorite_stairs_from_polished_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite.json
new file mode 100644
index 0000000..5f1d37e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_from_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_from_granite_stonecutting.json
new file mode 100644
index 0000000..1e00049
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_from_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite_from_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite_from_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab.json
new file mode 100644
index 0000000..ac14683
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab_from_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab_from_granite_stonecutting.json
new file mode 100644
index 0000000..b24757d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab_from_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite_slab_from_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite_slab_from_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab_from_polished_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab_from_polished_granite_stonecutting.json
new file mode 100644
index 0000000..6a43c4d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_slab_from_polished_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite_slab_from_polished_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite_slab_from_polished_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs.json
new file mode 100644
index 0000000..2c2637b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs_from_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs_from_granite_stonecutting.json
new file mode 100644
index 0000000..b137a4e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs_from_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite_stairs_from_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite_stairs_from_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs_from_polished_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs_from_polished_granite_stonecutting.json
new file mode 100644
index 0000000..117e9df
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_granite_stairs_from_polished_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_granite_stairs_from_polished_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_granite_stairs_from_polished_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff.json
new file mode 100644
index 0000000..5e61bb3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_from_tuff_stonecutting.json
new file mode 100644
index 0000000..7f1be72
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab.json
new file mode 100644
index 0000000..b4c6d5c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..f4063a2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_slab_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_slab_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab_from_tuff_stonecutting.json
new file mode 100644
index 0000000..8d875be
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_slab_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_slab_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_slab_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs.json
new file mode 100644
index 0000000..eace7ca
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..0633449
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_stairs_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_stairs_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs_from_tuff_stonecutting.json
new file mode 100644
index 0000000..3b03fae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/polished_tuff_stairs_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_stairs_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_stairs_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine.json
new file mode 100644
index 0000000..dc5eaf9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_slab.json
new file mode 100644
index 0000000..5614f52
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_slab_from_prismarine_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_slab_from_prismarine_stonecutting.json
new file mode 100644
index 0000000..7d6f8bb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_slab_from_prismarine_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_brick_slab_from_prismarine_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_brick_slab_from_prismarine_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_stairs.json
new file mode 100644
index 0000000..27f1f32
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_stairs_from_prismarine_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_stairs_from_prismarine_stonecutting.json
new file mode 100644
index 0000000..e7d6c7b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_brick_stairs_from_prismarine_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_brick_stairs_from_prismarine_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_brick_stairs_from_prismarine_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_bricks.json
new file mode 100644
index 0000000..a3176df
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_slab.json
new file mode 100644
index 0000000..abd366e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_slab_from_prismarine_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_slab_from_prismarine_stonecutting.json
new file mode 100644
index 0000000..41d9ae0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_slab_from_prismarine_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_slab_from_prismarine_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_slab_from_prismarine_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_stairs.json
new file mode 100644
index 0000000..a23db5e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_stairs_from_prismarine_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_stairs_from_prismarine_stonecutting.json
new file mode 100644
index 0000000..5808b08
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/prismarine_stairs_from_prismarine_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_stairs_from_prismarine_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_stairs_from_prismarine_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_concrete_powder.json
new file mode 100644
index 0000000..5de5d7e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_stained_glass.json
new file mode 100644
index 0000000..8289f1d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_terracotta.json
new file mode 100644
index 0000000..81c7336
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purple_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_block.json
new file mode 100644
index 0000000..6ce1ad2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chorus_fruit_popped": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:popped_chorus_fruit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purpur_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chorus_fruit_popped"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purpur_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_pillar.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_pillar.json
new file mode 100644
index 0000000..5a128cf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_pillar.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purpur_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purpur_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purpur_pillar"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purpur_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purpur_pillar"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_pillar_from_purpur_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_pillar_from_purpur_block_stonecutting.json
new file mode 100644
index 0000000..9d861ff
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_pillar_from_purpur_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purpur_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purpur_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purpur_pillar_from_purpur_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purpur_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purpur_pillar_from_purpur_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_slab.json
new file mode 100644
index 0000000..ff760ee
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purpur_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purpur_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purpur_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purpur_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purpur_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_slab_from_purpur_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_slab_from_purpur_block_stonecutting.json
new file mode 100644
index 0000000..21ec6c9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_slab_from_purpur_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purpur_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purpur_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purpur_slab_from_purpur_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purpur_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purpur_slab_from_purpur_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_stairs.json
new file mode 100644
index 0000000..de630a1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purpur_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purpur_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purpur_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purpur_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purpur_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_stairs_from_purpur_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_stairs_from_purpur_block_stonecutting.json
new file mode 100644
index 0000000..5747d07
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/purpur_stairs_from_purpur_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purpur_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purpur_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purpur_stairs_from_purpur_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purpur_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purpur_stairs_from_purpur_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_block.json
new file mode 100644
index 0000000..816d4cd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_bricks.json
new file mode 100644
index 0000000..3643242
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_bricks_from_quartz_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_bricks_from_quartz_block_stonecutting.json
new file mode 100644
index 0000000..ca69b17
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_bricks_from_quartz_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_bricks_from_quartz_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_bricks_from_quartz_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_pillar.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_pillar.json
new file mode 100644
index 0000000..482fa9f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_pillar.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_pillar": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_pillar"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_pillar"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chiseled_quartz_block",
+ "has_quartz_block",
+ "has_quartz_pillar"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_pillar"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_pillar_from_quartz_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_pillar_from_quartz_block_stonecutting.json
new file mode 100644
index 0000000..f5d143c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_pillar_from_quartz_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_pillar_from_quartz_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_pillar_from_quartz_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_slab.json
new file mode 100644
index 0000000..5d18e2b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_slab.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_pillar": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_pillar"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chiseled_quartz_block",
+ "has_quartz_block",
+ "has_quartz_pillar"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_slab_from_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_slab_from_stonecutting.json
new file mode 100644
index 0000000..6e37acc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_slab_from_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_slab_from_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_slab_from_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_stairs.json
new file mode 100644
index 0000000..de4f081
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_stairs.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_quartz_pillar": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_pillar"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chiseled_quartz_block",
+ "has_quartz_block",
+ "has_quartz_pillar"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_stairs_from_quartz_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_stairs_from_quartz_block_stonecutting.json
new file mode 100644
index 0000000..d060a07
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/quartz_stairs_from_quartz_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_stairs_from_quartz_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_stairs_from_quartz_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_copper_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_copper_block.json
new file mode 100644
index 0000000..007b887
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_copper_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raw_copper_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raw_copper_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_gold_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_gold_block.json
new file mode 100644
index 0000000..a86e63f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_gold_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_gold": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_gold"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raw_gold_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_gold"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raw_gold_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_iron_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_iron_block.json
new file mode 100644
index 0000000..2a415de
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/raw_iron_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_iron": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_iron"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raw_iron_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_iron"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raw_iron_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_concrete_powder.json
new file mode 100644
index 0000000..4f2d639
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_slab.json
new file mode 100644
index 0000000..4cec61b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_nether_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_nether_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_slab_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_slab_from_red_nether_bricks_stonecutting.json
new file mode 100644
index 0000000..3ba4bf2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_slab_from_red_nether_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_nether_brick_slab_from_red_nether_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_nether_brick_slab_from_red_nether_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_stairs.json
new file mode 100644
index 0000000..750c3b8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_nether_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_nether_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_stairs_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_stairs_from_red_nether_bricks_stonecutting.json
new file mode 100644
index 0000000..3ca8fe8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_brick_stairs_from_red_nether_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_nether_brick_stairs_from_red_nether_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_nether_brick_stairs_from_red_nether_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_bricks.json
new file mode 100644
index 0000000..fcbfe15
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_nether_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_wart": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_wart"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_nether_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_wart"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_nether_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone.json
new file mode 100644
index 0000000..c6932f4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_slab.json
new file mode 100644
index 0000000..37ffc7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_slab.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_sandstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone",
+ "has_chiseled_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_sandstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_slab_from_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_slab_from_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..ae459a4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_slab_from_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_sandstone_slab_from_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_sandstone_slab_from_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_stairs.json
new file mode 100644
index 0000000..050e62e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_stairs.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_cut_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_sandstone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone",
+ "has_chiseled_red_sandstone",
+ "has_cut_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_sandstone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_stairs_from_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_stairs_from_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..6d5bc3e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_sandstone_stairs_from_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_sandstone_stairs_from_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_sandstone_stairs_from_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_stained_glass.json
new file mode 100644
index 0000000..b65c87a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_terracotta.json
new file mode 100644
index 0000000..6b9f6fd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/red_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone.json
new file mode 100644
index 0000000..05ac588
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_slab.json
new file mode 100644
index 0000000..5ea1df3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_slab.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sandstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone",
+ "has_chiseled_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sandstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_slab_from_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_slab_from_sandstone_stonecutting.json
new file mode 100644
index 0000000..8689883
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_slab_from_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sandstone_slab_from_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sandstone_slab_from_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_stairs.json
new file mode 100644
index 0000000..aff96ef
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_stairs.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_cut_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sandstone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone",
+ "has_chiseled_sandstone",
+ "has_cut_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sandstone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_stairs_from_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_stairs_from_sandstone_stonecutting.json
new file mode 100644
index 0000000..714dfad
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sandstone_stairs_from_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sandstone_stairs_from_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sandstone_stairs_from_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sea_lantern.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sea_lantern.json
new file mode 100644
index 0000000..1397713
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sea_lantern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine_crystals": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine_crystals"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sea_lantern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine_crystals"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sea_lantern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_basalt.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_basalt.json
new file mode 100644
index 0000000..4ded68b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_basalt.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_basalt": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:basalt"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_basalt"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_basalt"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_basalt"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz.json
new file mode 100644
index 0000000..b3866b8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_quartz"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_quartz"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_slab.json
new file mode 100644
index 0000000..e5ad9a9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_quartz_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_quartz_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_slab_from_smooth_quartz_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_slab_from_smooth_quartz_stonecutting.json
new file mode 100644
index 0000000..f14f27a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_slab_from_smooth_quartz_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_quartz_slab_from_smooth_quartz_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_quartz_slab_from_smooth_quartz_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_stairs.json
new file mode 100644
index 0000000..915eb34
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_quartz_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_quartz_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_stairs_from_smooth_quartz_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_stairs_from_smooth_quartz_stonecutting.json
new file mode 100644
index 0000000..7df6a2f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_quartz_stairs_from_smooth_quartz_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_quartz_stairs_from_smooth_quartz_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_quartz_stairs_from_smooth_quartz_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone.json
new file mode 100644
index 0000000..f905834
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_red_sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_red_sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_slab.json
new file mode 100644
index 0000000..53a0750
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_red_sandstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_red_sandstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_slab_from_smooth_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_slab_from_smooth_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..d7800ef
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_slab_from_smooth_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_red_sandstone_slab_from_smooth_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_red_sandstone_slab_from_smooth_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_stairs.json
new file mode 100644
index 0000000..e3bb9a3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_red_sandstone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_red_sandstone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_stairs_from_smooth_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_stairs_from_smooth_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..ce5fe09
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_red_sandstone_stairs_from_smooth_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_red_sandstone_stairs_from_smooth_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_red_sandstone_stairs_from_smooth_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone.json
new file mode 100644
index 0000000..0e7072e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_sandstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_sandstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_slab.json
new file mode 100644
index 0000000..0bd95f7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_sandstone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_sandstone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_slab_from_smooth_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_slab_from_smooth_sandstone_stonecutting.json
new file mode 100644
index 0000000..f420e67
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_slab_from_smooth_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_sandstone_slab_from_smooth_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_sandstone_slab_from_smooth_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_stairs.json
new file mode 100644
index 0000000..ce61f57
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_sandstone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_sandstone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_stairs_from_smooth_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_stairs_from_smooth_sandstone_stonecutting.json
new file mode 100644
index 0000000..89fff18
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_sandstone_stairs_from_smooth_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_sandstone_stairs_from_smooth_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_sandstone_stairs_from_smooth_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone.json
new file mode 100644
index 0000000..89b2fb0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_stone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_stone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone_slab.json
new file mode 100644
index 0000000..c8a50e8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_stone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_stone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone_slab_from_smooth_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone_slab_from_smooth_stone_stonecutting.json
new file mode 100644
index 0000000..3023896
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/smooth_stone_slab_from_smooth_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smooth_stone_slab_from_smooth_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smooth_stone_slab_from_smooth_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/snow_block.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/snow_block.json
new file mode 100644
index 0000000..1daf615
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/snow_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_snowball": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:snowball"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:snow_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_snowball"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:snow_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sponge.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sponge.json
new file mode 100644
index 0000000..4295d89
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/sponge.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sponge"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wet_sponge": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wet_sponge"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wet_sponge"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sponge"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_planks.json
new file mode 100644
index 0000000..67128d1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:spruce_logs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_slab.json
new file mode 100644
index 0000000..9ab2ca8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_stairs.json
new file mode 100644
index 0000000..6c921e4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_wood.json
new file mode 100644
index 0000000..049df90
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/spruce_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone.json
new file mode 100644
index 0000000..edf15f5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab.json
new file mode 100644
index 0000000..c8f46fc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab_from_stone_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab_from_stone_bricks_stonecutting.json
new file mode 100644
index 0000000..1315d2d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab_from_stone_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_slab_from_stone_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_slab_from_stone_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab_from_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab_from_stone_stonecutting.json
new file mode 100644
index 0000000..1dca74f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_slab_from_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_slab_from_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_slab_from_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs.json
new file mode 100644
index 0000000..cf2ece4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs_from_stone_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs_from_stone_bricks_stonecutting.json
new file mode 100644
index 0000000..e5d0039
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs_from_stone_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_stairs_from_stone_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_stairs_from_stone_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs_from_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs_from_stone_stonecutting.json
new file mode 100644
index 0000000..6d540f1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_brick_stairs_from_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_stairs_from_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_stairs_from_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_bricks.json
new file mode 100644
index 0000000..22788b0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_bricks_from_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_bricks_from_stone_stonecutting.json
new file mode 100644
index 0000000..389841b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_bricks_from_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_bricks_from_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_bricks_from_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_slab.json
new file mode 100644
index 0000000..52b3962
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_slab_from_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_slab_from_stone_stonecutting.json
new file mode 100644
index 0000000..9772a6e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_slab_from_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_slab_from_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_slab_from_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_stairs.json
new file mode 100644
index 0000000..59942e1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_stairs_from_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_stairs_from_stone_stonecutting.json
new file mode 100644
index 0000000..c10f6cd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stone_stairs_from_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_stairs_from_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_stairs_from_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_acacia_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_acacia_wood.json
new file mode 100644
index 0000000..6b9f12f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_acacia_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_acacia_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_acacia_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_acacia_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_birch_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_birch_wood.json
new file mode 100644
index 0000000..d8dc4d5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_birch_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_birch_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_birch_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_birch_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_cherry_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_cherry_wood.json
new file mode 100644
index 0000000..dbbe159
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_cherry_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_cherry_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_cherry_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_cherry_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_crimson_hyphae.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_crimson_hyphae.json
new file mode 100644
index 0000000..51c71c3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_crimson_hyphae.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_crimson_stem"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_crimson_hyphae"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_crimson_hyphae"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_dark_oak_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_dark_oak_wood.json
new file mode 100644
index 0000000..85bea3e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_dark_oak_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_dark_oak_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_dark_oak_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_dark_oak_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_jungle_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_jungle_wood.json
new file mode 100644
index 0000000..04a8723
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_jungle_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_jungle_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_jungle_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_jungle_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_mangrove_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_mangrove_wood.json
new file mode 100644
index 0000000..7c02135
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_mangrove_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_mangrove_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_mangrove_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_mangrove_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_oak_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_oak_wood.json
new file mode 100644
index 0000000..fc3cc86
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_oak_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_oak_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_oak_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_oak_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_spruce_wood.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_spruce_wood.json
new file mode 100644
index 0000000..7bdbfb2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_spruce_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_spruce_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_spruce_wood"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_spruce_wood"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_warped_hyphae.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_warped_hyphae.json
new file mode 100644
index 0000000..b0d9a4e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/stripped_warped_hyphae.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_warped_stem"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stripped_warped_hyphae"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stripped_warped_hyphae"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/terracotta.json
new file mode 100644
index 0000000..81d3a79
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_clay_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:clay"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_clay_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tinted_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tinted_glass.json
new file mode 100644
index 0000000..fedd8da
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tinted_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_amethyst_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:amethyst_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tinted_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_amethyst_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tinted_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab.json
new file mode 100644
index 0000000..5af88e6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..6fc042a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_slab_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_slab_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_tuff_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_tuff_bricks_stonecutting.json
new file mode 100644
index 0000000..6d86a38
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_tuff_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_slab_from_tuff_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_slab_from_tuff_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_tuff_stonecutting.json
new file mode 100644
index 0000000..997afe6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_slab_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_slab_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_slab_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs.json
new file mode 100644
index 0000000..b1b6ead
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..f0ff02c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_stairs_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_stairs_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_tuff_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_tuff_bricks_stonecutting.json
new file mode 100644
index 0000000..a28481c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_tuff_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_stairs_from_tuff_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_stairs_from_tuff_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_tuff_stonecutting.json
new file mode 100644
index 0000000..9480f34
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_brick_stairs_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_stairs_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_stairs_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks.json
new file mode 100644
index 0000000..56c6a18
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_bricks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_bricks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..56159be
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_bricks_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_bricks_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks_from_tuff_stonecutting.json
new file mode 100644
index 0000000..ebad311
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_bricks_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_bricks_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_bricks_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_slab.json
new file mode 100644
index 0000000..28dbd47
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_slab_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_slab_from_tuff_stonecutting.json
new file mode 100644
index 0000000..498bb7b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_slab_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_slab_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_slab_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_stairs.json
new file mode 100644
index 0000000..1ac1389
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_stairs_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_stairs_from_tuff_stonecutting.json
new file mode 100644
index 0000000..561d405
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/tuff_stairs_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_stairs_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_stairs_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_hyphae.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_hyphae.json
new file mode 100644
index 0000000..46525e2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_hyphae.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_stem"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_hyphae"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_hyphae"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_planks.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_planks.json
new file mode 100644
index 0000000..21ccebc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_planks.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:warped_stems"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_planks"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_planks"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_slab.json
new file mode 100644
index 0000000..2d302c6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_stairs.json
new file mode 100644
index 0000000..bd52cf3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/warped_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper.json
new file mode 100644
index 0000000..20d25a3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_honeycomb.json
new file mode 100644
index 0000000..23ebad7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chiseled_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chiseled_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_chiseled_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chiseled_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_chiseled_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_waxed_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_waxed_copper_block_stonecutting.json
new file mode 100644
index 0000000..629cf87
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_waxed_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_chiseled_copper_from_waxed_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_chiseled_copper_from_waxed_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_waxed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_waxed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..8332790
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_chiseled_copper_from_waxed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_chiseled_copper_from_waxed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_chiseled_copper_from_waxed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_block_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_block_from_honeycomb.json
new file mode 100644
index 0000000..a65972d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_block_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_block_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_block_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_bulb_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_bulb_from_honeycomb.json
new file mode 100644
index 0000000..35a2676
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_bulb_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_bulb": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_bulb"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_bulb_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_bulb"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_bulb_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_door_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_door_from_honeycomb.json
new file mode 100644
index 0000000..cda8679
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_door_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_door": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_door"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_door_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_door"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_door_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate.json
new file mode 100644
index 0000000..7e38162
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate_from_honeycomb.json
new file mode 100644
index 0000000..b2e996e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_grate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_grate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_grate_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_grate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_grate_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate_from_waxed_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate_from_waxed_copper_block_stonecutting.json
new file mode 100644
index 0000000..56c39a2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_grate_from_waxed_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_grate_from_waxed_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_grate_from_waxed_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_trapdoor_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_trapdoor_from_honeycomb.json
new file mode 100644
index 0000000..67fe651
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_copper_trapdoor_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_trapdoor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_trapdoor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_trapdoor_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_trapdoor"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_trapdoor_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper.json
new file mode 100644
index 0000000..a8f0059
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_from_honeycomb.json
new file mode 100644
index 0000000..99c3cde
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_from_waxed_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_from_waxed_copper_block_stonecutting.json
new file mode 100644
index 0000000..d96b28d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_from_waxed_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_from_waxed_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_from_waxed_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab.json
new file mode 100644
index 0000000..159a33e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_honeycomb.json
new file mode 100644
index 0000000..08b2f6e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_slab_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_slab_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_waxed_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_waxed_copper_block_stonecutting.json
new file mode 100644
index 0000000..0253a88
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_waxed_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_slab_from_waxed_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_slab_from_waxed_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_waxed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_waxed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..aa1b052
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_slab_from_waxed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_slab_from_waxed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_slab_from_waxed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs.json
new file mode 100644
index 0000000..3934614
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_honeycomb.json
new file mode 100644
index 0000000..222709f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cut_copper_stairs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cut_copper_stairs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_stairs_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cut_copper_stairs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_stairs_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_waxed_copper_block_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_waxed_copper_block_stonecutting.json
new file mode 100644
index 0000000..a058f90
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_waxed_copper_block_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_stairs_from_waxed_copper_block_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_stairs_from_waxed_copper_block_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_waxed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_waxed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..ef6d1c0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_cut_copper_stairs_from_waxed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_cut_copper_stairs_from_waxed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_cut_copper_stairs_from_waxed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper.json
new file mode 100644
index 0000000..09a9dae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_honeycomb.json
new file mode 100644
index 0000000..aac7b5a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_chiseled_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_chiseled_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_chiseled_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_chiseled_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_chiseled_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_waxed_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_waxed_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..e061d51
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_waxed_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_chiseled_copper_from_waxed_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_chiseled_copper_from_waxed_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_waxed_exposed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_waxed_exposed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..ffff639
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_chiseled_copper_from_waxed_exposed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_chiseled_copper_from_waxed_exposed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_chiseled_copper_from_waxed_exposed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_bulb_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_bulb_from_honeycomb.json
new file mode 100644
index 0000000..71379ea
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_bulb_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper_bulb": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper_bulb"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_bulb_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper_bulb"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_bulb_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_door_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_door_from_honeycomb.json
new file mode 100644
index 0000000..72d1990
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_door_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper_door": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper_door"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_door_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper_door"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_door_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_from_honeycomb.json
new file mode 100644
index 0000000..ee54119
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate.json
new file mode 100644
index 0000000..32d2400
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate_from_honeycomb.json
new file mode 100644
index 0000000..2e0b6b5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper_grate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper_grate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_grate_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper_grate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_grate_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate_from_waxed_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate_from_waxed_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..08897f0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_grate_from_waxed_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_grate_from_waxed_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_grate_from_waxed_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_trapdoor_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_trapdoor_from_honeycomb.json
new file mode 100644
index 0000000..3b9514e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_copper_trapdoor_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper_trapdoor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper_trapdoor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_trapdoor_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper_trapdoor"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_trapdoor_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper.json
new file mode 100644
index 0000000..02896bc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_from_honeycomb.json
new file mode 100644
index 0000000..ee22aed
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_from_waxed_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_from_waxed_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..09c272a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_from_waxed_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_from_waxed_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_from_waxed_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab.json
new file mode 100644
index 0000000..1817e0c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_honeycomb.json
new file mode 100644
index 0000000..6448350
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_slab_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_slab_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_waxed_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_waxed_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..ec5c46f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_waxed_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_slab_from_waxed_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_slab_from_waxed_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_waxed_exposed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_waxed_exposed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..7d9cc7c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_slab_from_waxed_exposed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_slab_from_waxed_exposed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_slab_from_waxed_exposed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs.json
new file mode 100644
index 0000000..c8b842f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_honeycomb.json
new file mode 100644
index 0000000..b013c6a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_cut_copper_stairs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_cut_copper_stairs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_stairs_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_cut_copper_stairs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_stairs_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_waxed_exposed_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_waxed_exposed_copper_stonecutting.json
new file mode 100644
index 0000000..2049c56
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_waxed_exposed_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_stairs_from_waxed_exposed_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_stairs_from_waxed_exposed_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_waxed_exposed_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_waxed_exposed_cut_copper_stonecutting.json
new file mode 100644
index 0000000..3aebaf7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_exposed_cut_copper_stairs_from_waxed_exposed_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_cut_copper_stairs_from_waxed_exposed_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_cut_copper_stairs_from_waxed_exposed_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper.json
new file mode 100644
index 0000000..3d57720
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_honeycomb.json
new file mode 100644
index 0000000..cd81b90
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_chiseled_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_chiseled_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_chiseled_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_chiseled_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_chiseled_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_waxed_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_waxed_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..ac05461
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_waxed_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_chiseled_copper_from_waxed_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_chiseled_copper_from_waxed_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_waxed_oxidized_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_waxed_oxidized_cut_copper_stonecutting.json
new file mode 100644
index 0000000..00468ce
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_chiseled_copper_from_waxed_oxidized_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_chiseled_copper_from_waxed_oxidized_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_chiseled_copper_from_waxed_oxidized_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_bulb_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_bulb_from_honeycomb.json
new file mode 100644
index 0000000..9371e38
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_bulb_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper_bulb": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper_bulb"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_bulb_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper_bulb"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_bulb_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_door_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_door_from_honeycomb.json
new file mode 100644
index 0000000..f943e07
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_door_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper_door": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper_door"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_door_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper_door"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_door_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_from_honeycomb.json
new file mode 100644
index 0000000..bc670d4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate.json
new file mode 100644
index 0000000..eb64938
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate_from_honeycomb.json
new file mode 100644
index 0000000..acc1d3c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper_grate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper_grate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_grate_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper_grate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_grate_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate_from_waxed_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate_from_waxed_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..d2554e1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_grate_from_waxed_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_grate_from_waxed_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_grate_from_waxed_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_trapdoor_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_trapdoor_from_honeycomb.json
new file mode 100644
index 0000000..4e7e1f3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_copper_trapdoor_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper_trapdoor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper_trapdoor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_trapdoor_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper_trapdoor"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_trapdoor_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper.json
new file mode 100644
index 0000000..07cf847
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_from_honeycomb.json
new file mode 100644
index 0000000..7443a84
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_from_waxed_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_from_waxed_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..b4d1d1c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_from_waxed_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_from_waxed_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_from_waxed_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab.json
new file mode 100644
index 0000000..802efad
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_honeycomb.json
new file mode 100644
index 0000000..a11599c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_slab_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_slab_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_waxed_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_waxed_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..ae7d1e6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_waxed_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_slab_from_waxed_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_slab_from_waxed_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_waxed_oxidized_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_waxed_oxidized_cut_copper_stonecutting.json
new file mode 100644
index 0000000..e85f445
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_slab_from_waxed_oxidized_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_slab_from_waxed_oxidized_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_slab_from_waxed_oxidized_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs.json
new file mode 100644
index 0000000..5e41ffe
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_honeycomb.json
new file mode 100644
index 0000000..8af01a8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_cut_copper_stairs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_cut_copper_stairs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_stairs_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_cut_copper_stairs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_stairs_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_copper_stonecutting.json
new file mode 100644
index 0000000..40de729
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_cut_copper_stonecutting.json
new file mode 100644
index 0000000..88f608e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper.json
new file mode 100644
index 0000000..67c1bed
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_honeycomb.json
new file mode 100644
index 0000000..64dfa3c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_chiseled_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_chiseled_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_chiseled_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_chiseled_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_chiseled_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_waxed_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_waxed_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..756dd41
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_waxed_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_chiseled_copper_from_waxed_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_chiseled_copper_from_waxed_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_waxed_weathered_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_waxed_weathered_cut_copper_stonecutting.json
new file mode 100644
index 0000000..c2c9519
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_chiseled_copper_from_waxed_weathered_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_chiseled_copper_from_waxed_weathered_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_chiseled_copper_from_waxed_weathered_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_bulb_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_bulb_from_honeycomb.json
new file mode 100644
index 0000000..f96fb0d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_bulb_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_bulb_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper_bulb": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper_bulb"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper_bulb"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_bulb_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_door_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_door_from_honeycomb.json
new file mode 100644
index 0000000..b9b5c90
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_door_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_door_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper_door": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper_door"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper_door"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_door_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_from_honeycomb.json
new file mode 100644
index 0000000..0655153
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate.json
new file mode 100644
index 0000000..136661a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate_from_honeycomb.json
new file mode 100644
index 0000000..c4d3064
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_grate_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper_grate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper_grate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper_grate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_grate_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate_from_waxed_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate_from_waxed_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..a192100
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_grate_from_waxed_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_grate_from_waxed_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_grate_from_waxed_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_trapdoor_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_trapdoor_from_honeycomb.json
new file mode 100644
index 0000000..3f22f84
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_copper_trapdoor_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_trapdoor_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper_trapdoor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper_trapdoor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper_trapdoor"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_trapdoor_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper.json
new file mode 100644
index 0000000..8e49d5b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_from_honeycomb.json
new file mode 100644
index 0000000..6c6aac2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_from_waxed_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_from_waxed_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..2683a9b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_from_waxed_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_from_waxed_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_from_waxed_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab.json
new file mode 100644
index 0000000..9400c11
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_honeycomb.json
new file mode 100644
index 0000000..d99fbf9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_slab_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_slab_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_waxed_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_waxed_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..c9dfd3a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_waxed_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_slab_from_waxed_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_slab_from_waxed_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_waxed_weathered_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_waxed_weathered_cut_copper_stonecutting.json
new file mode 100644
index 0000000..ac6ccdc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_slab_from_waxed_weathered_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_slab_from_waxed_weathered_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_slab_from_waxed_weathered_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs.json
new file mode 100644
index 0000000..80eebfe
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_honeycomb.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_honeycomb.json
new file mode 100644
index 0000000..72cf96e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_honeycomb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_stairs_from_honeycomb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper_stairs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper_stairs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper_stairs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_stairs_from_honeycomb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_waxed_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_waxed_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..df3df9a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_waxed_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_stairs_from_waxed_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_stairs_from_waxed_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_waxed_weathered_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_waxed_weathered_cut_copper_stonecutting.json
new file mode 100644
index 0000000..8224385
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/waxed_weathered_cut_copper_stairs_from_waxed_weathered_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_cut_copper_stairs_from_waxed_weathered_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_cut_copper_stairs_from_waxed_weathered_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper.json
new file mode 100644
index 0000000..8670845
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_chiseled_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_chiseled_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper_from_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper_from_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..95c49eb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper_from_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_chiseled_copper_from_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_chiseled_copper_from_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper_from_weathered_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper_from_weathered_cut_copper_stonecutting.json
new file mode 100644
index 0000000..c0500e0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_chiseled_copper_from_weathered_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_chiseled_copper_from_weathered_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_chiseled_copper_from_weathered_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_copper_grate.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_copper_grate.json
new file mode 100644
index 0000000..126185a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_copper_grate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_copper_grate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_copper_grate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_copper_grate_from_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_copper_grate_from_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..4fea89f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_copper_grate_from_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_copper_grate_from_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_copper_grate_from_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper.json
new file mode 100644
index 0000000..c65fd54
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_from_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_from_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..a535372
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_from_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper_from_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper_from_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab.json
new file mode 100644
index 0000000..ca08862
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper_slab"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper_slab"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab_from_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab_from_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..c63d0b9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab_from_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper_slab_from_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper_slab_from_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab_from_weathered_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab_from_weathered_cut_copper_stonecutting.json
new file mode 100644
index 0000000..63e0cfa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_slab_from_weathered_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper_slab_from_weathered_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper_slab_from_weathered_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs.json
new file mode 100644
index 0000000..346f925
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper_stairs"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper_stairs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs_from_weathered_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs_from_weathered_copper_stonecutting.json
new file mode 100644
index 0000000..fa296b1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs_from_weathered_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper_stairs_from_weathered_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper_stairs_from_weathered_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs_from_weathered_cut_copper_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs_from_weathered_cut_copper_stonecutting.json
new file mode 100644
index 0000000..0a7bea3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/weathered_cut_copper_stairs_from_weathered_cut_copper_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_cut_copper_stairs_from_weathered_cut_copper_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_cut_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_cut_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_cut_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_cut_copper_stairs_from_weathered_cut_copper_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_concrete_powder.json
new file mode 100644
index 0000000..ac35a8b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_stained_glass.json
new file mode 100644
index 0000000..5506270
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_terracotta.json
new file mode 100644
index 0000000..95ae588
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_wool_from_string.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_wool_from_string.json
new file mode 100644
index 0000000..dced365
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/white_wool_from_string.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_string": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:string"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_wool_from_string"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_string"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_wool_from_string"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_concrete_powder.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_concrete_powder.json
new file mode 100644
index 0000000..4e54087
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_concrete_powder.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gravel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gravel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sand"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_concrete_powder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sand",
+ "has_gravel"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_concrete_powder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_stained_glass.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_stained_glass.json
new file mode 100644
index 0000000..7a41459
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_stained_glass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_stained_glass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_stained_glass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_terracotta.json
new file mode 100644
index 0000000..b0f4b8c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/building_blocks/yellow_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/arrow.json b/src/main/resources/data/minecraft/advancement/recipes/combat/arrow.json
new file mode 100644
index 0000000..d9a949b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/arrow.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_feather": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:feather"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_flint": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:flint"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:arrow"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_feather",
+ "has_flint"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:arrow"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/bow.json b/src/main/resources/data/minecraft/advancement/recipes/combat/bow.json
new file mode 100644
index 0000000..475ddb2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/bow.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_string": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:string"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bow"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_string"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bow"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/crossbow.json b/src/main/resources/data/minecraft/advancement/recipes/combat/crossbow.json
new file mode 100644
index 0000000..5690c1e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/crossbow.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_string": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:string"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crossbow"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tripwire_hook": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tripwire_hook"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_string",
+ "has_iron_ingot",
+ "has_tripwire_hook"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crossbow"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_boots.json b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_boots.json
new file mode 100644
index 0000000..1bbffa7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_boots.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_boots"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_boots"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_chestplate.json b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_chestplate.json
new file mode 100644
index 0000000..22c6273
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_chestplate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_chestplate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_chestplate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_helmet.json b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_helmet.json
new file mode 100644
index 0000000..9eb5c19
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_helmet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_helmet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_helmet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_leggings.json b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_leggings.json
new file mode 100644
index 0000000..4107bea
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_leggings.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_leggings"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_leggings"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_sword.json b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_sword.json
new file mode 100644
index 0000000..7b9fb0c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/diamond_sword.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_sword"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_sword"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/golden_boots.json b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_boots.json
new file mode 100644
index 0000000..ce4e66d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_boots.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_boots"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_boots"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/golden_chestplate.json b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_chestplate.json
new file mode 100644
index 0000000..1c40b6b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_chestplate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_chestplate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_chestplate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/golden_helmet.json b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_helmet.json
new file mode 100644
index 0000000..ee9bd55
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_helmet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_helmet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_helmet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/golden_leggings.json b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_leggings.json
new file mode 100644
index 0000000..122729a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_leggings.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_leggings"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_leggings"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/golden_sword.json b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_sword.json
new file mode 100644
index 0000000..1b3dd22
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/golden_sword.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_sword"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_sword"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/iron_boots.json b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_boots.json
new file mode 100644
index 0000000..04a213f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_boots.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_boots"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_boots"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/iron_chestplate.json b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_chestplate.json
new file mode 100644
index 0000000..0b2f585
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_chestplate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_chestplate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_chestplate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/iron_helmet.json b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_helmet.json
new file mode 100644
index 0000000..53a1667
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_helmet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_helmet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_helmet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/iron_leggings.json b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_leggings.json
new file mode 100644
index 0000000..0a5c437
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_leggings.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_leggings"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_leggings"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/iron_sword.json b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_sword.json
new file mode 100644
index 0000000..2fc629c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/iron_sword.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_sword"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_sword"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/leather_boots.json b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_boots.json
new file mode 100644
index 0000000..8394fc2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_boots.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_leather": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:leather"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:leather_boots"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_leather"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:leather_boots"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/leather_chestplate.json b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_chestplate.json
new file mode 100644
index 0000000..a6626bc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_chestplate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_leather": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:leather"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:leather_chestplate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_leather"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:leather_chestplate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/leather_helmet.json b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_helmet.json
new file mode 100644
index 0000000..1b4e445
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_helmet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_leather": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:leather"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:leather_helmet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_leather"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:leather_helmet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/leather_leggings.json b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_leggings.json
new file mode 100644
index 0000000..726c89a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/leather_leggings.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_leather": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:leather"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:leather_leggings"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_leather"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:leather_leggings"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/mace.json b/src/main/resources/data/minecraft/advancement/recipes/combat/mace.json
new file mode 100644
index 0000000..ba0263b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/mace.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_breeze_rod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:breeze_rod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_heavy_core": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:heavy_core"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mace"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_breeze_rod",
+ "has_heavy_core"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mace"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_boots_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_boots_smithing.json
new file mode 100644
index 0000000..eed5d44
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_boots_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_boots_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_boots_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_chestplate_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_chestplate_smithing.json
new file mode 100644
index 0000000..37b29b5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_chestplate_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_chestplate_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_chestplate_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_helmet_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_helmet_smithing.json
new file mode 100644
index 0000000..a8240ad
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_helmet_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_helmet_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_helmet_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_leggings_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_leggings_smithing.json
new file mode 100644
index 0000000..da9d1c9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_leggings_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_leggings_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_leggings_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_sword_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_sword_smithing.json
new file mode 100644
index 0000000..3a45cc6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/netherite_sword_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_sword_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_sword_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/shield.json b/src/main/resources/data/minecraft/advancement/recipes/combat/shield.json
new file mode 100644
index 0000000..b3e26b8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/shield.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:shield"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:shield"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/spectral_arrow.json b/src/main/resources/data/minecraft/advancement/recipes/combat/spectral_arrow.json
new file mode 100644
index 0000000..af318e4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/spectral_arrow.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glowstone_dust": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glowstone_dust"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spectral_arrow"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glowstone_dust"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spectral_arrow"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/stone_sword.json b/src/main/resources/data/minecraft/advancement/recipes/combat/stone_sword.json
new file mode 100644
index 0000000..9d3a6e9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/stone_sword.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_tool_materials"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_sword"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_sword"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/turtle_helmet.json b/src/main/resources/data/minecraft/advancement/recipes/combat/turtle_helmet.json
new file mode 100644
index 0000000..81e034c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/turtle_helmet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:turtle_helmet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_turtle_scute": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:turtle_scute"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_turtle_scute"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:turtle_helmet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/wolf_armor.json b/src/main/resources/data/minecraft/advancement/recipes/combat/wolf_armor.json
new file mode 100644
index 0000000..a280d0b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/wolf_armor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_armadillo_scute": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:armadillo_scute"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wolf_armor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_armadillo_scute"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wolf_armor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/combat/wooden_sword.json b/src/main/resources/data/minecraft/advancement/recipes/combat/wooden_sword.json
new file mode 100644
index 0000000..806742f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/combat/wooden_sword.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wooden_sword"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wooden_sword"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_fence.json
new file mode 100644
index 0000000..679b762
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_hanging_sign.json
new file mode 100644
index 0000000..684ac23
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_acacia_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_sign.json
new file mode 100644
index 0000000..eb4acbd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/acacia_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/andesite_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/andesite_wall.json
new file mode 100644
index 0000000..540978a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/andesite_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:andesite_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:andesite_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/andesite_wall_from_andesite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/andesite_wall_from_andesite_stonecutting.json
new file mode 100644
index 0000000..5cc823b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/andesite_wall_from_andesite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_andesite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:andesite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:andesite_wall_from_andesite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_andesite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:andesite_wall_from_andesite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/anvil.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/anvil.json
new file mode 100644
index 0000000..f8749cd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/anvil.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:anvil"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:anvil"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/armor_stand.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/armor_stand.json
new file mode 100644
index 0000000..9184521
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/armor_stand.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_stone_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:armor_stand"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:armor_stand"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_fence.json
new file mode 100644
index 0000000..8d8ae16
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_hanging_sign.json
new file mode 100644
index 0000000..3ced055
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_bamboo_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_mosaic.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_mosaic.json
new file mode 100644
index 0000000..a300333
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_mosaic.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bamboo_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_mosaic"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bamboo_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_mosaic"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_sign.json
new file mode 100644
index 0000000..360d08a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/bamboo_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/barrel.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/barrel.json
new file mode 100644
index 0000000..a78609d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/barrel.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:barrel"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wood_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:wooden_slabs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks",
+ "has_wood_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:barrel"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/beehive.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/beehive.json
new file mode 100644
index 0000000..f1b9dc7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/beehive.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_honeycomb": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:honeycomb"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:beehive"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_honeycomb"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:beehive"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_fence.json
new file mode 100644
index 0000000..c13058b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_hanging_sign.json
new file mode 100644
index 0000000..38248fe
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_birch_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_sign.json
new file mode 100644
index 0000000..66c8ce8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/birch_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/black_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_banner.json
new file mode 100644
index 0000000..e10a4d4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_black_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/black_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_bed.json
new file mode 100644
index 0000000..4621673
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_black_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/black_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_candle.json
new file mode 100644
index 0000000..37fed0b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_black_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/black_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_carpet.json
new file mode 100644
index 0000000..a1d68c3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_black_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/black_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_glazed_terracotta.json
new file mode 100644
index 0000000..98fd4a6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_black_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/black_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_stained_glass_pane.json
new file mode 100644
index 0000000..88db284
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/black_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..769364b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/black_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_black_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blackstone_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blackstone_wall.json
new file mode 100644
index 0000000..e567cb8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blackstone_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blackstone_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blackstone_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blackstone_wall_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blackstone_wall_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..e4855a9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blackstone_wall_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blackstone_wall_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blackstone_wall_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blast_furnace.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blast_furnace.json
new file mode 100644
index 0000000..d1a6817
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blast_furnace.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smooth_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:smooth_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blast_furnace"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smooth_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blast_furnace"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_banner.json
new file mode 100644
index 0000000..12fe966
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_bed.json
new file mode 100644
index 0000000..d27e965
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_candle.json
new file mode 100644
index 0000000..e793487
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_carpet.json
new file mode 100644
index 0000000..a8901ae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_glazed_terracotta.json
new file mode 100644
index 0000000..dd3a4fd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_stained_glass_pane.json
new file mode 100644
index 0000000..a986fe4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..b63151e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/blue_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_blue_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brick_wall.json
new file mode 100644
index 0000000..e2f5d6d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brick_wall_from_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brick_wall_from_bricks_stonecutting.json
new file mode 100644
index 0000000..ed610d9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brick_wall_from_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brick_wall_from_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brick_wall_from_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_banner.json
new file mode 100644
index 0000000..8ec9f5d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brown_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brown_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_bed.json
new file mode 100644
index 0000000..03d31f4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brown_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brown_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_candle.json
new file mode 100644
index 0000000..ac9060c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brown_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brown_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_carpet.json
new file mode 100644
index 0000000..482d967
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brown_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brown_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_glazed_terracotta.json
new file mode 100644
index 0000000..cfb9724
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brown_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brown_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_stained_glass_pane.json
new file mode 100644
index 0000000..b446f5f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..e13a727
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/brown_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brown_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_brown_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/campfire.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/campfire.json
new file mode 100644
index 0000000..66bca0a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/campfire.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_coal": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:coals"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_stick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:campfire"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stick",
+ "has_coal"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:campfire"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/candle.json
new file mode 100644
index 0000000..13521a0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/candle.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_honeycomb": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:honeycomb"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_string": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:string"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_string",
+ "has_honeycomb"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cartography_table.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cartography_table.json
new file mode 100644
index 0000000..d3d9de0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cartography_table.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_paper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:paper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cartography_table"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_paper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cartography_table"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/chain.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/chain.json
new file mode 100644
index 0000000..fb24bb0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/chain.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_nugget": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_nugget"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chain"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_nugget",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chain"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_fence.json
new file mode 100644
index 0000000..2d21e1e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_hanging_sign.json
new file mode 100644
index 0000000..9998ef4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_cherry_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_sign.json
new file mode 100644
index 0000000..c1e2114
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cherry_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/chest.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/chest.json
new file mode 100644
index 0000000..6e00416
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/chest.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lots_of_items": {
+ "conditions": {
+ "slots": {
+ "occupied": {
+ "min": 10
+ }
+ }
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chest"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lots_of_items"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chest"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cobbled_deepslate_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobbled_deepslate_wall.json
new file mode 100644
index 0000000..b695980
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobbled_deepslate_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobbled_deepslate_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobbled_deepslate_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cobbled_deepslate_wall_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobbled_deepslate_wall_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..caeac7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobbled_deepslate_wall_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobbled_deepslate_wall_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobbled_deepslate_wall_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cobblestone_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobblestone_wall.json
new file mode 100644
index 0000000..cde03a7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobblestone_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobblestone_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobblestone_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cobblestone_wall_from_cobblestone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobblestone_wall_from_cobblestone_stonecutting.json
new file mode 100644
index 0000000..9cf1be9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cobblestone_wall_from_cobblestone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cobblestone_wall_from_cobblestone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cobblestone_wall_from_cobblestone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/composter.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/composter.json
new file mode 100644
index 0000000..eeb7a2e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/composter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:composter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wood_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:wooden_slabs"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wood_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:composter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/crafting_table.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/crafting_table.json
new file mode 100644
index 0000000..a040c87
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/crafting_table.json
@@ -0,0 +1,25 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crafting_table"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "unlock_right_away": {
+ "trigger": "minecraft:tick"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "unlock_right_away"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crafting_table"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_fence.json
new file mode 100644
index 0000000..0d2c70e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_hanging_sign.json
new file mode 100644
index 0000000..24af841
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_crimson_stem"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_sign.json
new file mode 100644
index 0000000..270f36a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/crimson_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_banner.json
new file mode 100644
index 0000000..acd7aeb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cyan_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cyan_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_bed.json
new file mode 100644
index 0000000..7ea83de
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cyan_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cyan_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_candle.json
new file mode 100644
index 0000000..b7b8f75
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cyan_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cyan_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_carpet.json
new file mode 100644
index 0000000..dea236e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cyan_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cyan_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_glazed_terracotta.json
new file mode 100644
index 0000000..90da75a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cyan_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cyan_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_stained_glass_pane.json
new file mode 100644
index 0000000..3b99317
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..ff50f60
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/cyan_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cyan_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cyan_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_cyan_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_fence.json
new file mode 100644
index 0000000..971316c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_hanging_sign.json
new file mode 100644
index 0000000..a80fe55
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_dark_oak_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_sign.json
new file mode 100644
index 0000000..119fcef
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/dark_oak_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/decorated_pot_simple.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/decorated_pot_simple.json
new file mode 100644
index 0000000..0b33648
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/decorated_pot_simple.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:decorated_pot_ingredients"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:decorated_pot_simple"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:decorated_pot_simple"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall.json
new file mode 100644
index 0000000..ef37f9b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..5563bd2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_wall_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_wall_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_deepslate_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_deepslate_bricks_stonecutting.json
new file mode 100644
index 0000000..b16dae6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_deepslate_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_wall_from_deepslate_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_wall_from_deepslate_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..e9c3bbd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_brick_wall_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_brick_wall_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_brick_wall_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall.json
new file mode 100644
index 0000000..9e33f69
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_tiles": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_tiles"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_tiles"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..d4dc256
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_wall_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_wall_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_deepslate_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_deepslate_bricks_stonecutting.json
new file mode 100644
index 0000000..f41a111
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_deepslate_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_wall_from_deepslate_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_wall_from_deepslate_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_deepslate_tiles_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_deepslate_tiles_stonecutting.json
new file mode 100644
index 0000000..ef25a72
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_deepslate_tiles_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_tiles": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_tiles"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_wall_from_deepslate_tiles_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_tiles"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_wall_from_deepslate_tiles_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..d07c024
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/deepslate_tile_wall_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:deepslate_tile_wall_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:deepslate_tile_wall_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/diorite_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/diorite_wall.json
new file mode 100644
index 0000000..44e7acd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/diorite_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diorite_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diorite_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/diorite_wall_from_diorite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/diorite_wall_from_diorite_stonecutting.json
new file mode 100644
index 0000000..f1bb5f1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/diorite_wall_from_diorite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diorite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diorite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diorite_wall_from_diorite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diorite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diorite_wall_from_diorite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/enchanting_table.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/enchanting_table.json
new file mode 100644
index 0000000..771cfc3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/enchanting_table.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_obsidian": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:obsidian"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:enchanting_table"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_obsidian"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:enchanting_table"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/end_crystal.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_crystal.json
new file mode 100644
index 0000000..3ac71d8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_crystal.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_ender_eye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ender_eye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_crystal"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_ender_eye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_crystal"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/end_rod.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_rod.json
new file mode 100644
index 0000000..e5a5de9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_rod.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chorus_fruit_popped": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:popped_chorus_fruit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_rod"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chorus_fruit_popped"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_rod"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall.json
new file mode 100644
index 0000000..2fa03c7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall_from_end_stone_brick_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall_from_end_stone_brick_stonecutting.json
new file mode 100644
index 0000000..e2f14b9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall_from_end_stone_brick_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_wall_from_end_stone_brick_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_wall_from_end_stone_brick_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall_from_end_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall_from_end_stone_stonecutting.json
new file mode 100644
index 0000000..eb59cb8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/end_stone_brick_wall_from_end_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_end_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:end_stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:end_stone_brick_wall_from_end_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_end_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:end_stone_brick_wall_from_end_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/ender_chest.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/ender_chest.json
new file mode 100644
index 0000000..75cc0f3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/ender_chest.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_ender_eye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ender_eye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:ender_chest"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_ender_eye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:ender_chest"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/fletching_table.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/fletching_table.json
new file mode 100644
index 0000000..c35a325
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/fletching_table.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_flint": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:flint"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:fletching_table"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_flint"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:fletching_table"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/flower_pot.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/flower_pot.json
new file mode 100644
index 0000000..8cc4c02
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/flower_pot.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:flower_pot"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:flower_pot"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/furnace.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/furnace.json
new file mode 100644
index 0000000..9e13132
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/furnace.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_crafting_materials"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:furnace"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:furnace"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/glass_pane.json
new file mode 100644
index 0000000..4a55af0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/glow_item_frame.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/glow_item_frame.json
new file mode 100644
index 0000000..60b0e3a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/glow_item_frame.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glow_ink_sac": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glow_ink_sac"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_item_frame": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:item_frame"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:glow_item_frame"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_item_frame",
+ "has_glow_ink_sac"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:glow_item_frame"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/granite_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/granite_wall.json
new file mode 100644
index 0000000..abf1709
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/granite_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:granite_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:granite_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/granite_wall_from_granite_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/granite_wall_from_granite_stonecutting.json
new file mode 100644
index 0000000..bd0796c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/granite_wall_from_granite_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_granite": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:granite"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:granite_wall_from_granite_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_granite"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:granite_wall_from_granite_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_banner.json
new file mode 100644
index 0000000..0f5cdb6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gray_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gray_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_bed.json
new file mode 100644
index 0000000..5976b3a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gray_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gray_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_candle.json
new file mode 100644
index 0000000..819761c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gray_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gray_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_carpet.json
new file mode 100644
index 0000000..3e17033
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gray_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gray_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_glazed_terracotta.json
new file mode 100644
index 0000000..37f33e6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gray_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gray_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_stained_glass_pane.json
new file mode 100644
index 0000000..51b306c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..41997e5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/gray_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_gray_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_gray_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/green_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_banner.json
new file mode 100644
index 0000000..550a7fb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_green_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_green_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/green_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_bed.json
new file mode 100644
index 0000000..acf62aa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_green_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_green_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/green_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_candle.json
new file mode 100644
index 0000000..4b3a88c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_green_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_green_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/green_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_carpet.json
new file mode 100644
index 0000000..e10b592
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_green_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_green_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/green_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_glazed_terracotta.json
new file mode 100644
index 0000000..6e8830c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_green_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_green_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/green_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_stained_glass_pane.json
new file mode 100644
index 0000000..2d081cf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/green_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..6c03183
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/green_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_green_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_green_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/grindstone.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/grindstone.json
new file mode 100644
index 0000000..57e5149
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/grindstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_slab": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_slab"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:grindstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_slab"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:grindstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/honeycomb_block.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/honeycomb_block.json
new file mode 100644
index 0000000..77367ec
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/honeycomb_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_honeycomb": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:honeycomb"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:honeycomb_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_honeycomb"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:honeycomb_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/iron_bars.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/iron_bars.json
new file mode 100644
index 0000000..0b0b56c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/iron_bars.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_bars"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_bars"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/item_frame.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/item_frame.json
new file mode 100644
index 0000000..b9a85d9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/item_frame.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_leather": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:leather"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:item_frame"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_leather"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:item_frame"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/jukebox.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/jukebox.json
new file mode 100644
index 0000000..d4a6202
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/jukebox.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jukebox"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jukebox"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_fence.json
new file mode 100644
index 0000000..589f773
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_hanging_sign.json
new file mode 100644
index 0000000..1a75d7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_jungle_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_sign.json
new file mode 100644
index 0000000..e432d53
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/jungle_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/ladder.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/ladder.json
new file mode 100644
index 0000000..6d3f284
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/ladder.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:ladder"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:ladder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lantern.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lantern.json
new file mode 100644
index 0000000..115abdb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lantern.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_nugget": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_nugget"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lantern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_nugget",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lantern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_banner.json
new file mode 100644
index 0000000..6a4fd4c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_blue_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_blue_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_bed.json
new file mode 100644
index 0000000..bfa709a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_blue_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_blue_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_candle.json
new file mode 100644
index 0000000..ddf547a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_blue_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_carpet.json
new file mode 100644
index 0000000..d68bc4b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_blue_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_blue_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_glazed_terracotta.json
new file mode 100644
index 0000000..8648482
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_blue_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_blue_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_stained_glass_pane.json
new file mode 100644
index 0000000..959f02d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..f21a4d1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_blue_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_light_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_light_blue_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_banner.json
new file mode 100644
index 0000000..25d833f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_gray_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_gray_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_bed.json
new file mode 100644
index 0000000..264c708
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_gray_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_gray_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_candle.json
new file mode 100644
index 0000000..4d9e477
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_gray_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_gray_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_carpet.json
new file mode 100644
index 0000000..f378a58
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_gray_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_gray_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_glazed_terracotta.json
new file mode 100644
index 0000000..34d2cdd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_light_gray_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_light_gray_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_stained_glass_pane.json
new file mode 100644
index 0000000..0a813c4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..ff3c07e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/light_gray_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_light_gray_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:light_gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_light_gray_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_banner.json
new file mode 100644
index 0000000..525efd7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lime_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lime_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_bed.json
new file mode 100644
index 0000000..ebe169e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lime_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lime_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_candle.json
new file mode 100644
index 0000000..f11f19a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lime_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lime_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_carpet.json
new file mode 100644
index 0000000..d809633
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lime_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lime_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_glazed_terracotta.json
new file mode 100644
index 0000000..e573f1d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lime_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lime_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_stained_glass_pane.json
new file mode 100644
index 0000000..7ddc0d3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..12eef0c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lime_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_lime_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lime_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_lime_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/lodestone.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/lodestone.json
new file mode 100644
index 0000000..3ccf8e6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/lodestone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lodestone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lodestone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/loom.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/loom.json
new file mode 100644
index 0000000..c1829b7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/loom.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_string": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:string"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:loom"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_string"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:loom"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_banner.json
new file mode 100644
index 0000000..b9a0ce2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_magenta_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_magenta_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_bed.json
new file mode 100644
index 0000000..eda1465
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_magenta_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_magenta_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_candle.json
new file mode 100644
index 0000000..201b529
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_magenta_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_magenta_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_carpet.json
new file mode 100644
index 0000000..01b52ff
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_magenta_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_magenta_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_glazed_terracotta.json
new file mode 100644
index 0000000..9d3ebde
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_magenta_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_magenta_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_stained_glass_pane.json
new file mode 100644
index 0000000..43b9840
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..0f1e26e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/magenta_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_magenta_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:magenta_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_magenta_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_fence.json
new file mode 100644
index 0000000..103f4d1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_hanging_sign.json
new file mode 100644
index 0000000..33d389b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_mangrove_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_sign.json
new file mode 100644
index 0000000..172ecac
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mangrove_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/moss_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/moss_carpet.json
new file mode 100644
index 0000000..cec3703
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/moss_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_moss_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:moss_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:moss_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_moss_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:moss_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_cobblestone_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_cobblestone_wall.json
new file mode 100644
index 0000000..84af20f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_cobblestone_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting.json
new file mode 100644
index 0000000..672880e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_stone_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_stone_brick_wall.json
new file mode 100644
index 0000000..41ec883
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_stone_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting.json
new file mode 100644
index 0000000..0ef0e10
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mossy_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mossy_stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mossy_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mud_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mud_brick_wall.json
new file mode 100644
index 0000000..03ecfc9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mud_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mud_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mud_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mud_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mud_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mud_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json
new file mode 100644
index 0000000..60f73b6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mud_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mud_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mud_brick_wall_from_mud_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mud_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mud_brick_wall_from_mud_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_fence.json
new file mode 100644
index 0000000..689f18e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_wall.json
new file mode 100644
index 0000000..7742728
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_wall_from_nether_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_wall_from_nether_bricks_stonecutting.json
new file mode 100644
index 0000000..0cdfae7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/nether_brick_wall_from_nether_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick_wall_from_nether_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick_wall_from_nether_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_fence.json
new file mode 100644
index 0000000..209d0d6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_hanging_sign.json
new file mode 100644
index 0000000..9ce6308
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_oak_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_sign.json
new file mode 100644
index 0000000..d18ded6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/oak_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_banner.json
new file mode 100644
index 0000000..0295ee4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_orange_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_orange_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_bed.json
new file mode 100644
index 0000000..4608278
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_orange_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_orange_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_candle.json
new file mode 100644
index 0000000..d99adc2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_orange_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_orange_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_carpet.json
new file mode 100644
index 0000000..2ff38e0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_orange_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_orange_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_glazed_terracotta.json
new file mode 100644
index 0000000..b833cdf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_orange_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_orange_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_stained_glass_pane.json
new file mode 100644
index 0000000..f5ec07f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..293807e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/orange_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_orange_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_orange_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/painting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/painting.json
new file mode 100644
index 0000000..fe37a2d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/painting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:painting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:painting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_banner.json
new file mode 100644
index 0000000..20afae6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_bed.json
new file mode 100644
index 0000000..87d48fa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_candle.json
new file mode 100644
index 0000000..131449f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_carpet.json
new file mode 100644
index 0000000..35f6079
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_glazed_terracotta.json
new file mode 100644
index 0000000..2fdcf7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_stained_glass_pane.json
new file mode 100644
index 0000000..c85bffd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..9b632ef
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/pink_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_pink_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_pink_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall.json
new file mode 100644
index 0000000..e1fa93f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..5d31d82
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_wall_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_wall_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_bricks_stonecutting.json
new file mode 100644
index 0000000..13e2298
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_wall_from_polished_blackstone_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_wall_from_polished_blackstone_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..04ae817
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_brick_wall_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_brick_wall_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall.json
new file mode 100644
index 0000000..739c693
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall_from_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall_from_blackstone_stonecutting.json
new file mode 100644
index 0000000..82b745e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall_from_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_wall_from_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_wall_from_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall_from_polished_blackstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall_from_polished_blackstone_stonecutting.json
new file mode 100644
index 0000000..530da8d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_blackstone_wall_from_polished_blackstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_wall_from_polished_blackstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_wall_from_polished_blackstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall.json
new file mode 100644
index 0000000..a58bfda
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall_from_cobbled_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall_from_cobbled_deepslate_stonecutting.json
new file mode 100644
index 0000000..71e7251
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall_from_cobbled_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobbled_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobbled_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_wall_from_cobbled_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobbled_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_wall_from_cobbled_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall_from_polished_deepslate_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall_from_polished_deepslate_stonecutting.json
new file mode 100644
index 0000000..b629985
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_deepslate_wall_from_polished_deepslate_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_deepslate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_deepslate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_deepslate_wall_from_polished_deepslate_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_deepslate"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_deepslate_wall_from_polished_deepslate_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall.json
new file mode 100644
index 0000000..401bcf2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..5181c79
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_wall_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_wall_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall_from_tuff_stonecutting.json
new file mode 100644
index 0000000..98f9815
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/polished_tuff_wall_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_tuff_wall_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_tuff_wall_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/prismarine_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/prismarine_wall.json
new file mode 100644
index 0000000..fbe3921
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/prismarine_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/prismarine_wall_from_prismarine_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/prismarine_wall_from_prismarine_stonecutting.json
new file mode 100644
index 0000000..3d07629
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/prismarine_wall_from_prismarine_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_prismarine": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:prismarine"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:prismarine_wall_from_prismarine_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_prismarine"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:prismarine_wall_from_prismarine_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_banner.json
new file mode 100644
index 0000000..7ae53c0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purple_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purple_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_bed.json
new file mode 100644
index 0000000..6386d4c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purple_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purple_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_candle.json
new file mode 100644
index 0000000..3f4d76d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purple_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purple_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_carpet.json
new file mode 100644
index 0000000..5275850
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purple_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purple_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_glazed_terracotta.json
new file mode 100644
index 0000000..01c9ed2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_purple_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_purple_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_stained_glass_pane.json
new file mode 100644
index 0000000..bb77983
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..7e0bf03
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/purple_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_purple_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_purple_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_banner.json
new file mode 100644
index 0000000..77b5d97
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_bed.json
new file mode 100644
index 0000000..7e5754f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_candle.json
new file mode 100644
index 0000000..63bf3d6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_carpet.json
new file mode 100644
index 0000000..88d6459
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_glazed_terracotta.json
new file mode 100644
index 0000000..989a450
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_nether_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_nether_brick_wall.json
new file mode 100644
index 0000000..c82f406
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_nether_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_nether_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_nether_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_nether_brick_wall_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_nether_brick_wall_from_red_nether_bricks_stonecutting.json
new file mode 100644
index 0000000..5a21584
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_nether_brick_wall_from_red_nether_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_nether_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_nether_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_nether_brick_wall_from_red_nether_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_nether_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_nether_brick_wall_from_red_nether_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_sandstone_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_sandstone_wall.json
new file mode 100644
index 0000000..40242a4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_sandstone_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_sandstone_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_sandstone_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_sandstone_wall_from_red_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_sandstone_wall_from_red_sandstone_stonecutting.json
new file mode 100644
index 0000000..f974873
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_sandstone_wall_from_red_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_sandstone_wall_from_red_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_sandstone_wall_from_red_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_stained_glass_pane.json
new file mode 100644
index 0000000..86e58b9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/red_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..94cb1ae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/red_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_red_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/respawn_anchor.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/respawn_anchor.json
new file mode 100644
index 0000000..ca1ad36
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/respawn_anchor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_obsidian": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crying_obsidian"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:respawn_anchor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_obsidian"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:respawn_anchor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/sandstone_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/sandstone_wall.json
new file mode 100644
index 0000000..25e00a1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/sandstone_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sandstone_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sandstone_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/sandstone_wall_from_sandstone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/sandstone_wall_from_sandstone_stonecutting.json
new file mode 100644
index 0000000..fa17793
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/sandstone_wall_from_sandstone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sandstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sandstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sandstone_wall_from_sandstone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sandstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sandstone_wall_from_sandstone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/scaffolding.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/scaffolding.json
new file mode 100644
index 0000000..fc54ea8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/scaffolding.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bamboo": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:scaffolding"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bamboo"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:scaffolding"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/shulker_box.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/shulker_box.json
new file mode 100644
index 0000000..0531584
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/shulker_box.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_shulker_shell": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:shulker_shell"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:shulker_box"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_shulker_shell"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:shulker_box"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/smithing_table.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/smithing_table.json
new file mode 100644
index 0000000..bfc7a13
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/smithing_table.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smithing_table"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smithing_table"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/smoker.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/smoker.json
new file mode 100644
index 0000000..5a47eb4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/smoker.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_furnace": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:furnace"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:smoker"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_furnace"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:smoker"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/snow.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/snow.json
new file mode 100644
index 0000000..4d987ac
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/snow.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_snowball": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:snowball"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:snow"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_snowball"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:snow"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_campfire.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_campfire.json
new file mode 100644
index 0000000..b96e10f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_campfire.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_soul_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:soul_fire_base_blocks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:soul_campfire"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_soul_sand"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:soul_campfire"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_lantern.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_lantern.json
new file mode 100644
index 0000000..d9cbfea
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_lantern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_soul_torch": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:soul_torch"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:soul_lantern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_soul_torch"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:soul_lantern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_torch.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_torch.json
new file mode 100644
index 0000000..cb9bdd3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/soul_torch.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_soul_sand": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:soul_fire_base_blocks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:soul_torch"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_soul_sand"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:soul_torch"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_fence.json
new file mode 100644
index 0000000..235f761
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_hanging_sign.json
new file mode 100644
index 0000000..7d476d1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_spruce_log"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_sign.json
new file mode 100644
index 0000000..8087b5b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/spruce_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_wall.json
new file mode 100644
index 0000000..b02a902
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_wall_from_stone_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_wall_from_stone_bricks_stonecutting.json
new file mode 100644
index 0000000..dd56594
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_wall_from_stone_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_wall_from_stone_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_wall_from_stone_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_walls_from_stone_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_walls_from_stone_stonecutting.json
new file mode 100644
index 0000000..28b7e9e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/stone_brick_walls_from_stone_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_brick_walls_from_stone_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_brick_walls_from_stone_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/stonecutter.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/stonecutter.json
new file mode 100644
index 0000000..9965629
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/stonecutter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stonecutter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stonecutter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/torch.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/torch.json
new file mode 100644
index 0000000..2c86ba8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/torch.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone_pickaxe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_pickaxe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:torch"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone_pickaxe"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:torch"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall.json
new file mode 100644
index 0000000..d42903e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_polished_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_polished_tuff_stonecutting.json
new file mode 100644
index 0000000..1c9055b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_polished_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_wall_from_polished_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_wall_from_polished_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_tuff_bricks_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_tuff_bricks_stonecutting.json
new file mode 100644
index 0000000..6b311d7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_tuff_bricks_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_wall_from_tuff_bricks_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff_bricks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff_bricks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff_bricks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_wall_from_tuff_bricks_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_tuff_stonecutting.json
new file mode 100644
index 0000000..f536999
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_brick_wall_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_brick_wall_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_brick_wall_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_wall.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_wall.json
new file mode 100644
index 0000000..a9456cf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_wall.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_wall"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_wall"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_wall_from_tuff_stonecutting.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_wall_from_tuff_stonecutting.json
new file mode 100644
index 0000000..6a83e7a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/tuff_wall_from_tuff_stonecutting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tuff_wall_from_tuff_stonecutting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tuff": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tuff"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tuff"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tuff_wall_from_tuff_stonecutting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_fence.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_fence.json
new file mode 100644
index 0000000..d021617
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_fence.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_fence"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_fence"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_hanging_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_hanging_sign.json
new file mode 100644
index 0000000..c0257e3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_hanging_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stripped_logs": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stripped_warped_stem"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_hanging_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stripped_logs"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_hanging_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_sign.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_sign.json
new file mode 100644
index 0000000..6d4cc76
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/warped_sign.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_sign"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_sign"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/white_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_banner.json
new file mode 100644
index 0000000..b6c95cd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/white_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_bed.json
new file mode 100644
index 0000000..85620b1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/white_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_candle.json
new file mode 100644
index 0000000..0ce919a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/white_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_carpet.json
new file mode 100644
index 0000000..58c14de
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/white_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_glazed_terracotta.json
new file mode 100644
index 0000000..a1fa24d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/white_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_stained_glass_pane.json
new file mode 100644
index 0000000..6054582
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/white_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..8dafc5c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/white_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_white_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_banner.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_banner.json
new file mode 100644
index 0000000..b328082
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_banner.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_banner"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_yellow_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_yellow_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_banner"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_bed.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_bed.json
new file mode 100644
index 0000000..00de75d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_bed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_bed"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_yellow_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_yellow_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_bed"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_candle.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_candle.json
new file mode 100644
index 0000000..7512375
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_candle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_candle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_yellow_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_yellow_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_candle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_carpet.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_carpet.json
new file mode 100644
index 0000000..aa60ede
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_carpet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_carpet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_yellow_wool": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_wool"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_yellow_wool"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_carpet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_glazed_terracotta.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_glazed_terracotta.json
new file mode 100644
index 0000000..b1a4dca
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_glazed_terracotta.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_glazed_terracotta"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_yellow_terracotta": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_terracotta"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_yellow_terracotta"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_glazed_terracotta"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_stained_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_stained_glass_pane.json
new file mode 100644
index 0000000..3fb7b04
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_stained_glass_pane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_stained_glass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_stained_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_stained_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_stained_glass_pane_from_glass_pane.json b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_stained_glass_pane_from_glass_pane.json
new file mode 100644
index 0000000..76a2347
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/decorations/yellow_stained_glass_pane_from_glass_pane.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glass_pane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glass_pane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_stained_glass_pane_from_glass_pane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_yellow_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glass_pane",
+ "has_yellow_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_stained_glass_pane_from_glass_pane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato.json b/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato.json
new file mode 100644
index 0000000..7f2a44f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_potato": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:potato"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:baked_potato"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_potato"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:baked_potato"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato_from_campfire_cooking.json
new file mode 100644
index 0000000..fd3565b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_potato": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:potato"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:baked_potato_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_potato"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:baked_potato_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato_from_smoking.json
new file mode 100644
index 0000000..73843d5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/baked_potato_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_potato": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:potato"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:baked_potato_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_potato"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:baked_potato_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/beetroot_soup.json b/src/main/resources/data/minecraft/advancement/recipes/food/beetroot_soup.json
new file mode 100644
index 0000000..e04cda7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/beetroot_soup.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_beetroot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:beetroot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:beetroot_soup"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_beetroot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:beetroot_soup"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/bread.json b/src/main/resources/data/minecraft/advancement/recipes/food/bread.json
new file mode 100644
index 0000000..b092f4e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/bread.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bread"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wheat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wheat"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wheat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bread"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cake.json b/src/main/resources/data/minecraft/advancement/recipes/food/cake.json
new file mode 100644
index 0000000..1eaf924
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cake.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_egg": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:egg"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cake"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_egg"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cake"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef.json
new file mode 100644
index 0000000..81d289a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_beef": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:beef"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_beef"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_beef"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_beef"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef_from_campfire_cooking.json
new file mode 100644
index 0000000..0fac9bb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_beef": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:beef"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_beef_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_beef"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_beef_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef_from_smoking.json
new file mode 100644
index 0000000..d8dc3f1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_beef_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_beef": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:beef"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_beef_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_beef"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_beef_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken.json
new file mode 100644
index 0000000..4174832
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chicken": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chicken"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_chicken"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chicken"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_chicken"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken_from_campfire_cooking.json
new file mode 100644
index 0000000..d2e1eb2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chicken": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chicken"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_chicken_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chicken"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_chicken_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken_from_smoking.json
new file mode 100644
index 0000000..4d13c86
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_chicken_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chicken": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chicken"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_chicken_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chicken"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_chicken_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod.json
new file mode 100644
index 0000000..7e51363
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_cod"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cod"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_cod"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod_from_campfire_cooking.json
new file mode 100644
index 0000000..d50367b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_cod_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cod"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_cod_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod_from_smoking.json
new file mode 100644
index 0000000..e27bd2f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_cod_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_cod_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cod"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_cod_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton.json
new file mode 100644
index 0000000..f49a02a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mutton": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mutton"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_mutton"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mutton"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_mutton"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton_from_campfire_cooking.json
new file mode 100644
index 0000000..da7a4a4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mutton": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mutton"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_mutton_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mutton"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_mutton_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton_from_smoking.json
new file mode 100644
index 0000000..9f3ed83
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_mutton_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_mutton": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mutton"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_mutton_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mutton"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_mutton_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop.json
new file mode 100644
index 0000000..3dbb5d6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_porkchop": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:porkchop"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_porkchop"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_porkchop"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_porkchop"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop_from_campfire_cooking.json
new file mode 100644
index 0000000..7e42247
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_porkchop": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:porkchop"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_porkchop_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_porkchop"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_porkchop_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop_from_smoking.json
new file mode 100644
index 0000000..8c3d33b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_porkchop_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_porkchop": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:porkchop"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_porkchop_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_porkchop"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_porkchop_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit.json
new file mode 100644
index 0000000..df3b574
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rabbit": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rabbit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_rabbit"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rabbit"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_rabbit"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit_from_campfire_cooking.json
new file mode 100644
index 0000000..7faa256
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rabbit": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rabbit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_rabbit_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rabbit"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_rabbit_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit_from_smoking.json
new file mode 100644
index 0000000..46489a8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_rabbit_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rabbit": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rabbit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_rabbit_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rabbit"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_rabbit_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon.json
new file mode 100644
index 0000000..f0eb80a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_salmon": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:salmon"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_salmon"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_salmon"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_salmon"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon_from_campfire_cooking.json
new file mode 100644
index 0000000..0cc70d9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_salmon": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:salmon"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_salmon_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_salmon"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_salmon_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon_from_smoking.json
new file mode 100644
index 0000000..0fa1809
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cooked_salmon_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_salmon": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:salmon"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cooked_salmon_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_salmon"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cooked_salmon_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/cookie.json b/src/main/resources/data/minecraft/advancement/recipes/food/cookie.json
new file mode 100644
index 0000000..d225100
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/cookie.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cocoa": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cocoa_beans"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cookie"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cocoa"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cookie"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp.json b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp.json
new file mode 100644
index 0000000..e229120
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dried_kelp_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dried_kelp_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dried_kelp"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dried_kelp_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dried_kelp"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_campfire_cooking.json b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_campfire_cooking.json
new file mode 100644
index 0000000..3ad3fd8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_campfire_cooking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_kelp": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:kelp"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dried_kelp_from_campfire_cooking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_kelp"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dried_kelp_from_campfire_cooking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_smelting.json b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_smelting.json
new file mode 100644
index 0000000..82bdc4f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_smelting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_kelp": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:kelp"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dried_kelp_from_smelting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_kelp"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dried_kelp_from_smelting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_smoking.json b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_smoking.json
new file mode 100644
index 0000000..146078a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/dried_kelp_from_smoking.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_kelp": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:kelp"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dried_kelp_from_smoking"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_kelp"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dried_kelp_from_smoking"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/golden_apple.json b/src/main/resources/data/minecraft/advancement/recipes/food/golden_apple.json
new file mode 100644
index 0000000..69a539d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/golden_apple.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_apple"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_apple"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/honey_bottle.json b/src/main/resources/data/minecraft/advancement/recipes/food/honey_bottle.json
new file mode 100644
index 0000000..5393059
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/honey_bottle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_honey_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:honey_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:honey_bottle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_honey_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:honey_bottle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/mushroom_stew.json b/src/main/resources/data/minecraft/advancement/recipes/food/mushroom_stew.json
new file mode 100644
index 0000000..976a5fc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/mushroom_stew.json
@@ -0,0 +1,65 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bowl": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bowl"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_brown_mushroom": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_mushroom"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_mushroom_stew": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mushroom_stew"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_mushroom": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_mushroom"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mushroom_stew"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_mushroom_stew",
+ "has_bowl",
+ "has_brown_mushroom",
+ "has_red_mushroom"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mushroom_stew"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/pumpkin_pie.json b/src/main/resources/data/minecraft/advancement/recipes/food/pumpkin_pie.json
new file mode 100644
index 0000000..9819648
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/pumpkin_pie.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_carved_pumpkin": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:carved_pumpkin"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_pumpkin": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pumpkin"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pumpkin_pie"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_carved_pumpkin",
+ "has_pumpkin"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pumpkin_pie"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/rabbit_stew_from_brown_mushroom.json b/src/main/resources/data/minecraft/advancement/recipes/food/rabbit_stew_from_brown_mushroom.json
new file mode 100644
index 0000000..c9e2eaf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/rabbit_stew_from_brown_mushroom.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cooked_rabbit": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cooked_rabbit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:rabbit_stew_from_brown_mushroom"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cooked_rabbit"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:rabbit_stew_from_brown_mushroom"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/food/rabbit_stew_from_red_mushroom.json b/src/main/resources/data/minecraft/advancement/recipes/food/rabbit_stew_from_red_mushroom.json
new file mode 100644
index 0000000..bec5196
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/food/rabbit_stew_from_red_mushroom.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cooked_rabbit": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cooked_rabbit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:rabbit_stew_from_red_mushroom"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cooked_rabbit"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:rabbit_stew_from_red_mushroom"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/beacon.json b/src/main/resources/data/minecraft/advancement/recipes/misc/beacon.json
new file mode 100644
index 0000000..b14a349
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/beacon.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_star": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_star"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:beacon"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_star"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:beacon"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/black_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/black_dye.json
new file mode 100644
index 0000000..d06cfdb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/black_dye.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_ink_sac": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ink_sac"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_ink_sac"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/black_dye_from_wither_rose.json b/src/main/resources/data/minecraft/advancement/recipes/misc/black_dye_from_wither_rose.json
new file mode 100644
index 0000000..2dfe2bb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/black_dye_from_wither_rose.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:black_dye_from_wither_rose"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wither_rose": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wither_rose"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wither_rose"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:black_dye_from_wither_rose"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/blue_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/blue_dye.json
new file mode 100644
index 0000000..e8af8c7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/blue_dye.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lapis_lazuli": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lapis_lazuli"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lapis_lazuli"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/blue_dye_from_cornflower.json b/src/main/resources/data/minecraft/advancement/recipes/misc/blue_dye_from_cornflower.json
new file mode 100644
index 0000000..d57f392
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/blue_dye_from_cornflower.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cornflower": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cornflower"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:blue_dye_from_cornflower"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cornflower"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:blue_dye_from_cornflower"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/bolt_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/bolt_armor_trim_smithing_template.json
new file mode 100644
index 0000000..d98a282
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/bolt_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bolt_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bolt_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bolt_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bolt_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bolt_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/bolt_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/bolt_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..d33371a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/bolt_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bolt_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bolt_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bolt_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/bone_meal.json b/src/main/resources/data/minecraft/advancement/recipes/misc/bone_meal.json
new file mode 100644
index 0000000..ca49228
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/bone_meal.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bone_meal"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bone_meal"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/bone_meal_from_bone_block.json b/src/main/resources/data/minecraft/advancement/recipes/misc/bone_meal_from_bone_block.json
new file mode 100644
index 0000000..557e21e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/bone_meal_from_bone_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bone_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bone_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bone_meal_from_bone_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bone_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bone_meal_from_bone_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/book.json b/src/main/resources/data/minecraft/advancement/recipes/misc/book.json
new file mode 100644
index 0000000..1495fbd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/book.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_paper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:paper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:book"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_paper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:book"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/bowl.json b/src/main/resources/data/minecraft/advancement/recipes/misc/bowl.json
new file mode 100644
index 0000000..0c6dad6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/bowl.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_brown_mushroom": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:brown_mushroom"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_mushroom_stew": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mushroom_stew"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_mushroom": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_mushroom"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bowl"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_brown_mushroom",
+ "has_red_mushroom",
+ "has_mushroom_stew"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bowl"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/brick.json b/src/main/resources/data/minecraft/advancement/recipes/misc/brick.json
new file mode 100644
index 0000000..ca618ad
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/brick.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_clay_ball": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:clay_ball"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brick"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_clay_ball"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brick"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/brown_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/brown_dye.json
new file mode 100644
index 0000000..2e28670
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/brown_dye.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cocoa_beans": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cocoa_beans"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brown_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cocoa_beans"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brown_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/bucket.json b/src/main/resources/data/minecraft/advancement/recipes/misc/bucket.json
new file mode 100644
index 0000000..4c60b01
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/bucket.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bucket"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bucket"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/charcoal.json b/src/main/resources/data/minecraft/advancement/recipes/misc/charcoal.json
new file mode 100644
index 0000000..0b8ef61
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/charcoal.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_log": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:logs_that_burn"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:charcoal"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_log"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:charcoal"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/coal.json b/src/main/resources/data/minecraft/advancement/recipes/misc/coal.json
new file mode 100644
index 0000000..3c91cfb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/coal.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_coal_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:coal_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coal"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_coal_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coal"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_blasting_coal_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_blasting_coal_ore.json
new file mode 100644
index 0000000..cdef977
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_blasting_coal_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_coal_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:coal_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coal_from_blasting_coal_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_coal_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coal_from_blasting_coal_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_blasting_deepslate_coal_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_blasting_deepslate_coal_ore.json
new file mode 100644
index 0000000..c1986a9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_blasting_deepslate_coal_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_coal_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_coal_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coal_from_blasting_deepslate_coal_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_coal_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coal_from_blasting_deepslate_coal_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_smelting_coal_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_smelting_coal_ore.json
new file mode 100644
index 0000000..989271b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_smelting_coal_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_coal_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:coal_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coal_from_smelting_coal_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_coal_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coal_from_smelting_coal_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_smelting_deepslate_coal_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_smelting_deepslate_coal_ore.json
new file mode 100644
index 0000000..e1b9837
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/coal_from_smelting_deepslate_coal_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_coal_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_coal_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coal_from_smelting_deepslate_coal_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_coal_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coal_from_smelting_deepslate_coal_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/coast_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/coast_armor_trim_smithing_template.json
new file mode 100644
index 0000000..96dfc37
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/coast_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_coast_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:coast_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coast_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_coast_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coast_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/coast_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/coast_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..1d0c534
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/coast_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:coast_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:coast_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:coast_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/conduit.json b/src/main/resources/data/minecraft/advancement/recipes/misc/conduit.json
new file mode 100644
index 0000000..b9efe8b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/conduit.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nautilus_core": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:heart_of_the_sea"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_nautilus_shell": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nautilus_shell"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:conduit"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nautilus_core",
+ "has_nautilus_shell"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:conduit"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot.json
new file mode 100644
index 0000000..2e8f411
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_copper_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_copper_ore.json
new file mode 100644
index 0000000..37c06ad
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_copper_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot_from_blasting_copper_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot_from_blasting_copper_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_deepslate_copper_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_deepslate_copper_ore.json
new file mode 100644
index 0000000..ac09de7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_deepslate_copper_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_copper_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_copper_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot_from_blasting_deepslate_copper_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_copper_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot_from_blasting_deepslate_copper_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_raw_copper.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_raw_copper.json
new file mode 100644
index 0000000..0b7081c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_blasting_raw_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot_from_blasting_raw_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot_from_blasting_raw_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_copper_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_copper_ore.json
new file mode 100644
index 0000000..4a5b2d5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_copper_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot_from_smelting_copper_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot_from_smelting_copper_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_deepslate_copper_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_deepslate_copper_ore.json
new file mode 100644
index 0000000..f43f7ad
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_deepslate_copper_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_copper_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_copper_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot_from_smelting_deepslate_copper_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_copper_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot_from_smelting_deepslate_copper_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_raw_copper.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_raw_copper.json
new file mode 100644
index 0000000..caf783c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_smelting_raw_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot_from_smelting_raw_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot_from_smelting_raw_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_waxed_copper_block.json b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_waxed_copper_block.json
new file mode 100644
index 0000000..6779c8f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/copper_ingot_from_waxed_copper_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_ingot_from_waxed_copper_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_ingot_from_waxed_copper_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/creeper_banner_pattern.json b/src/main/resources/data/minecraft/advancement/recipes/misc/creeper_banner_pattern.json
new file mode 100644
index 0000000..324e408
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/creeper_banner_pattern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_creeper_head": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:creeper_head"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:creeper_banner_pattern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_creeper_head"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:creeper_banner_pattern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/cyan_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/cyan_dye.json
new file mode 100644
index 0000000..6c4f40c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/cyan_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_green_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_green_dye",
+ "has_blue_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/cyan_dye_from_pitcher_plant.json b/src/main/resources/data/minecraft/advancement/recipes/misc/cyan_dye_from_pitcher_plant.json
new file mode 100644
index 0000000..116d15d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/cyan_dye_from_pitcher_plant.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pitcher_plant": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pitcher_plant"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cyan_dye_from_pitcher_plant"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pitcher_plant"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cyan_dye_from_pitcher_plant"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/diamond.json b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond.json
new file mode 100644
index 0000000..e6fed72
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_blasting_deepslate_diamond_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_blasting_deepslate_diamond_ore.json
new file mode 100644
index 0000000..65f3bb4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_blasting_deepslate_diamond_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_diamond_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_diamond_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_from_blasting_deepslate_diamond_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_diamond_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_from_blasting_deepslate_diamond_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_blasting_diamond_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_blasting_diamond_ore.json
new file mode 100644
index 0000000..61e4459
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_blasting_diamond_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_from_blasting_diamond_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_from_blasting_diamond_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_smelting_deepslate_diamond_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_smelting_deepslate_diamond_ore.json
new file mode 100644
index 0000000..ebeb39b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_smelting_deepslate_diamond_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_diamond_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_diamond_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_from_smelting_deepslate_diamond_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_diamond_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_from_smelting_deepslate_diamond_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_smelting_diamond_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_smelting_diamond_ore.json
new file mode 100644
index 0000000..2b1afe8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/diamond_from_smelting_diamond_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_from_smelting_diamond_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_from_smelting_diamond_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/dune_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/dune_armor_trim_smithing_template.json
new file mode 100644
index 0000000..e696da7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/dune_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dune_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dune_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dune_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dune_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dune_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/dune_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/dune_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..297a882
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/dune_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dune_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dune_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dune_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/emerald.json b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald.json
new file mode 100644
index 0000000..2cd28b7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_emerald_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:emerald_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:emerald"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_emerald_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:emerald"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_blasting_deepslate_emerald_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_blasting_deepslate_emerald_ore.json
new file mode 100644
index 0000000..d7774a7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_blasting_deepslate_emerald_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_emerald_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_emerald_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:emerald_from_blasting_deepslate_emerald_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_emerald_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:emerald_from_blasting_deepslate_emerald_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_blasting_emerald_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_blasting_emerald_ore.json
new file mode 100644
index 0000000..0876a9e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_blasting_emerald_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_emerald_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:emerald_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:emerald_from_blasting_emerald_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_emerald_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:emerald_from_blasting_emerald_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_smelting_deepslate_emerald_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_smelting_deepslate_emerald_ore.json
new file mode 100644
index 0000000..2ca8e2f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_smelting_deepslate_emerald_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_emerald_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_emerald_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:emerald_from_smelting_deepslate_emerald_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_emerald_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:emerald_from_smelting_deepslate_emerald_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_smelting_emerald_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_smelting_emerald_ore.json
new file mode 100644
index 0000000..a7e2e78
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/emerald_from_smelting_emerald_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_emerald_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:emerald_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:emerald_from_smelting_emerald_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_emerald_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:emerald_from_smelting_emerald_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/ender_eye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/ender_eye.json
new file mode 100644
index 0000000..796e594
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/ender_eye.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blaze_powder": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blaze_powder"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:ender_eye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blaze_powder"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:ender_eye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/eye_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/eye_armor_trim_smithing_template.json
new file mode 100644
index 0000000..80ecd63
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/eye_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_eye_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:eye_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:eye_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_eye_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:eye_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/eye_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/eye_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..9a9412b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/eye_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:eye_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:eye_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:eye_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/fire_charge.json b/src/main/resources/data/minecraft/advancement/recipes/misc/fire_charge.json
new file mode 100644
index 0000000..8104ff1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/fire_charge.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blaze_powder": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blaze_powder"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:fire_charge"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blaze_powder"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:fire_charge"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/firework_rocket_simple.json b/src/main/resources/data/minecraft/advancement/recipes/misc/firework_rocket_simple.json
new file mode 100644
index 0000000..6a35e5c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/firework_rocket_simple.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gunpowder": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gunpowder"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:firework_rocket_simple"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gunpowder"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:firework_rocket_simple"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/flow_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/flow_armor_trim_smithing_template.json
new file mode 100644
index 0000000..e664884
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/flow_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_flow_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:flow_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:flow_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_flow_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:flow_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/flow_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/flow_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..de75086
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/flow_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:flow_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:flow_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:flow_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/flower_banner_pattern.json b/src/main/resources/data/minecraft/advancement/recipes/misc/flower_banner_pattern.json
new file mode 100644
index 0000000..43678b8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/flower_banner_pattern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxeye_daisy": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxeye_daisy"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:flower_banner_pattern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxeye_daisy"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:flower_banner_pattern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_deepslate_gold_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_deepslate_gold_ore.json
new file mode 100644
index 0000000..5f1ac8a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_deepslate_gold_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_gold_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_gold_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_blasting_deepslate_gold_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_gold_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_blasting_deepslate_gold_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_gold_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_gold_ore.json
new file mode 100644
index 0000000..9482a9b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_gold_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_blasting_gold_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_blasting_gold_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_nether_gold_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_nether_gold_ore.json
new file mode 100644
index 0000000..71a722d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_nether_gold_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_gold_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_gold_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_blasting_nether_gold_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_gold_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_blasting_nether_gold_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_raw_gold.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_raw_gold.json
new file mode 100644
index 0000000..a04bbd6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_blasting_raw_gold.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_gold": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_gold"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_blasting_raw_gold"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_gold"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_blasting_raw_gold"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_gold_block.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_gold_block.json
new file mode 100644
index 0000000..989fc72
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_gold_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_gold_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_gold_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_nuggets.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_nuggets.json
new file mode 100644
index 0000000..849a182
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_nuggets.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_nugget": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_nugget"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_nuggets"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_nugget"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_nuggets"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_deepslate_gold_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_deepslate_gold_ore.json
new file mode 100644
index 0000000..f080f27
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_deepslate_gold_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_gold_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_gold_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_smelting_deepslate_gold_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_gold_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_smelting_deepslate_gold_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_gold_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_gold_ore.json
new file mode 100644
index 0000000..d2331d3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_gold_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_smelting_gold_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_smelting_gold_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_nether_gold_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_nether_gold_ore.json
new file mode 100644
index 0000000..556d16a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_nether_gold_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_gold_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_gold_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_smelting_nether_gold_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_gold_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_smelting_nether_gold_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_raw_gold.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_raw_gold.json
new file mode 100644
index 0000000..18fe8e0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_ingot_from_smelting_raw_gold.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_gold": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_gold"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_ingot_from_smelting_raw_gold"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_gold"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_ingot_from_smelting_raw_gold"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget.json
new file mode 100644
index 0000000..6eeaf56
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_nugget"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_nugget"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget_from_blasting.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget_from_blasting.json
new file mode 100644
index 0000000..df1002d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget_from_blasting.json
@@ -0,0 +1,131 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_golden_axe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_axe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_hoe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_hoe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_horse_armor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_horse_armor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_pickaxe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_pickaxe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_shovel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_shovel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_sword": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_sword"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_nugget_from_blasting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_golden_pickaxe",
+ "has_golden_shovel",
+ "has_golden_axe",
+ "has_golden_hoe",
+ "has_golden_sword",
+ "has_golden_helmet",
+ "has_golden_chestplate",
+ "has_golden_leggings",
+ "has_golden_boots",
+ "has_golden_horse_armor"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_nugget_from_blasting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget_from_smelting.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget_from_smelting.json
new file mode 100644
index 0000000..034942f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gold_nugget_from_smelting.json
@@ -0,0 +1,131 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_golden_axe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_axe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_hoe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_hoe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_horse_armor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_horse_armor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_pickaxe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_pickaxe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_shovel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_shovel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_golden_sword": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:golden_sword"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gold_nugget_from_smelting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_golden_pickaxe",
+ "has_golden_shovel",
+ "has_golden_axe",
+ "has_golden_hoe",
+ "has_golden_sword",
+ "has_golden_helmet",
+ "has_golden_chestplate",
+ "has_golden_leggings",
+ "has_golden_boots",
+ "has_golden_horse_armor"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gold_nugget_from_smelting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/gray_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/gray_dye.json
new file mode 100644
index 0000000..55be0c2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/gray_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:gray_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_dye",
+ "has_black_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:gray_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/green_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/green_dye.json
new file mode 100644
index 0000000..aca5bc6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/green_dye.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cactus": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cactus"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:green_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cactus"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:green_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/host_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/host_armor_trim_smithing_template.json
new file mode 100644
index 0000000..94be097
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/host_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_host_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:host_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:host_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_host_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:host_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/host_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/host_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..ab6ffc4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/host_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:host_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:host_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:host_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_deepslate_iron_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_deepslate_iron_ore.json
new file mode 100644
index 0000000..ddbdc90
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_deepslate_iron_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_iron_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_iron_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_blasting_deepslate_iron_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_iron_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_blasting_deepslate_iron_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_iron_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_iron_ore.json
new file mode 100644
index 0000000..76bad9a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_iron_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_blasting_iron_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_blasting_iron_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_raw_iron.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_raw_iron.json
new file mode 100644
index 0000000..1d02a7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_blasting_raw_iron.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_iron": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_iron"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_blasting_raw_iron"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_iron"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_blasting_raw_iron"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_iron_block.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_iron_block.json
new file mode 100644
index 0000000..9de9119
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_iron_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_iron_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_iron_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_nuggets.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_nuggets.json
new file mode 100644
index 0000000..d344b90
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_nuggets.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_nugget": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_nugget"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_nuggets"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_nugget"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_nuggets"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_deepslate_iron_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_deepslate_iron_ore.json
new file mode 100644
index 0000000..3515fe9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_deepslate_iron_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_iron_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_iron_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_smelting_deepslate_iron_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_iron_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_smelting_deepslate_iron_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_iron_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_iron_ore.json
new file mode 100644
index 0000000..1f59473
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_iron_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_smelting_iron_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_smelting_iron_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_raw_iron.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_raw_iron.json
new file mode 100644
index 0000000..997b86c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_ingot_from_smelting_raw_iron.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_iron": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_iron"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_ingot_from_smelting_raw_iron"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_iron"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_ingot_from_smelting_raw_iron"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget.json
new file mode 100644
index 0000000..b6f1d12
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_nugget"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_nugget"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget_from_blasting.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget_from_blasting.json
new file mode 100644
index 0000000..abd38c8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget_from_blasting.json
@@ -0,0 +1,175 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chainmail_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_chainmail_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_chainmail_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_chainmail_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_axe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_axe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_hoe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_hoe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_horse_armor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_horse_armor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_pickaxe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_pickaxe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_shovel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_shovel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_sword": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_sword"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_nugget_from_blasting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_pickaxe",
+ "has_iron_shovel",
+ "has_iron_axe",
+ "has_iron_hoe",
+ "has_iron_sword",
+ "has_iron_helmet",
+ "has_iron_chestplate",
+ "has_iron_leggings",
+ "has_iron_boots",
+ "has_iron_horse_armor",
+ "has_chainmail_helmet",
+ "has_chainmail_chestplate",
+ "has_chainmail_leggings",
+ "has_chainmail_boots"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_nugget_from_blasting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget_from_smelting.json b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget_from_smelting.json
new file mode 100644
index 0000000..ac5733e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/iron_nugget_from_smelting.json
@@ -0,0 +1,175 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chainmail_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_chainmail_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_chainmail_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_chainmail_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chainmail_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_axe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_axe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_hoe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_hoe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_horse_armor": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_horse_armor"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_pickaxe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_pickaxe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_shovel": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_shovel"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_iron_sword": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_sword"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_nugget_from_smelting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_pickaxe",
+ "has_iron_shovel",
+ "has_iron_axe",
+ "has_iron_hoe",
+ "has_iron_sword",
+ "has_iron_helmet",
+ "has_iron_chestplate",
+ "has_iron_leggings",
+ "has_iron_boots",
+ "has_iron_horse_armor",
+ "has_chainmail_helmet",
+ "has_chainmail_chestplate",
+ "has_chainmail_leggings",
+ "has_chainmail_boots"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_nugget_from_smelting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli.json b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli.json
new file mode 100644
index 0000000..14e9329
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lapis_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lapis_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lapis_lazuli"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lapis_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lapis_lazuli"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_blasting_deepslate_lapis_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_blasting_deepslate_lapis_ore.json
new file mode 100644
index 0000000..04418e8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_blasting_deepslate_lapis_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_lapis_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_lapis_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lapis_lazuli_from_blasting_deepslate_lapis_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_lapis_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lapis_lazuli_from_blasting_deepslate_lapis_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_blasting_lapis_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_blasting_lapis_ore.json
new file mode 100644
index 0000000..b72a2c3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_blasting_lapis_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lapis_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lapis_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lapis_lazuli_from_blasting_lapis_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lapis_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lapis_lazuli_from_blasting_lapis_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_smelting_deepslate_lapis_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_smelting_deepslate_lapis_ore.json
new file mode 100644
index 0000000..99265db
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_smelting_deepslate_lapis_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_lapis_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_lapis_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lapis_lazuli_from_smelting_deepslate_lapis_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_lapis_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lapis_lazuli_from_smelting_deepslate_lapis_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_smelting_lapis_ore.json b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_smelting_lapis_ore.json
new file mode 100644
index 0000000..8830f06
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/lapis_lazuli_from_smelting_lapis_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lapis_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lapis_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lapis_lazuli_from_smelting_lapis_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lapis_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lapis_lazuli_from_smelting_lapis_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/leather.json b/src/main/resources/data/minecraft/advancement/recipes/misc/leather.json
new file mode 100644
index 0000000..125ece1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/leather.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rabbit_hide": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rabbit_hide"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:leather"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rabbit_hide"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:leather"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/leather_horse_armor.json b/src/main/resources/data/minecraft/advancement/recipes/misc/leather_horse_armor.json
new file mode 100644
index 0000000..ba8c891
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/leather_horse_armor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_leather": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:leather"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:leather_horse_armor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_leather"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:leather_horse_armor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/light_blue_dye_from_blue_orchid.json b/src/main/resources/data/minecraft/advancement/recipes/misc/light_blue_dye_from_blue_orchid.json
new file mode 100644
index 0000000..3e1a7ce
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/light_blue_dye_from_blue_orchid.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_orchid": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_orchid"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_dye_from_blue_orchid"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_orchid"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_dye_from_blue_orchid"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/light_blue_dye_from_blue_white_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/light_blue_dye_from_blue_white_dye.json
new file mode 100644
index 0000000..db51ab9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/light_blue_dye_from_blue_white_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_blue_dye_from_blue_white_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_dye",
+ "has_white_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_blue_dye_from_blue_white_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_azure_bluet.json b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_azure_bluet.json
new file mode 100644
index 0000000..16d5a69
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_azure_bluet.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_azure_bluet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:azure_bluet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_dye_from_azure_bluet"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_azure_bluet"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_dye_from_azure_bluet"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_black_white_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_black_white_dye.json
new file mode 100644
index 0000000..5bcb43d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_black_white_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_black_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:black_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_dye_from_black_white_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_dye",
+ "has_black_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_dye_from_black_white_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_gray_white_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_gray_white_dye.json
new file mode 100644
index 0000000..70baee0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_gray_white_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gray_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gray_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_dye_from_gray_white_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gray_dye",
+ "has_white_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_dye_from_gray_white_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_oxeye_daisy.json b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_oxeye_daisy.json
new file mode 100644
index 0000000..ba5e104
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_oxeye_daisy.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxeye_daisy": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxeye_daisy"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_dye_from_oxeye_daisy"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxeye_daisy"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_dye_from_oxeye_daisy"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_white_tulip.json b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_white_tulip.json
new file mode 100644
index 0000000..0dcf361
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/light_gray_dye_from_white_tulip.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_gray_dye_from_white_tulip"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_tulip": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_tulip"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_tulip"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_gray_dye_from_white_tulip"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/lime_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/lime_dye.json
new file mode 100644
index 0000000..0e3495e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/lime_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_green_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:green_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_green_dye",
+ "has_white_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/lime_dye_from_smelting.json b/src/main/resources/data/minecraft/advancement/recipes/misc/lime_dye_from_smelting.json
new file mode 100644
index 0000000..acda107
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/lime_dye_from_smelting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sea_pickle": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sea_pickle"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lime_dye_from_smelting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sea_pickle"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lime_dye_from_smelting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_allium.json b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_allium.json
new file mode 100644
index 0000000..ae72827
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_allium.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_allium": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:allium"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_dye_from_allium"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_allium"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_dye_from_allium"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_blue_red_pink.json b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_blue_red_pink.json
new file mode 100644
index 0000000..6b147f6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_blue_red_pink.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_pink_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_dye_from_blue_red_pink"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_dye",
+ "has_blue_dye",
+ "has_red_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_dye_from_blue_red_pink"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_blue_red_white_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_blue_red_white_dye.json
new file mode 100644
index 0000000..9c5f101
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_blue_red_white_dye.json
@@ -0,0 +1,54 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_rose_red": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_dye_from_blue_red_white_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_dye",
+ "has_rose_red",
+ "has_white_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_dye_from_blue_red_white_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_lilac.json b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_lilac.json
new file mode 100644
index 0000000..56f9ba2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_lilac.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lilac": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lilac"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_dye_from_lilac"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lilac"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_dye_from_lilac"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_purple_and_pink.json b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_purple_and_pink.json
new file mode 100644
index 0000000..687b375
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/magenta_dye_from_purple_and_pink.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_purple_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:purple_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:magenta_dye_from_purple_and_pink"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_dye",
+ "has_purple_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:magenta_dye_from_purple_and_pink"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/map.json b/src/main/resources/data/minecraft/advancement/recipes/misc/map.json
new file mode 100644
index 0000000..016bfe2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/map.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_compass": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:compass"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:map"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_compass"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:map"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/melon_seeds.json b/src/main/resources/data/minecraft/advancement/recipes/misc/melon_seeds.json
new file mode 100644
index 0000000..64b5c50
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/melon_seeds.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_melon": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:melon_slice"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:melon_seeds"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_melon"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:melon_seeds"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/mojang_banner_pattern.json b/src/main/resources/data/minecraft/advancement/recipes/misc/mojang_banner_pattern.json
new file mode 100644
index 0000000..4051b97
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/mojang_banner_pattern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_enchanted_golden_apple": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:enchanted_golden_apple"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mojang_banner_pattern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_enchanted_golden_apple"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mojang_banner_pattern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/music_disc_5.json b/src/main/resources/data/minecraft/advancement/recipes/misc/music_disc_5.json
new file mode 100644
index 0000000..c0ae144
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/music_disc_5.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_disc_fragment_5": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:disc_fragment_5"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:music_disc_5"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_disc_fragment_5"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:music_disc_5"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/nether_brick.json b/src/main/resources/data/minecraft/advancement/recipes/misc/nether_brick.json
new file mode 100644
index 0000000..6be9306
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/nether_brick.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherrack": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherrack"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:nether_brick"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherrack"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:nether_brick"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_ingot.json b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_ingot.json
new file mode 100644
index 0000000..e302547
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_ingot.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_scrap": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_scrap"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_ingot"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_scrap"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_ingot"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_ingot_from_netherite_block.json b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_ingot_from_netherite_block.json
new file mode 100644
index 0000000..058f380
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_ingot_from_netherite_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_ingot_from_netherite_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_ingot_from_netherite_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_scrap.json b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_scrap.json
new file mode 100644
index 0000000..ff6c637
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_scrap.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_ancient_debris": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ancient_debris"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_scrap"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_ancient_debris"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_scrap"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_scrap_from_blasting.json b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_scrap_from_blasting.json
new file mode 100644
index 0000000..999fa98
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_scrap_from_blasting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_ancient_debris": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ancient_debris"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_scrap_from_blasting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_ancient_debris"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_scrap_from_blasting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_upgrade_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_upgrade_smithing_template.json
new file mode 100644
index 0000000..b8234c1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/netherite_upgrade_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_upgrade_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_upgrade_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_upgrade_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_upgrade_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_upgrade_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_orange_tulip.json b/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_orange_tulip.json
new file mode 100644
index 0000000..4f415e1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_orange_tulip.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_orange_tulip": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:orange_tulip"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_dye_from_orange_tulip"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_orange_tulip"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_dye_from_orange_tulip"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_red_yellow.json b/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_red_yellow.json
new file mode 100644
index 0000000..e0b836f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_red_yellow.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_dye_from_red_yellow"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_yellow_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:yellow_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_dye",
+ "has_yellow_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_dye_from_red_yellow"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_torchflower.json b/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_torchflower.json
new file mode 100644
index 0000000..87b4a3a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/orange_dye_from_torchflower.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:orange_dye_from_torchflower"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_torchflower": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:torchflower"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_torchflower"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:orange_dye_from_torchflower"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/paper.json b/src/main/resources/data/minecraft/advancement/recipes/misc/paper.json
new file mode 100644
index 0000000..7d00fd6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/paper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_reeds": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sugar_cane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:paper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_reeds"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:paper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_peony.json b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_peony.json
new file mode 100644
index 0000000..2a417b0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_peony.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_peony": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:peony"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_dye_from_peony"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_peony"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_dye_from_peony"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_pink_petals.json b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_pink_petals.json
new file mode 100644
index 0000000..5f7f04c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_pink_petals.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_petals": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_petals"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_dye_from_pink_petals"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_petals"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_dye_from_pink_petals"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_pink_tulip.json b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_pink_tulip.json
new file mode 100644
index 0000000..205ec84
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_pink_tulip.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pink_tulip": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pink_tulip"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_dye_from_pink_tulip"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pink_tulip"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_dye_from_pink_tulip"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_red_white_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_red_white_dye.json
new file mode 100644
index 0000000..003371c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/pink_dye_from_red_white_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pink_dye_from_red_white_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_white_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:white_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_white_dye",
+ "has_red_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pink_dye_from_red_white_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/popped_chorus_fruit.json b/src/main/resources/data/minecraft/advancement/recipes/misc/popped_chorus_fruit.json
new file mode 100644
index 0000000..565ca38
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/popped_chorus_fruit.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_chorus_fruit": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:chorus_fruit"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:popped_chorus_fruit"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_chorus_fruit"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:popped_chorus_fruit"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/pumpkin_seeds.json b/src/main/resources/data/minecraft/advancement/recipes/misc/pumpkin_seeds.json
new file mode 100644
index 0000000..b2681bd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/pumpkin_seeds.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_pumpkin": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:pumpkin"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:pumpkin_seeds"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_pumpkin"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:pumpkin_seeds"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/purple_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/purple_dye.json
new file mode 100644
index 0000000..283c4be
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/purple_dye.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_blue_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:blue_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_red_dye": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_dye"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:purple_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_blue_dye",
+ "has_red_dye"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:purple_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/quartz.json b/src/main/resources/data/minecraft/advancement/recipes/misc/quartz.json
new file mode 100644
index 0000000..617b082
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/quartz.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_quartz_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_quartz_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_quartz_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/quartz_from_blasting.json b/src/main/resources/data/minecraft/advancement/recipes/misc/quartz_from_blasting.json
new file mode 100644
index 0000000..497982d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/quartz_from_blasting.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_nether_quartz_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:nether_quartz_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:quartz_from_blasting"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_nether_quartz_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:quartz_from_blasting"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/raiser_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/raiser_armor_trim_smithing_template.json
new file mode 100644
index 0000000..acf39ca
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/raiser_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raiser_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raiser_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raiser_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raiser_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raiser_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/raiser_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/raiser_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..477d366
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/raiser_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raiser_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raiser_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raiser_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/raw_copper.json b/src/main/resources/data/minecraft/advancement/recipes/misc/raw_copper.json
new file mode 100644
index 0000000..4fe7ab7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/raw_copper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raw_copper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raw_copper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/raw_gold.json b/src/main/resources/data/minecraft/advancement/recipes/misc/raw_gold.json
new file mode 100644
index 0000000..e81635d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/raw_gold.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_gold_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_gold_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raw_gold"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_gold_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raw_gold"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/raw_iron.json b/src/main/resources/data/minecraft/advancement/recipes/misc/raw_iron.json
new file mode 100644
index 0000000..f97f605
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/raw_iron.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_raw_iron_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:raw_iron_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:raw_iron"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_raw_iron_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:raw_iron"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_beetroot.json b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_beetroot.json
new file mode 100644
index 0000000..7c0c252
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_beetroot.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_beetroot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:beetroot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_dye_from_beetroot"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_beetroot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_dye_from_beetroot"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_poppy.json b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_poppy.json
new file mode 100644
index 0000000..448bb81
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_poppy.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_poppy": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:poppy"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_dye_from_poppy"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_poppy"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_dye_from_poppy"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_rose_bush.json b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_rose_bush.json
new file mode 100644
index 0000000..bbb00fd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_rose_bush.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rose_bush": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rose_bush"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_dye_from_rose_bush"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rose_bush"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_dye_from_rose_bush"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_tulip.json b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_tulip.json
new file mode 100644
index 0000000..e044398
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/red_dye_from_tulip.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_red_flower": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:red_tulip"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:red_dye_from_tulip"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_red_flower"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:red_dye_from_tulip"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/rib_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/rib_armor_trim_smithing_template.json
new file mode 100644
index 0000000..cc02cd3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/rib_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rib_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rib_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:rib_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rib_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:rib_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/rib_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/rib_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..732193e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/rib_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rib_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:rib_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:rib_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/sentry_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/sentry_armor_trim_smithing_template.json
new file mode 100644
index 0000000..944a2fb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/sentry_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sentry_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sentry_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sentry_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sentry_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sentry_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/sentry_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/sentry_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..efaf125
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/sentry_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sentry_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sentry_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sentry_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/shaper_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/shaper_armor_trim_smithing_template.json
new file mode 100644
index 0000000..a68b9cb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/shaper_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_shaper_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:shaper_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:shaper_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_shaper_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:shaper_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/shaper_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/shaper_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..c743861
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/shaper_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:shaper_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:shaper_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:shaper_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/silence_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/silence_armor_trim_smithing_template.json
new file mode 100644
index 0000000..15b8cc3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/silence_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_silence_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:silence_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:silence_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_silence_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:silence_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/silence_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/silence_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..e07c707
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/silence_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:silence_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:silence_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:silence_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/skull_banner_pattern.json b/src/main/resources/data/minecraft/advancement/recipes/misc/skull_banner_pattern.json
new file mode 100644
index 0000000..de66343
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/skull_banner_pattern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:skull_banner_pattern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wither_skeleton_skull": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wither_skeleton_skull"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wither_skeleton_skull"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:skull_banner_pattern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/slime_ball.json b/src/main/resources/data/minecraft/advancement/recipes/misc/slime_ball.json
new file mode 100644
index 0000000..38c8a95
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/slime_ball.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_slime_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:slime_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:slime_ball"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_slime_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:slime_ball"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/snout_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/snout_armor_trim_smithing_template.json
new file mode 100644
index 0000000..87b4beb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/snout_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_snout_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:snout_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:snout_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_snout_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:snout_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/snout_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/snout_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..47d3d3d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/snout_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:snout_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:snout_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:snout_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/spire_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/spire_armor_trim_smithing_template.json
new file mode 100644
index 0000000..ddb5562
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/spire_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_spire_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spire_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spire_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_spire_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spire_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/spire_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/spire_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..de70999
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/spire_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spire_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spire_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spire_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/stick.json b/src/main/resources/data/minecraft/advancement/recipes/misc/stick.json
new file mode 100644
index 0000000..74165bb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/stick.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stick"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stick"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/stick_from_bamboo_item.json b/src/main/resources/data/minecraft/advancement/recipes/misc/stick_from_bamboo_item.json
new file mode 100644
index 0000000..5e481f2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/stick_from_bamboo_item.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bamboo": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stick_from_bamboo_item"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bamboo"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stick_from_bamboo_item"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/sugar_from_honey_bottle.json b/src/main/resources/data/minecraft/advancement/recipes/misc/sugar_from_honey_bottle.json
new file mode 100644
index 0000000..57fddc9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/sugar_from_honey_bottle.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_honey_bottle": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:honey_bottle"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sugar_from_honey_bottle"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_honey_bottle"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sugar_from_honey_bottle"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/sugar_from_sugar_cane.json b/src/main/resources/data/minecraft/advancement/recipes/misc/sugar_from_sugar_cane.json
new file mode 100644
index 0000000..3981894
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/sugar_from_sugar_cane.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sugar_cane": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sugar_cane"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sugar_from_sugar_cane"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sugar_cane"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sugar_from_sugar_cane"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/tide_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/tide_armor_trim_smithing_template.json
new file mode 100644
index 0000000..e25917d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/tide_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tide_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tide_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tide_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tide_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tide_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/tide_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/tide_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..6155cc6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/tide_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tide_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tide_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tide_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/vex_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/vex_armor_trim_smithing_template.json
new file mode 100644
index 0000000..0f691a6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/vex_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:vex_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_vex_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:vex_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_vex_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:vex_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/vex_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/vex_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..6820f5d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/vex_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:vex_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:vex_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:vex_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/ward_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/ward_armor_trim_smithing_template.json
new file mode 100644
index 0000000..5f4a3a7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/ward_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:ward_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_ward_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ward_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_ward_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:ward_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/ward_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/ward_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..a48941b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/ward_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:ward_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:ward_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:ward_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/wayfinder_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/wayfinder_armor_trim_smithing_template.json
new file mode 100644
index 0000000..b713cb0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/wayfinder_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wayfinder_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wayfinder_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wayfinder_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wayfinder_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wayfinder_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/wayfinder_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/wayfinder_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..173ea22
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/wayfinder_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wayfinder_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wayfinder_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wayfinder_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/wheat.json b/src/main/resources/data/minecraft/advancement/recipes/misc/wheat.json
new file mode 100644
index 0000000..32380a8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/wheat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_hay_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:hay_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wheat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_hay_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wheat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/white_dye.json b/src/main/resources/data/minecraft/advancement/recipes/misc/white_dye.json
new file mode 100644
index 0000000..53f5a0a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/white_dye.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bone_meal": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bone_meal"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_dye"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bone_meal"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_dye"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/white_dye_from_lily_of_the_valley.json b/src/main/resources/data/minecraft/advancement/recipes/misc/white_dye_from_lily_of_the_valley.json
new file mode 100644
index 0000000..8dfcad0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/white_dye_from_lily_of_the_valley.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_lily_of_the_valley": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lily_of_the_valley"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:white_dye_from_lily_of_the_valley"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_lily_of_the_valley"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:white_dye_from_lily_of_the_valley"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/wild_armor_trim_smithing_template.json b/src/main/resources/data/minecraft/advancement/recipes/misc/wild_armor_trim_smithing_template.json
new file mode 100644
index 0000000..6766be1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/wild_armor_trim_smithing_template.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wild_armor_trim_smithing_template"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_wild_armor_trim_smithing_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wild_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_wild_armor_trim_smithing_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wild_armor_trim_smithing_template"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/wild_armor_trim_smithing_template_smithing_trim.json b/src/main/resources/data/minecraft/advancement/recipes/misc/wild_armor_trim_smithing_template_smithing_trim.json
new file mode 100644
index 0000000..64ffff5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/wild_armor_trim_smithing_template_smithing_trim.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_smithing_trim_template": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:wild_armor_trim_smithing_template"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wild_armor_trim_smithing_template_smithing_trim"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_smithing_trim_template"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wild_armor_trim_smithing_template_smithing_trim"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/wind_charge.json b/src/main/resources/data/minecraft/advancement/recipes/misc/wind_charge.json
new file mode 100644
index 0000000..059e1e3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/wind_charge.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_breeze_rod": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:breeze_rod"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wind_charge"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_breeze_rod"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wind_charge"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/writable_book.json b/src/main/resources/data/minecraft/advancement/recipes/misc/writable_book.json
new file mode 100644
index 0000000..2763d8a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/writable_book.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_book": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:book"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:writable_book"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_book"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:writable_book"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/yellow_dye_from_dandelion.json b/src/main/resources/data/minecraft/advancement/recipes/misc/yellow_dye_from_dandelion.json
new file mode 100644
index 0000000..abec5f1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/yellow_dye_from_dandelion.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dandelion": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dandelion"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_dye_from_dandelion"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dandelion"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_dye_from_dandelion"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/misc/yellow_dye_from_sunflower.json b/src/main/resources/data/minecraft/advancement/recipes/misc/yellow_dye_from_sunflower.json
new file mode 100644
index 0000000..4f6e494
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/misc/yellow_dye_from_sunflower.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_sunflower": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:sunflower"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:yellow_dye_from_sunflower"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_sunflower"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:yellow_dye_from_sunflower"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_button.json
new file mode 100644
index 0000000..6fffe34
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_door.json
new file mode 100644
index 0000000..2f90170
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_fence_gate.json
new file mode 100644
index 0000000..be861e2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_pressure_plate.json
new file mode 100644
index 0000000..fc492fa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_trapdoor.json
new file mode 100644
index 0000000..e515bb2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/acacia_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:acacia_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_button.json
new file mode 100644
index 0000000..8804b51
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_door.json
new file mode 100644
index 0000000..bec8191
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_fence_gate.json
new file mode 100644
index 0000000..b089d01
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_pressure_plate.json
new file mode 100644
index 0000000..7ab171f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_trapdoor.json
new file mode 100644
index 0000000..3f90d16
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/bamboo_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bamboo_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_button.json
new file mode 100644
index 0000000..d3e4b7f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_door.json
new file mode 100644
index 0000000..b35c30c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_fence_gate.json
new file mode 100644
index 0000000..6af682c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_pressure_plate.json
new file mode 100644
index 0000000..58089b3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_trapdoor.json
new file mode 100644
index 0000000..b5eb36a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/birch_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:birch_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/calibrated_sculk_sensor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/calibrated_sculk_sensor.json
new file mode 100644
index 0000000..4d0d6eb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/calibrated_sculk_sensor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_amethyst_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:amethyst_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:calibrated_sculk_sensor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_amethyst_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:calibrated_sculk_sensor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_button.json
new file mode 100644
index 0000000..342c373
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_door.json
new file mode 100644
index 0000000..7b8cc4f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_fence_gate.json
new file mode 100644
index 0000000..40114d1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_pressure_plate.json
new file mode 100644
index 0000000..9cf12d4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_trapdoor.json
new file mode 100644
index 0000000..dad9882
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/cherry_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cherry_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/comparator.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/comparator.json
new file mode 100644
index 0000000..7fc1301
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/comparator.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:comparator"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:comparator"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_bulb.json
new file mode 100644
index 0000000..f9452a6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_door.json
new file mode 100644
index 0000000..39580b4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_trapdoor.json
new file mode 100644
index 0000000..2dcecaa
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/copper_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:copper_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:copper_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/crafter.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/crafter.json
new file mode 100644
index 0000000..faf8ca3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/crafter.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_dropper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dropper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crafter"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_dropper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crafter"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_button.json
new file mode 100644
index 0000000..e0da592
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_door.json
new file mode 100644
index 0000000..a6834be
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_fence_gate.json
new file mode 100644
index 0000000..56414eb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_pressure_plate.json
new file mode 100644
index 0000000..09dfec8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_trapdoor.json
new file mode 100644
index 0000000..70d978b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/crimson_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crimson_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:crimson_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:crimson_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_button.json
new file mode 100644
index 0000000..c5c2860
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_door.json
new file mode 100644
index 0000000..bba6f2f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_fence_gate.json
new file mode 100644
index 0000000..54568b5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_pressure_plate.json
new file mode 100644
index 0000000..dd90b8c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_trapdoor.json
new file mode 100644
index 0000000..47e2dd6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/dark_oak_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:dark_oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/daylight_detector.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/daylight_detector.json
new file mode 100644
index 0000000..20df85b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/daylight_detector.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:daylight_detector"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:daylight_detector"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/dispenser.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/dispenser.json
new file mode 100644
index 0000000..721489b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/dispenser.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_bow": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:bow"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dispenser"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_bow"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dispenser"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/dropper.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/dropper.json
new file mode 100644
index 0000000..6defab3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/dropper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dropper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dropper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/exposed_copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/exposed_copper_bulb.json
new file mode 100644
index 0000000..96242b4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/exposed_copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:exposed_copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:exposed_copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/heavy_weighted_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/heavy_weighted_pressure_plate.json
new file mode 100644
index 0000000..4b2bdd3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/heavy_weighted_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:heavy_weighted_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:heavy_weighted_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/honey_block.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/honey_block.json
new file mode 100644
index 0000000..89de00e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/honey_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_honey_bottle": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:honey_bottle"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:honey_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_honey_bottle"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:honey_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/hopper.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/hopper.json
new file mode 100644
index 0000000..4ce4826
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/hopper.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:hopper"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:hopper"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/iron_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/iron_door.json
new file mode 100644
index 0000000..807388c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/iron_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/iron_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/iron_trapdoor.json
new file mode 100644
index 0000000..6e3d055
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/iron_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_button.json
new file mode 100644
index 0000000..a152c02
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_door.json
new file mode 100644
index 0000000..5c956ee
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_fence_gate.json
new file mode 100644
index 0000000..7772dec
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_pressure_plate.json
new file mode 100644
index 0000000..3010d9a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_trapdoor.json
new file mode 100644
index 0000000..2a27a61
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/jungle_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:jungle_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/lectern.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/lectern.json
new file mode 100644
index 0000000..d27109e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/lectern.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_book": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:book"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lectern"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_book"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lectern"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/lever.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/lever.json
new file mode 100644
index 0000000..80e0dba
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/lever.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:cobblestone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lever"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lever"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/light_weighted_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/light_weighted_pressure_plate.json
new file mode 100644
index 0000000..c11838e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/light_weighted_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:light_weighted_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:light_weighted_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/lightning_rod.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/lightning_rod.json
new file mode 100644
index 0000000..1f27834
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/lightning_rod.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lightning_rod"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lightning_rod"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_button.json
new file mode 100644
index 0000000..d7a409b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_door.json
new file mode 100644
index 0000000..8479072
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_fence_gate.json
new file mode 100644
index 0000000..eda78b1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_pressure_plate.json
new file mode 100644
index 0000000..1d851e9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_trapdoor.json
new file mode 100644
index 0000000..7ea289b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/mangrove_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:mangrove_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/note_block.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/note_block.json
new file mode 100644
index 0000000..d7ec664
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/note_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:note_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:note_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_button.json
new file mode 100644
index 0000000..62a2145
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_door.json
new file mode 100644
index 0000000..34a710b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_fence_gate.json
new file mode 100644
index 0000000..d815377
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_pressure_plate.json
new file mode 100644
index 0000000..8f9a353
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_trapdoor.json
new file mode 100644
index 0000000..873d96e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/oak_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oak_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/observer.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/observer.json
new file mode 100644
index 0000000..e40f179
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/observer.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_quartz": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:quartz"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:observer"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_quartz"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:observer"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/oxidized_copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/oxidized_copper_bulb.json
new file mode 100644
index 0000000..c5c57e2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/oxidized_copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oxidized_copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oxidized_copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/piston.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/piston.json
new file mode 100644
index 0000000..191c268
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/piston.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:piston"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:piston"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/polished_blackstone_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/polished_blackstone_button.json
new file mode 100644
index 0000000..19b612e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/polished_blackstone_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/polished_blackstone_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/polished_blackstone_pressure_plate.json
new file mode 100644
index 0000000..ed1d194
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/polished_blackstone_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_polished_blackstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:polished_blackstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:polished_blackstone_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_polished_blackstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:polished_blackstone_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone.json
new file mode 100644
index 0000000..4660d21
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_block.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_block.json
new file mode 100644
index 0000000..d6fe3b2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_blasting_deepslate_redstone_ore.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_blasting_deepslate_redstone_ore.json
new file mode 100644
index 0000000..c5437d0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_blasting_deepslate_redstone_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_redstone_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_redstone_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone_from_blasting_deepslate_redstone_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_redstone_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone_from_blasting_deepslate_redstone_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_blasting_redstone_ore.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_blasting_redstone_ore.json
new file mode 100644
index 0000000..7235f21
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_blasting_redstone_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone_from_blasting_redstone_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone_from_blasting_redstone_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_smelting_deepslate_redstone_ore.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_smelting_deepslate_redstone_ore.json
new file mode 100644
index 0000000..aa1748d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_smelting_deepslate_redstone_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_deepslate_redstone_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:deepslate_redstone_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone_from_smelting_deepslate_redstone_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_deepslate_redstone_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone_from_smelting_deepslate_redstone_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_smelting_redstone_ore.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_smelting_redstone_ore.json
new file mode 100644
index 0000000..739f04a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_from_smelting_redstone_ore.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone_ore": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone_ore"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone_from_smelting_redstone_ore"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone_ore"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone_from_smelting_redstone_ore"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_lamp.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_lamp.json
new file mode 100644
index 0000000..851832a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_lamp.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_glowstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:glowstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone_lamp"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_glowstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone_lamp"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_torch.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_torch.json
new file mode 100644
index 0000000..d905287
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/redstone_torch.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:redstone_torch"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:redstone_torch"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/repeater.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/repeater.json
new file mode 100644
index 0000000..6d70605
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/repeater.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone_torch": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone_torch"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:repeater"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone_torch"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:repeater"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/slime_block.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/slime_block.json
new file mode 100644
index 0000000..8f41914
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/slime_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_slime_ball": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:slime_ball"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:slime_block"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_slime_ball"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:slime_block"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_button.json
new file mode 100644
index 0000000..d211788
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_door.json
new file mode 100644
index 0000000..f23de9f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_fence_gate.json
new file mode 100644
index 0000000..818987e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_pressure_plate.json
new file mode 100644
index 0000000..ae4e166
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_trapdoor.json
new file mode 100644
index 0000000..20f5759
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/spruce_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:spruce_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/sticky_piston.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/sticky_piston.json
new file mode 100644
index 0000000..60011ec
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/sticky_piston.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_slime_ball": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:slime_ball"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:sticky_piston"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_slime_ball"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:sticky_piston"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/stone_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/stone_button.json
new file mode 100644
index 0000000..f802013
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/stone_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/stone_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/stone_pressure_plate.json
new file mode 100644
index 0000000..e2af12e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/stone_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/target.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/target.json
new file mode 100644
index 0000000..21b2ae1
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/target.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_hay_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:hay_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:target"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone",
+ "has_hay_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:target"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/tnt.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/tnt.json
new file mode 100644
index 0000000..bf95652
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/tnt.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gunpowder": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gunpowder"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tnt"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gunpowder"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tnt"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/trapped_chest.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/trapped_chest.json
new file mode 100644
index 0000000..e5033bc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/trapped_chest.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:trapped_chest"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_tripwire_hook": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:tripwire_hook"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_tripwire_hook"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:trapped_chest"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/tripwire_hook.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/tripwire_hook.json
new file mode 100644
index 0000000..3a3cf54
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/tripwire_hook.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_string": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:string"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tripwire_hook"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_string"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tripwire_hook"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_button.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_button.json
new file mode 100644
index 0000000..267ac24
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_button.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_button"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_button"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_door.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_door.json
new file mode 100644
index 0000000..4088dbb
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_door.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_door"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_door"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_fence_gate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_fence_gate.json
new file mode 100644
index 0000000..ed7cfa6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_fence_gate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_fence_gate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_fence_gate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_pressure_plate.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_pressure_plate.json
new file mode 100644
index 0000000..5b9b581
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_pressure_plate.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_pressure_plate"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_pressure_plate"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_trapdoor.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_trapdoor.json
new file mode 100644
index 0000000..6b3ceae
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/warped_trapdoor.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_planks": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_planks"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_trapdoor"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_planks"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_trapdoor"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_copper_bulb.json
new file mode 100644
index 0000000..334612b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_copper_block": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_copper_block"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_copper_block"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_exposed_copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_exposed_copper_bulb.json
new file mode 100644
index 0000000..4cfd14c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_exposed_copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_exposed_copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_exposed_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_exposed_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_exposed_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_exposed_copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_oxidized_copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_oxidized_copper_bulb.json
new file mode 100644
index 0000000..77d0bb2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_oxidized_copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_oxidized_copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_oxidized_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_oxidized_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_oxidized_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_oxidized_copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_weathered_copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_weathered_copper_bulb.json
new file mode 100644
index 0000000..3ac483c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/waxed_weathered_copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:waxed_weathered_copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_waxed_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:waxed_weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_waxed_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:waxed_weathered_copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/redstone/weathered_copper_bulb.json b/src/main/resources/data/minecraft/advancement/recipes/redstone/weathered_copper_bulb.json
new file mode 100644
index 0000000..b19eb0b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/redstone/weathered_copper_bulb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:weathered_copper_bulb"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_weathered_copper": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:weathered_copper"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_weathered_copper"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:weathered_copper_bulb"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/root.json b/src/main/resources/data/minecraft/advancement/recipes/root.json
new file mode 100644
index 0000000..78142c5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/root.json
@@ -0,0 +1,12 @@
+{
+ "criteria": {
+ "impossible": {
+ "trigger": "minecraft:impossible"
+ }
+ },
+ "requirements": [
+ [
+ "impossible"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/brush.json b/src/main/resources/data/minecraft/advancement/recipes/tools/brush.json
new file mode 100644
index 0000000..00aafb5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/brush.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_copper_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:copper_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:brush"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_copper_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:brush"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/clock.json b/src/main/resources/data/minecraft/advancement/recipes/tools/clock.json
new file mode 100644
index 0000000..dd3f2c4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/clock.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:clock"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:clock"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/compass.json b/src/main/resources/data/minecraft/advancement/recipes/tools/compass.json
new file mode 100644
index 0000000..627cfb3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/compass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_redstone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:redstone"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:compass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_redstone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:compass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_axe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_axe.json
new file mode 100644
index 0000000..31dbd4f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_axe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_axe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_axe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_hoe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_hoe.json
new file mode 100644
index 0000000..0431c5b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_hoe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_hoe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_hoe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_pickaxe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_pickaxe.json
new file mode 100644
index 0000000..71a7554
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_pickaxe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_pickaxe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_pickaxe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_shovel.json b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_shovel.json
new file mode 100644
index 0000000..e3bc5ce
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/diamond_shovel.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:diamond_shovel"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_diamond"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:diamond_shovel"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/fishing_rod.json b/src/main/resources/data/minecraft/advancement/recipes/tools/fishing_rod.json
new file mode 100644
index 0000000..95b6b72
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/fishing_rod.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_string": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:string"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:fishing_rod"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_string"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:fishing_rod"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/flint_and_steel.json b/src/main/resources/data/minecraft/advancement/recipes/tools/flint_and_steel.json
new file mode 100644
index 0000000..8950af6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/flint_and_steel.json
@@ -0,0 +1,43 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_flint": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:flint"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_obsidian": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:obsidian"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:flint_and_steel"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_flint",
+ "has_obsidian"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:flint_and_steel"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/golden_axe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_axe.json
new file mode 100644
index 0000000..cbb7232
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_axe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_axe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_axe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/golden_hoe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_hoe.json
new file mode 100644
index 0000000..c08e99b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_hoe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_hoe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_hoe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/golden_pickaxe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_pickaxe.json
new file mode 100644
index 0000000..f360895
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_pickaxe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_pickaxe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_pickaxe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/golden_shovel.json b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_shovel.json
new file mode 100644
index 0000000..e4ceef2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/golden_shovel.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_gold_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:gold_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:golden_shovel"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_gold_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:golden_shovel"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/iron_axe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_axe.json
new file mode 100644
index 0000000..d4dcd43
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_axe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_axe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_axe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/iron_hoe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_hoe.json
new file mode 100644
index 0000000..90d6087
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_hoe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_hoe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_hoe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/iron_pickaxe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_pickaxe.json
new file mode 100644
index 0000000..98edb58
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_pickaxe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_pickaxe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_pickaxe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/iron_shovel.json b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_shovel.json
new file mode 100644
index 0000000..449cfb5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/iron_shovel.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:iron_shovel"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:iron_shovel"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/lead.json b/src/main/resources/data/minecraft/advancement/recipes/tools/lead.json
new file mode 100644
index 0000000..a872bd4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/lead.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_slime_ball": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:slime_ball"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:lead"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_slime_ball"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:lead"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_axe_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_axe_smithing.json
new file mode 100644
index 0000000..aa37d1b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_axe_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_axe_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_axe_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_hoe_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_hoe_smithing.json
new file mode 100644
index 0000000..137ad2f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_hoe_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_hoe_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_hoe_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_pickaxe_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_pickaxe_smithing.json
new file mode 100644
index 0000000..efaeb52
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_pickaxe_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_pickaxe_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_pickaxe_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_shovel_smithing.json b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_shovel_smithing.json
new file mode 100644
index 0000000..e6db20d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/netherite_shovel_smithing.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_netherite_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:netherite_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:netherite_shovel_smithing"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_netherite_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:netherite_shovel_smithing"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/recovery_compass.json b/src/main/resources/data/minecraft/advancement/recipes/tools/recovery_compass.json
new file mode 100644
index 0000000..22a7b88
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/recovery_compass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_echo_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:echo_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:recovery_compass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_echo_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:recovery_compass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/shears.json b/src/main/resources/data/minecraft/advancement/recipes/tools/shears.json
new file mode 100644
index 0000000..4bf08ac
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/shears.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:shears"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:shears"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/spyglass.json b/src/main/resources/data/minecraft/advancement/recipes/tools/spyglass.json
new file mode 100644
index 0000000..de0605c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/spyglass.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_amethyst_shard": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:amethyst_shard"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spyglass"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_amethyst_shard"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spyglass"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/stone_axe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_axe.json
new file mode 100644
index 0000000..b2fd156
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_axe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_tool_materials"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_axe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_axe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/stone_hoe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_hoe.json
new file mode 100644
index 0000000..ef5185c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_hoe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_tool_materials"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_hoe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_hoe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/stone_pickaxe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_pickaxe.json
new file mode 100644
index 0000000..1377811
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_pickaxe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_tool_materials"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_pickaxe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_pickaxe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/stone_shovel.json b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_shovel.json
new file mode 100644
index 0000000..cf566f5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/stone_shovel.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_cobblestone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_tool_materials"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:stone_shovel"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_cobblestone"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:stone_shovel"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_axe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_axe.json
new file mode 100644
index 0000000..f058032
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_axe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wooden_axe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wooden_axe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_hoe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_hoe.json
new file mode 100644
index 0000000..35cefbd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_hoe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wooden_hoe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wooden_hoe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_pickaxe.json b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_pickaxe.json
new file mode 100644
index 0000000..e88dc29
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_pickaxe.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wooden_pickaxe"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wooden_pickaxe"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_shovel.json b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_shovel.json
new file mode 100644
index 0000000..8fab2e7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/tools/wooden_shovel.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_stick": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stick"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:wooden_shovel"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_stick"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:wooden_shovel"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/acacia_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/acacia_boat.json
new file mode 100644
index 0000000..ea11dff
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/acacia_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/acacia_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/acacia_chest_boat.json
new file mode 100644
index 0000000..abe7cd3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/acacia_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:acacia_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:acacia_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/activator_rail.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/activator_rail.json
new file mode 100644
index 0000000..45aabf4
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/activator_rail.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rail": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rail"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:activator_rail"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rail"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:activator_rail"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/bamboo_chest_raft.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/bamboo_chest_raft.json
new file mode 100644
index 0000000..3c35ddc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/bamboo_chest_raft.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_chest_raft"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_chest_raft"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/bamboo_raft.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/bamboo_raft.json
new file mode 100644
index 0000000..cd845a7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/bamboo_raft.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:bamboo_raft"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:bamboo_raft"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/birch_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/birch_boat.json
new file mode 100644
index 0000000..aabc78e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/birch_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/birch_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/birch_chest_boat.json
new file mode 100644
index 0000000..a3467b9
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/birch_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:birch_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:birch_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/carrot_on_a_stick.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/carrot_on_a_stick.json
new file mode 100644
index 0000000..e7b3101
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/carrot_on_a_stick.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_carrot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:carrot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:carrot_on_a_stick"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_carrot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:carrot_on_a_stick"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/cherry_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/cherry_boat.json
new file mode 100644
index 0000000..e72ccdf
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/cherry_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/cherry_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/cherry_chest_boat.json
new file mode 100644
index 0000000..8b87f01
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/cherry_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:cherry_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:cherry_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/chest_minecart.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/chest_minecart.json
new file mode 100644
index 0000000..5d5ba03
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/chest_minecart.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_minecart": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:minecart"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:chest_minecart"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_minecart"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:chest_minecart"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/dark_oak_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/dark_oak_boat.json
new file mode 100644
index 0000000..6557ca3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/dark_oak_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/dark_oak_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/dark_oak_chest_boat.json
new file mode 100644
index 0000000..98236f7
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/dark_oak_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:dark_oak_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:dark_oak_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/detector_rail.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/detector_rail.json
new file mode 100644
index 0000000..cd2915e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/detector_rail.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rail": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rail"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:detector_rail"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rail"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:detector_rail"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/furnace_minecart.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/furnace_minecart.json
new file mode 100644
index 0000000..a095f3f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/furnace_minecart.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_minecart": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:minecart"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:furnace_minecart"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_minecart"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:furnace_minecart"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/hopper_minecart.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/hopper_minecart.json
new file mode 100644
index 0000000..7ba8f53
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/hopper_minecart.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_minecart": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:minecart"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:hopper_minecart"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_minecart"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:hopper_minecart"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/jungle_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/jungle_boat.json
new file mode 100644
index 0000000..604555d
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/jungle_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/jungle_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/jungle_chest_boat.json
new file mode 100644
index 0000000..506945c
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/jungle_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:jungle_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:jungle_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/mangrove_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/mangrove_boat.json
new file mode 100644
index 0000000..2b778cd
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/mangrove_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/mangrove_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/mangrove_chest_boat.json
new file mode 100644
index 0000000..8b2d68f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/mangrove_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:mangrove_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:mangrove_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/minecart.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/minecart.json
new file mode 100644
index 0000000..0bc6a68
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/minecart.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_iron_ingot": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:minecart"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_iron_ingot"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:minecart"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/oak_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/oak_boat.json
new file mode 100644
index 0000000..6ffdc38
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/oak_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/oak_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/oak_chest_boat.json
new file mode 100644
index 0000000..141388f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/oak_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:oak_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:oak_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/powered_rail.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/powered_rail.json
new file mode 100644
index 0000000..5e504c5
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/powered_rail.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_rail": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:rail"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:powered_rail"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_rail"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:powered_rail"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/rail.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/rail.json
new file mode 100644
index 0000000..78e0b5f
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/rail.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_minecart": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:minecart"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:rail"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_minecart"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:rail"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/spruce_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/spruce_boat.json
new file mode 100644
index 0000000..70ae85e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/spruce_boat.json
@@ -0,0 +1,28 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "in_water": {
+ "conditions": {
+ "block": "minecraft:water"
+ },
+ "trigger": "minecraft:enter_block"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "in_water"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/spruce_chest_boat.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/spruce_chest_boat.json
new file mode 100644
index 0000000..b365bc2
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/spruce_chest_boat.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_boat": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:boats"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:spruce_chest_boat"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_boat"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:spruce_chest_boat"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/tnt_minecart.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/tnt_minecart.json
new file mode 100644
index 0000000..86146c6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/tnt_minecart.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_minecart": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:minecart"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:tnt_minecart"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_minecart"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:tnt_minecart"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/recipes/transportation/warped_fungus_on_a_stick.json b/src/main/resources/data/minecraft/advancement/recipes/transportation/warped_fungus_on_a_stick.json
new file mode 100644
index 0000000..8cdeba3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/recipes/transportation/warped_fungus_on_a_stick.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "criteria": {
+ "has_the_recipe": {
+ "conditions": {
+ "recipe": "minecraft:warped_fungus_on_a_stick"
+ },
+ "trigger": "minecraft:recipe_unlocked"
+ },
+ "has_warped_fungus": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:warped_fungus"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "requirements": [
+ [
+ "has_the_recipe",
+ "has_warped_fungus"
+ ]
+ ],
+ "rewards": {
+ "recipes": [
+ "minecraft:warped_fungus_on_a_stick"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/cure_zombie_villager.json b/src/main/resources/data/minecraft/advancement/story/cure_zombie_villager.json
new file mode 100644
index 0000000..47058cc
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/cure_zombie_villager.json
@@ -0,0 +1,27 @@
+{
+ "parent": "minecraft:story/enter_the_nether",
+ "criteria": {
+ "cured_zombie": {
+ "trigger": "minecraft:cured_zombie_villager"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.cure_zombie_villager.description"
+ },
+ "frame": "goal",
+ "icon": {
+ "count": 1,
+ "id": "minecraft:golden_apple"
+ },
+ "title": {
+ "translate": "advancements.story.cure_zombie_villager.title"
+ }
+ },
+ "requirements": [
+ [
+ "cured_zombie"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/deflect_arrow.json b/src/main/resources/data/minecraft/advancement/story/deflect_arrow.json
new file mode 100644
index 0000000..33264f0
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/deflect_arrow.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:story/obtain_armor",
+ "criteria": {
+ "deflected_projectile": {
+ "conditions": {
+ "damage": {
+ "type": {
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_projectile"
+ }
+ ]
+ },
+ "blocked": true
+ }
+ },
+ "trigger": "minecraft:entity_hurt_player"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.deflect_arrow.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:shield"
+ },
+ "title": {
+ "translate": "advancements.story.deflect_arrow.title"
+ }
+ },
+ "requirements": [
+ [
+ "deflected_projectile"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/enchant_item.json b/src/main/resources/data/minecraft/advancement/story/enchant_item.json
new file mode 100644
index 0000000..744752a
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/enchant_item.json
@@ -0,0 +1,26 @@
+{
+ "parent": "minecraft:story/mine_diamond",
+ "criteria": {
+ "enchanted_item": {
+ "trigger": "minecraft:enchanted_item"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.enchant_item.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:enchanted_book"
+ },
+ "title": {
+ "translate": "advancements.story.enchant_item.title"
+ }
+ },
+ "requirements": [
+ [
+ "enchanted_item"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/enter_the_end.json b/src/main/resources/data/minecraft/advancement/story/enter_the_end.json
new file mode 100644
index 0000000..eaf4506
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/enter_the_end.json
@@ -0,0 +1,29 @@
+{
+ "parent": "minecraft:story/follow_ender_eye",
+ "criteria": {
+ "entered_end": {
+ "conditions": {
+ "to": "minecraft:the_end"
+ },
+ "trigger": "minecraft:changed_dimension"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.enter_the_end.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:end_stone"
+ },
+ "title": {
+ "translate": "advancements.story.enter_the_end.title"
+ }
+ },
+ "requirements": [
+ [
+ "entered_end"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/enter_the_nether.json b/src/main/resources/data/minecraft/advancement/story/enter_the_nether.json
new file mode 100644
index 0000000..e8a4e32
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/enter_the_nether.json
@@ -0,0 +1,29 @@
+{
+ "parent": "minecraft:story/form_obsidian",
+ "criteria": {
+ "entered_nether": {
+ "conditions": {
+ "to": "minecraft:the_nether"
+ },
+ "trigger": "minecraft:changed_dimension"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.enter_the_nether.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:flint_and_steel"
+ },
+ "title": {
+ "translate": "advancements.story.enter_the_nether.title"
+ }
+ },
+ "requirements": [
+ [
+ "entered_nether"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/follow_ender_eye.json b/src/main/resources/data/minecraft/advancement/story/follow_ender_eye.json
new file mode 100644
index 0000000..a5ccee6
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/follow_ender_eye.json
@@ -0,0 +1,39 @@
+{
+ "parent": "minecraft:story/enter_the_nether",
+ "criteria": {
+ "in_stronghold": {
+ "conditions": {
+ "player": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "structures": "minecraft:stronghold"
+ }
+ }
+ }
+ ]
+ },
+ "trigger": "minecraft:location"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.follow_ender_eye.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:ender_eye"
+ },
+ "title": {
+ "translate": "advancements.story.follow_ender_eye.title"
+ }
+ },
+ "requirements": [
+ [
+ "in_stronghold"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/form_obsidian.json b/src/main/resources/data/minecraft/advancement/story/form_obsidian.json
new file mode 100644
index 0000000..f1c5103
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/form_obsidian.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:story/lava_bucket",
+ "criteria": {
+ "obsidian": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:obsidian"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.form_obsidian.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:obsidian"
+ },
+ "title": {
+ "translate": "advancements.story.form_obsidian.title"
+ }
+ },
+ "requirements": [
+ [
+ "obsidian"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/iron_tools.json b/src/main/resources/data/minecraft/advancement/story/iron_tools.json
new file mode 100644
index 0000000..e195c9e
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/iron_tools.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:story/smelt_iron",
+ "criteria": {
+ "iron_pickaxe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_pickaxe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.iron_tools.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:iron_pickaxe"
+ },
+ "title": {
+ "translate": "advancements.story.iron_tools.title"
+ }
+ },
+ "requirements": [
+ [
+ "iron_pickaxe"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/lava_bucket.json b/src/main/resources/data/minecraft/advancement/story/lava_bucket.json
new file mode 100644
index 0000000..7c229b8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/lava_bucket.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:story/smelt_iron",
+ "criteria": {
+ "lava_bucket": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:lava_bucket"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.lava_bucket.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:lava_bucket"
+ },
+ "title": {
+ "translate": "advancements.story.lava_bucket.title"
+ }
+ },
+ "requirements": [
+ [
+ "lava_bucket"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/mine_diamond.json b/src/main/resources/data/minecraft/advancement/story/mine_diamond.json
new file mode 100644
index 0000000..db99a92
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/mine_diamond.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:story/iron_tools",
+ "criteria": {
+ "diamond": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.mine_diamond.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:diamond"
+ },
+ "title": {
+ "translate": "advancements.story.mine_diamond.title"
+ }
+ },
+ "requirements": [
+ [
+ "diamond"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/mine_stone.json b/src/main/resources/data/minecraft/advancement/story/mine_stone.json
new file mode 100644
index 0000000..2a38800
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/mine_stone.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:story/root",
+ "criteria": {
+ "get_stone": {
+ "conditions": {
+ "items": [
+ {
+ "items": "#minecraft:stone_tool_materials"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.mine_stone.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:wooden_pickaxe"
+ },
+ "title": {
+ "translate": "advancements.story.mine_stone.title"
+ }
+ },
+ "requirements": [
+ [
+ "get_stone"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/obtain_armor.json b/src/main/resources/data/minecraft/advancement/story/obtain_armor.json
new file mode 100644
index 0000000..2d2ffb3
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/obtain_armor.json
@@ -0,0 +1,66 @@
+{
+ "parent": "minecraft:story/smelt_iron",
+ "criteria": {
+ "iron_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "iron_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "iron_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "iron_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.obtain_armor.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:iron_chestplate"
+ },
+ "title": {
+ "translate": "advancements.story.obtain_armor.title"
+ }
+ },
+ "requirements": [
+ [
+ "iron_helmet",
+ "iron_chestplate",
+ "iron_leggings",
+ "iron_boots"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/root.json b/src/main/resources/data/minecraft/advancement/story/root.json
new file mode 100644
index 0000000..0526a2b
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/root.json
@@ -0,0 +1,35 @@
+{
+ "criteria": {
+ "crafting_table": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:crafting_table"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "announce_to_chat": false,
+ "background": "minecraft:textures/gui/advancements/backgrounds/stone.png",
+ "description": {
+ "translate": "advancements.story.root.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:grass_block"
+ },
+ "show_toast": false,
+ "title": {
+ "translate": "advancements.story.root.title"
+ }
+ },
+ "requirements": [
+ [
+ "crafting_table"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/shiny_gear.json b/src/main/resources/data/minecraft/advancement/story/shiny_gear.json
new file mode 100644
index 0000000..80fc868
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/shiny_gear.json
@@ -0,0 +1,66 @@
+{
+ "parent": "minecraft:story/mine_diamond",
+ "criteria": {
+ "diamond_boots": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond_boots"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "diamond_chestplate": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond_chestplate"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "diamond_helmet": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond_helmet"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ },
+ "diamond_leggings": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:diamond_leggings"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.shiny_gear.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:diamond_chestplate"
+ },
+ "title": {
+ "translate": "advancements.story.shiny_gear.title"
+ }
+ },
+ "requirements": [
+ [
+ "diamond_helmet",
+ "diamond_chestplate",
+ "diamond_leggings",
+ "diamond_boots"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/smelt_iron.json b/src/main/resources/data/minecraft/advancement/story/smelt_iron.json
new file mode 100644
index 0000000..0b11043
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/smelt_iron.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:story/upgrade_tools",
+ "criteria": {
+ "iron": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:iron_ingot"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.smelt_iron.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:iron_ingot"
+ },
+ "title": {
+ "translate": "advancements.story.smelt_iron.title"
+ }
+ },
+ "requirements": [
+ [
+ "iron"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/advancement/story/upgrade_tools.json b/src/main/resources/data/minecraft/advancement/story/upgrade_tools.json
new file mode 100644
index 0000000..0d396a8
--- /dev/null
+++ b/src/main/resources/data/minecraft/advancement/story/upgrade_tools.json
@@ -0,0 +1,33 @@
+{
+ "parent": "minecraft:story/mine_stone",
+ "criteria": {
+ "stone_pickaxe": {
+ "conditions": {
+ "items": [
+ {
+ "items": "minecraft:stone_pickaxe"
+ }
+ ]
+ },
+ "trigger": "minecraft:inventory_changed"
+ }
+ },
+ "display": {
+ "description": {
+ "translate": "advancements.story.upgrade_tools.description"
+ },
+ "icon": {
+ "count": 1,
+ "id": "minecraft:stone_pickaxe"
+ },
+ "title": {
+ "translate": "advancements.story.upgrade_tools.title"
+ }
+ },
+ "requirements": [
+ [
+ "stone_pickaxe"
+ ]
+ ],
+ "sends_telemetry_event": true
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/banner_pattern/flow.json b/src/main/resources/data/minecraft/banner_pattern/flow.json
new file mode 100644
index 0000000..00ec9c5
--- /dev/null
+++ b/src/main/resources/data/minecraft/banner_pattern/flow.json
@@ -0,0 +1,4 @@
+{
+ "asset_id": "minecraft:flow",
+ "translation_key": "block.minecraft.banner.flow"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/banner_pattern/guster.json b/src/main/resources/data/minecraft/banner_pattern/guster.json
new file mode 100644
index 0000000..99f7d6b
--- /dev/null
+++ b/src/main/resources/data/minecraft/banner_pattern/guster.json
@@ -0,0 +1,4 @@
+{
+ "asset_id": "minecraft:guster",
+ "translation_key": "block.minecraft.banner.guster"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/damage_type/campfire.json b/src/main/resources/data/minecraft/damage_type/campfire.json
new file mode 100644
index 0000000..53255ee
--- /dev/null
+++ b/src/main/resources/data/minecraft/damage_type/campfire.json
@@ -0,0 +1,6 @@
+{
+ "effects": "burning",
+ "exhaustion": 0.1,
+ "message_id": "inFire",
+ "scaling": "when_caused_by_living_non_player"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/damage_type/wind_charge.json b/src/main/resources/data/minecraft/damage_type/wind_charge.json
new file mode 100644
index 0000000..e77a1af
--- /dev/null
+++ b/src/main/resources/data/minecraft/damage_type/wind_charge.json
@@ -0,0 +1,5 @@
+{
+ "exhaustion": 0.1,
+ "message_id": "mob",
+ "scaling": "when_caused_by_living_non_player"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/aqua_affinity.json b/src/main/resources/data/minecraft/enchantment/aqua_affinity.json
new file mode 100644
index 0000000..42c5461
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/aqua_affinity.json
@@ -0,0 +1,34 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.aqua_affinity"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:linear",
+ "base": 4.0,
+ "per_level_above_first": 4.0
+ },
+ "attribute": "minecraft:player.submerged_mining_speed",
+ "id": "minecraft:enchantment.aqua_affinity",
+ "operation": "add_multiplied_total"
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 41,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 1,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "head"
+ ],
+ "supported_items": "#minecraft:enchantable/head_armor",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/bane_of_arthropods.json b/src/main/resources/data/minecraft/enchantment/bane_of_arthropods.json
new file mode 100644
index 0000000..b42f720
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/bane_of_arthropods.json
@@ -0,0 +1,79 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.bane_of_arthropods"
+ },
+ "effects": {
+ "minecraft:damage": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 2.5,
+ "per_level_above_first": 2.5
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "#minecraft:sensitive_to_bane_of_arthropods"
+ }
+ }
+ }
+ ],
+ "minecraft:post_attack": [
+ {
+ "affected": "victim",
+ "effect": {
+ "type": "minecraft:apply_mob_effect",
+ "max_amplifier": 3.0,
+ "max_duration": {
+ "type": "minecraft:linear",
+ "base": 1.5,
+ "per_level_above_first": 0.5
+ },
+ "min_amplifier": 3.0,
+ "min_duration": 1.5,
+ "to_apply": "minecraft:slowness"
+ },
+ "enchanted": "attacker",
+ "requirements": {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "#minecraft:sensitive_to_bane_of_arthropods"
+ }
+ },
+ {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "is_direct": true
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/damage",
+ "max_cost": {
+ "base": 25,
+ "per_level_above_first": 8
+ },
+ "max_level": 5,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 8
+ },
+ "primary_items": "#minecraft:enchantable/sword",
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/weapon",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/binding_curse.json b/src/main/resources/data/minecraft/enchantment/binding_curse.json
new file mode 100644
index 0000000..69f255a
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/binding_curse.json
@@ -0,0 +1,23 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.binding_curse"
+ },
+ "effects": {
+ "minecraft:prevent_armor_change": {}
+ },
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 25,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "armor"
+ ],
+ "supported_items": "#minecraft:enchantable/equippable",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/blast_protection.json b/src/main/resources/data/minecraft/enchantment/blast_protection.json
new file mode 100644
index 0000000..aa6d78f
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/blast_protection.json
@@ -0,0 +1,62 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.blast_protection"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:linear",
+ "base": 0.15,
+ "per_level_above_first": 0.15
+ },
+ "attribute": "minecraft:generic.explosion_knockback_resistance",
+ "id": "minecraft:enchantment.blast_protection",
+ "operation": "add_value"
+ }
+ ],
+ "minecraft:damage_protection": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 2.0,
+ "per_level_above_first": 2.0
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_explosion"
+ },
+ {
+ "expected": false,
+ "id": "minecraft:bypasses_invulnerability"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/armor",
+ "max_cost": {
+ "base": 13,
+ "per_level_above_first": 8
+ },
+ "max_level": 4,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 8
+ },
+ "slots": [
+ "armor"
+ ],
+ "supported_items": "#minecraft:enchantable/armor",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/breach.json b/src/main/resources/data/minecraft/enchantment/breach.json
new file mode 100644
index 0000000..deab4e6
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/breach.json
@@ -0,0 +1,35 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.breach"
+ },
+ "effects": {
+ "minecraft:armor_effectiveness": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": -0.15,
+ "per_level_above_first": -0.15
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/damage",
+ "max_cost": {
+ "base": 65,
+ "per_level_above_first": 9
+ },
+ "max_level": 4,
+ "min_cost": {
+ "base": 15,
+ "per_level_above_first": 9
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/mace",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/channeling.json b/src/main/resources/data/minecraft/enchantment/channeling.json
new file mode 100644
index 0000000..fae5a6b
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/channeling.json
@@ -0,0 +1,113 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.channeling"
+ },
+ "effects": {
+ "minecraft:hit_block": [
+ {
+ "effect": {
+ "type": "minecraft:all_of",
+ "effects": [
+ {
+ "type": "minecraft:summon_entity",
+ "entity": "minecraft:lightning_bolt"
+ },
+ {
+ "type": "minecraft:play_sound",
+ "pitch": 1.0,
+ "sound": "minecraft:item.trident.thunder",
+ "volume": 5.0
+ }
+ ]
+ },
+ "requirements": {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "condition": "minecraft:weather_check",
+ "thundering": true
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "minecraft:trident"
+ }
+ },
+ {
+ "condition": "minecraft:location_check",
+ "predicate": {
+ "can_see_sky": true
+ }
+ },
+ {
+ "block": "minecraft:lightning_rod",
+ "condition": "minecraft:block_state_property"
+ }
+ ]
+ }
+ }
+ ],
+ "minecraft:post_attack": [
+ {
+ "affected": "victim",
+ "effect": {
+ "type": "minecraft:all_of",
+ "effects": [
+ {
+ "type": "minecraft:summon_entity",
+ "entity": "minecraft:lightning_bolt"
+ },
+ {
+ "type": "minecraft:play_sound",
+ "pitch": 1.0,
+ "sound": "minecraft:item.trident.thunder",
+ "volume": 5.0
+ }
+ ]
+ },
+ "enchanted": "attacker",
+ "requirements": {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "condition": "minecraft:weather_check",
+ "thundering": true
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "location": {
+ "can_see_sky": true
+ }
+ }
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "direct_attacker",
+ "predicate": {
+ "type": "minecraft:trident"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 25,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/trident",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/density.json b/src/main/resources/data/minecraft/enchantment/density.json
new file mode 100644
index 0000000..63f74ce
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/density.json
@@ -0,0 +1,35 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.density"
+ },
+ "effects": {
+ "minecraft:smash_damage_per_fallen_block": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 0.5,
+ "per_level_above_first": 0.5
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/damage",
+ "max_cost": {
+ "base": 25,
+ "per_level_above_first": 8
+ },
+ "max_level": 5,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 8
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/mace",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/depth_strider.json b/src/main/resources/data/minecraft/enchantment/depth_strider.json
new file mode 100644
index 0000000..0239770
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/depth_strider.json
@@ -0,0 +1,35 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.depth_strider"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:linear",
+ "base": 0.33333334,
+ "per_level_above_first": 0.33333334
+ },
+ "attribute": "minecraft:generic.water_movement_efficiency",
+ "id": "minecraft:enchantment.depth_strider",
+ "operation": "add_value"
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/boots",
+ "max_cost": {
+ "base": 25,
+ "per_level_above_first": 10
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 10,
+ "per_level_above_first": 10
+ },
+ "slots": [
+ "feet"
+ ],
+ "supported_items": "#minecraft:enchantable/foot_armor",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/efficiency.json b/src/main/resources/data/minecraft/enchantment/efficiency.json
new file mode 100644
index 0000000..28ed6e7
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/efficiency.json
@@ -0,0 +1,33 @@
+{
+ "anvil_cost": 1,
+ "description": {
+ "translate": "enchantment.minecraft.efficiency"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:levels_squared",
+ "added": 1.0
+ },
+ "attribute": "minecraft:player.mining_efficiency",
+ "id": "minecraft:enchantment.efficiency",
+ "operation": "add_value"
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 51,
+ "per_level_above_first": 10
+ },
+ "max_level": 5,
+ "min_cost": {
+ "base": 1,
+ "per_level_above_first": 10
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/mining",
+ "weight": 10
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/feather_falling.json b/src/main/resources/data/minecraft/enchantment/feather_falling.json
new file mode 100644
index 0000000..d69f743
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/feather_falling.json
@@ -0,0 +1,49 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.feather_falling"
+ },
+ "effects": {
+ "minecraft:damage_protection": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 3.0,
+ "per_level_above_first": 3.0
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_fall"
+ },
+ {
+ "expected": false,
+ "id": "minecraft:bypasses_invulnerability"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 11,
+ "per_level_above_first": 6
+ },
+ "max_level": 4,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 6
+ },
+ "slots": [
+ "armor"
+ ],
+ "supported_items": "#minecraft:enchantable/foot_armor",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/fire_aspect.json b/src/main/resources/data/minecraft/enchantment/fire_aspect.json
new file mode 100644
index 0000000..24f07e8
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/fire_aspect.json
@@ -0,0 +1,43 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.fire_aspect"
+ },
+ "effects": {
+ "minecraft:post_attack": [
+ {
+ "affected": "victim",
+ "effect": {
+ "type": "minecraft:ignite",
+ "duration": {
+ "type": "minecraft:linear",
+ "base": 4.0,
+ "per_level_above_first": 4.0
+ }
+ },
+ "enchanted": "attacker",
+ "requirements": {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "is_direct": true
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 60,
+ "per_level_above_first": 20
+ },
+ "max_level": 2,
+ "min_cost": {
+ "base": 10,
+ "per_level_above_first": 20
+ },
+ "primary_items": "#minecraft:enchantable/sword",
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/fire_aspect",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/fire_protection.json b/src/main/resources/data/minecraft/enchantment/fire_protection.json
new file mode 100644
index 0000000..4769e89
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/fire_protection.json
@@ -0,0 +1,67 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.fire_protection"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:linear",
+ "base": -0.15,
+ "per_level_above_first": -0.15
+ },
+ "attribute": "minecraft:generic.burning_time",
+ "id": "minecraft:enchantment.fire_protection",
+ "operation": "add_multiplied_base"
+ }
+ ],
+ "minecraft:damage_protection": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 2.0,
+ "per_level_above_first": 2.0
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_fire"
+ },
+ {
+ "expected": false,
+ "id": "minecraft:bypasses_invulnerability"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/armor",
+ "max_cost": {
+ "base": 18,
+ "per_level_above_first": 8
+ },
+ "max_level": 4,
+ "min_cost": {
+ "base": 10,
+ "per_level_above_first": 8
+ },
+ "slots": [
+ "armor"
+ ],
+ "supported_items": "#minecraft:enchantable/armor",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/flame.json b/src/main/resources/data/minecraft/enchantment/flame.json
new file mode 100644
index 0000000..7b9af5c
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/flame.json
@@ -0,0 +1,30 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.flame"
+ },
+ "effects": {
+ "minecraft:projectile_spawned": [
+ {
+ "effect": {
+ "type": "minecraft:ignite",
+ "duration": 100.0
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 20,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/bow",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/fortune.json b/src/main/resources/data/minecraft/enchantment/fortune.json
new file mode 100644
index 0000000..3d29275
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/fortune.json
@@ -0,0 +1,21 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.fortune"
+ },
+ "exclusive_set": "#minecraft:exclusive_set/mining",
+ "max_cost": {
+ "base": 65,
+ "per_level_above_first": 9
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 15,
+ "per_level_above_first": 9
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/mining_loot",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/frost_walker.json b/src/main/resources/data/minecraft/enchantment/frost_walker.json
new file mode 100644
index 0000000..d4313f5
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/frost_walker.json
@@ -0,0 +1,110 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.frost_walker"
+ },
+ "effects": {
+ "minecraft:damage_immunity": [
+ {
+ "effect": {},
+ "requirements": {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:burn_from_stepping"
+ },
+ {
+ "expected": false,
+ "id": "minecraft:bypasses_invulnerability"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "minecraft:location_changed": [
+ {
+ "effect": {
+ "type": "minecraft:replace_disk",
+ "block_state": {
+ "type": "minecraft:simple_state_provider",
+ "state": {
+ "Name": "minecraft:frosted_ice",
+ "Properties": {
+ "age": "0"
+ }
+ }
+ },
+ "height": 1.0,
+ "offset": [
+ 0,
+ -1,
+ 0
+ ],
+ "predicate": {
+ "type": "minecraft:all_of",
+ "predicates": [
+ {
+ "type": "minecraft:matching_block_tag",
+ "offset": [
+ 0,
+ 1,
+ 0
+ ],
+ "tag": "minecraft:air"
+ },
+ {
+ "type": "minecraft:matching_blocks",
+ "blocks": "minecraft:water"
+ },
+ {
+ "type": "minecraft:matching_fluids",
+ "fluids": "minecraft:water"
+ },
+ {
+ "type": "minecraft:unobstructed"
+ }
+ ]
+ },
+ "radius": {
+ "type": "minecraft:clamped",
+ "max": 16.0,
+ "min": 0.0,
+ "value": {
+ "type": "minecraft:linear",
+ "base": 3.0,
+ "per_level_above_first": 1.0
+ }
+ },
+ "trigger_game_event": "minecraft:block_place"
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "flags": {
+ "is_on_ground": true
+ }
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/boots",
+ "max_cost": {
+ "base": 25,
+ "per_level_above_first": 10
+ },
+ "max_level": 2,
+ "min_cost": {
+ "base": 10,
+ "per_level_above_first": 10
+ },
+ "slots": [
+ "feet"
+ ],
+ "supported_items": "#minecraft:enchantable/foot_armor",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/impaling.json b/src/main/resources/data/minecraft/enchantment/impaling.json
new file mode 100644
index 0000000..8c1bcf5
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/impaling.json
@@ -0,0 +1,42 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.impaling"
+ },
+ "effects": {
+ "minecraft:damage": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 2.5,
+ "per_level_above_first": 2.5
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "#minecraft:sensitive_to_impaling"
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/damage",
+ "max_cost": {
+ "base": 21,
+ "per_level_above_first": 8
+ },
+ "max_level": 5,
+ "min_cost": {
+ "base": 1,
+ "per_level_above_first": 8
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/trident",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/infinity.json b/src/main/resources/data/minecraft/enchantment/infinity.json
new file mode 100644
index 0000000..6bb53be
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/infinity.json
@@ -0,0 +1,37 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.infinity"
+ },
+ "effects": {
+ "minecraft:ammo_use": [
+ {
+ "effect": {
+ "type": "minecraft:set",
+ "value": 0.0
+ },
+ "requirements": {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "minecraft:arrow"
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/bow",
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 20,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/bow",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/knockback.json b/src/main/resources/data/minecraft/enchantment/knockback.json
new file mode 100644
index 0000000..be62e78
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/knockback.json
@@ -0,0 +1,34 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.knockback"
+ },
+ "effects": {
+ "minecraft:knockback": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 55,
+ "per_level_above_first": 20
+ },
+ "max_level": 2,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 20
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/sword",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/looting.json b/src/main/resources/data/minecraft/enchantment/looting.json
new file mode 100644
index 0000000..f90103b
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/looting.json
@@ -0,0 +1,42 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.looting"
+ },
+ "effects": {
+ "minecraft:equipment_drops": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 0.01,
+ "per_level_above_first": 0.01
+ }
+ },
+ "enchanted": "attacker",
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "attacker",
+ "predicate": {
+ "type": "minecraft:player"
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 65,
+ "per_level_above_first": 9
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 15,
+ "per_level_above_first": 9
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/sword",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/loyalty.json b/src/main/resources/data/minecraft/enchantment/loyalty.json
new file mode 100644
index 0000000..c0769ed
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/loyalty.json
@@ -0,0 +1,34 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.loyalty"
+ },
+ "effects": {
+ "minecraft:trident_return_acceleration": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 12,
+ "per_level_above_first": 7
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/trident",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/luck_of_the_sea.json b/src/main/resources/data/minecraft/enchantment/luck_of_the_sea.json
new file mode 100644
index 0000000..74b8e79
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/luck_of_the_sea.json
@@ -0,0 +1,34 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.luck_of_the_sea"
+ },
+ "effects": {
+ "minecraft:fishing_luck_bonus": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 65,
+ "per_level_above_first": 9
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 15,
+ "per_level_above_first": 9
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/fishing",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/lure.json b/src/main/resources/data/minecraft/enchantment/lure.json
new file mode 100644
index 0000000..1df8c10
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/lure.json
@@ -0,0 +1,34 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.lure"
+ },
+ "effects": {
+ "minecraft:fishing_time_reduction": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 5.0,
+ "per_level_above_first": 5.0
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 65,
+ "per_level_above_first": 9
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 15,
+ "per_level_above_first": 9
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/fishing",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/mending.json b/src/main/resources/data/minecraft/enchantment/mending.json
new file mode 100644
index 0000000..f762c8d
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/mending.json
@@ -0,0 +1,30 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.mending"
+ },
+ "effects": {
+ "minecraft:repair_with_xp": [
+ {
+ "effect": {
+ "type": "minecraft:multiply",
+ "factor": 2.0
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 75,
+ "per_level_above_first": 25
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 25,
+ "per_level_above_first": 25
+ },
+ "slots": [
+ "any"
+ ],
+ "supported_items": "#minecraft:enchantable/durability",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/multishot.json b/src/main/resources/data/minecraft/enchantment/multishot.json
new file mode 100644
index 0000000..b656f91
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/multishot.json
@@ -0,0 +1,47 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.multishot"
+ },
+ "effects": {
+ "minecraft:projectile_count": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 2.0,
+ "per_level_above_first": 2.0
+ }
+ }
+ }
+ ],
+ "minecraft:projectile_spread": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 10.0,
+ "per_level_above_first": 10.0
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/crossbow",
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 20,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/crossbow",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/piercing.json b/src/main/resources/data/minecraft/enchantment/piercing.json
new file mode 100644
index 0000000..29ebfa6
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/piercing.json
@@ -0,0 +1,35 @@
+{
+ "anvil_cost": 1,
+ "description": {
+ "translate": "enchantment.minecraft.piercing"
+ },
+ "effects": {
+ "minecraft:projectile_piercing": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/crossbow",
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 4,
+ "min_cost": {
+ "base": 1,
+ "per_level_above_first": 10
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/crossbow",
+ "weight": 10
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/power.json b/src/main/resources/data/minecraft/enchantment/power.json
new file mode 100644
index 0000000..9f86f0e
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/power.json
@@ -0,0 +1,41 @@
+{
+ "anvil_cost": 1,
+ "description": {
+ "translate": "enchantment.minecraft.power"
+ },
+ "effects": {
+ "minecraft:damage": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 0.5,
+ "per_level_above_first": 0.5
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "direct_attacker",
+ "predicate": {
+ "type": "#minecraft:arrows"
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 16,
+ "per_level_above_first": 10
+ },
+ "max_level": 5,
+ "min_cost": {
+ "base": 1,
+ "per_level_above_first": 10
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/bow",
+ "weight": 10
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/projectile_protection.json b/src/main/resources/data/minecraft/enchantment/projectile_protection.json
new file mode 100644
index 0000000..5243164
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/projectile_protection.json
@@ -0,0 +1,50 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.projectile_protection"
+ },
+ "effects": {
+ "minecraft:damage_protection": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 2.0,
+ "per_level_above_first": 2.0
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "tags": [
+ {
+ "expected": true,
+ "id": "minecraft:is_projectile"
+ },
+ {
+ "expected": false,
+ "id": "minecraft:bypasses_invulnerability"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/armor",
+ "max_cost": {
+ "base": 9,
+ "per_level_above_first": 6
+ },
+ "max_level": 4,
+ "min_cost": {
+ "base": 3,
+ "per_level_above_first": 6
+ },
+ "slots": [
+ "armor"
+ ],
+ "supported_items": "#minecraft:enchantable/armor",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/protection.json b/src/main/resources/data/minecraft/enchantment/protection.json
new file mode 100644
index 0000000..97b24aa
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/protection.json
@@ -0,0 +1,46 @@
+{
+ "anvil_cost": 1,
+ "description": {
+ "translate": "enchantment.minecraft.protection"
+ },
+ "effects": {
+ "minecraft:damage_protection": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:damage_source_properties",
+ "predicate": {
+ "tags": [
+ {
+ "expected": false,
+ "id": "minecraft:bypasses_invulnerability"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/armor",
+ "max_cost": {
+ "base": 12,
+ "per_level_above_first": 11
+ },
+ "max_level": 4,
+ "min_cost": {
+ "base": 1,
+ "per_level_above_first": 11
+ },
+ "slots": [
+ "armor"
+ ],
+ "supported_items": "#minecraft:enchantable/armor",
+ "weight": 10
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/punch.json b/src/main/resources/data/minecraft/enchantment/punch.json
new file mode 100644
index 0000000..f2db6d3
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/punch.json
@@ -0,0 +1,41 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.punch"
+ },
+ "effects": {
+ "minecraft:knockback": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "direct_attacker",
+ "predicate": {
+ "type": "#minecraft:arrows"
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 37,
+ "per_level_above_first": 20
+ },
+ "max_level": 2,
+ "min_cost": {
+ "base": 12,
+ "per_level_above_first": 20
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/bow",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/quick_charge.json b/src/main/resources/data/minecraft/enchantment/quick_charge.json
new file mode 100644
index 0000000..5b320d7
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/quick_charge.json
@@ -0,0 +1,45 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.quick_charge"
+ },
+ "effects": {
+ "minecraft:crossbow_charge_time": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": -0.25,
+ "per_level_above_first": -0.25
+ }
+ },
+ "minecraft:crossbow_charging_sounds": [
+ {
+ "end": "minecraft:item.crossbow.loading_end",
+ "start": "minecraft:item.crossbow.quick_charge_1"
+ },
+ {
+ "end": "minecraft:item.crossbow.loading_end",
+ "start": "minecraft:item.crossbow.quick_charge_2"
+ },
+ {
+ "end": "minecraft:item.crossbow.loading_end",
+ "start": "minecraft:item.crossbow.quick_charge_3"
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 12,
+ "per_level_above_first": 20
+ },
+ "slots": [
+ "mainhand",
+ "offhand"
+ ],
+ "supported_items": "#minecraft:enchantable/crossbow",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/respiration.json b/src/main/resources/data/minecraft/enchantment/respiration.json
new file mode 100644
index 0000000..6447425
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/respiration.json
@@ -0,0 +1,34 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.respiration"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ },
+ "attribute": "minecraft:generic.oxygen_bonus",
+ "id": "minecraft:enchantment.respiration",
+ "operation": "add_value"
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 40,
+ "per_level_above_first": 10
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 10,
+ "per_level_above_first": 10
+ },
+ "slots": [
+ "head"
+ ],
+ "supported_items": "#minecraft:enchantable/head_armor",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/riptide.json b/src/main/resources/data/minecraft/enchantment/riptide.json
new file mode 100644
index 0000000..7049ff7
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/riptide.json
@@ -0,0 +1,36 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.riptide"
+ },
+ "effects": {
+ "minecraft:trident_sound": [
+ "minecraft:item.trident.riptide_1",
+ "minecraft:item.trident.riptide_2",
+ "minecraft:item.trident.riptide_3"
+ ],
+ "minecraft:trident_spin_attack_strength": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.5,
+ "per_level_above_first": 0.75
+ }
+ }
+ },
+ "exclusive_set": "#minecraft:exclusive_set/riptide",
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 17,
+ "per_level_above_first": 7
+ },
+ "slots": [
+ "hand"
+ ],
+ "supported_items": "#minecraft:enchantable/trident",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/sharpness.json b/src/main/resources/data/minecraft/enchantment/sharpness.json
new file mode 100644
index 0000000..db64004
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/sharpness.json
@@ -0,0 +1,36 @@
+{
+ "anvil_cost": 1,
+ "description": {
+ "translate": "enchantment.minecraft.sharpness"
+ },
+ "effects": {
+ "minecraft:damage": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 0.5
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/damage",
+ "max_cost": {
+ "base": 21,
+ "per_level_above_first": 11
+ },
+ "max_level": 5,
+ "min_cost": {
+ "base": 1,
+ "per_level_above_first": 11
+ },
+ "primary_items": "#minecraft:enchantable/sword",
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/sharp_weapon",
+ "weight": 10
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/silk_touch.json b/src/main/resources/data/minecraft/enchantment/silk_touch.json
new file mode 100644
index 0000000..1e00ee8
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/silk_touch.json
@@ -0,0 +1,31 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.silk_touch"
+ },
+ "effects": {
+ "minecraft:block_experience": [
+ {
+ "effect": {
+ "type": "minecraft:set",
+ "value": 0.0
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/mining",
+ "max_cost": {
+ "base": 65,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 15,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/mining_loot",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/smite.json b/src/main/resources/data/minecraft/enchantment/smite.json
new file mode 100644
index 0000000..4586d33
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/smite.json
@@ -0,0 +1,43 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.smite"
+ },
+ "effects": {
+ "minecraft:damage": [
+ {
+ "effect": {
+ "type": "minecraft:add",
+ "value": {
+ "type": "minecraft:linear",
+ "base": 2.5,
+ "per_level_above_first": 2.5
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "type": "#minecraft:sensitive_to_smite"
+ }
+ }
+ }
+ ]
+ },
+ "exclusive_set": "#minecraft:exclusive_set/damage",
+ "max_cost": {
+ "base": 25,
+ "per_level_above_first": 8
+ },
+ "max_level": 5,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 8
+ },
+ "primary_items": "#minecraft:enchantable/sword",
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/weapon",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/soul_speed.json b/src/main/resources/data/minecraft/enchantment/soul_speed.json
new file mode 100644
index 0000000..aac36c4
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/soul_speed.json
@@ -0,0 +1,262 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.soul_speed"
+ },
+ "effects": {
+ "minecraft:location_changed": [
+ {
+ "effect": {
+ "type": "minecraft:attribute",
+ "amount": {
+ "type": "minecraft:linear",
+ "base": 0.0405,
+ "per_level_above_first": 0.0105
+ },
+ "attribute": "minecraft:generic.movement_speed",
+ "id": "minecraft:enchantment.soul_speed",
+ "operation": "add_value"
+ },
+ "requirements": {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "vehicle": {}
+ }
+ }
+ },
+ {
+ "condition": "minecraft:any_of",
+ "terms": [
+ {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "active": true,
+ "condition": "minecraft:enchantment_active_check"
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "flags": {
+ "is_flying": false
+ }
+ }
+ },
+ {
+ "condition": "minecraft:any_of",
+ "terms": [
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "movement_affected_by": {
+ "block": {
+ "blocks": "#minecraft:soul_speed_blocks"
+ }
+ }
+ }
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "flags": {
+ "is_on_ground": false
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "active": false,
+ "condition": "minecraft:enchantment_active_check"
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "flags": {
+ "is_flying": false
+ },
+ "movement_affected_by": {
+ "block": {
+ "blocks": "#minecraft:soul_speed_blocks"
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "effect": {
+ "type": "minecraft:attribute",
+ "amount": 1.0,
+ "attribute": "minecraft:generic.movement_efficiency",
+ "id": "minecraft:enchantment.soul_speed",
+ "operation": "add_value"
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "movement_affected_by": {
+ "block": {
+ "blocks": "#minecraft:soul_speed_blocks"
+ }
+ }
+ }
+ }
+ },
+ {
+ "effect": {
+ "type": "minecraft:damage_item",
+ "amount": 1.0
+ },
+ "requirements": {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "chance": {
+ "type": "minecraft:enchantment_level",
+ "amount": 0.04
+ },
+ "condition": "minecraft:random_chance"
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "flags": {
+ "is_on_ground": true
+ },
+ "movement_affected_by": {
+ "block": {
+ "blocks": "#minecraft:soul_speed_blocks"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ ],
+ "minecraft:tick": [
+ {
+ "effect": {
+ "type": "minecraft:spawn_particles",
+ "horizontal_position": {
+ "type": "in_bounding_box"
+ },
+ "horizontal_velocity": {
+ "movement_scale": -0.2
+ },
+ "particle": {
+ "type": "minecraft:soul"
+ },
+ "speed": 1.0,
+ "vertical_position": {
+ "type": "entity_position",
+ "offset": 0.1
+ },
+ "vertical_velocity": {
+ "base": 0.1
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "flags": {
+ "is_flying": false,
+ "is_on_ground": true
+ },
+ "movement": {
+ "horizontal_speed": {
+ "min": 9.999999747378752E-6
+ }
+ },
+ "movement_affected_by": {
+ "block": {
+ "blocks": "#minecraft:soul_speed_blocks"
+ }
+ },
+ "periodic_tick": 5
+ }
+ }
+ },
+ {
+ "effect": {
+ "type": "minecraft:play_sound",
+ "pitch": {
+ "type": "minecraft:uniform",
+ "max_exclusive": 1.0,
+ "min_inclusive": 0.6
+ },
+ "sound": "minecraft:particle.soul_escape",
+ "volume": 0.6
+ },
+ "requirements": {
+ "condition": "minecraft:all_of",
+ "terms": [
+ {
+ "chance": 0.35,
+ "condition": "minecraft:random_chance"
+ },
+ {
+ "condition": "minecraft:entity_properties",
+ "entity": "this",
+ "predicate": {
+ "flags": {
+ "is_flying": false,
+ "is_on_ground": true
+ },
+ "movement": {
+ "horizontal_speed": {
+ "min": 9.999999747378752E-6
+ }
+ },
+ "movement_affected_by": {
+ "block": {
+ "blocks": "#minecraft:soul_speed_blocks"
+ }
+ },
+ "periodic_tick": 5
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 25,
+ "per_level_above_first": 10
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 10,
+ "per_level_above_first": 10
+ },
+ "slots": [
+ "feet"
+ ],
+ "supported_items": "#minecraft:enchantable/foot_armor",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/sweeping_edge.json b/src/main/resources/data/minecraft/enchantment/sweeping_edge.json
new file mode 100644
index 0000000..708011c
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/sweeping_edge.json
@@ -0,0 +1,42 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.sweeping_edge"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:fraction",
+ "denominator": {
+ "type": "minecraft:linear",
+ "base": 2.0,
+ "per_level_above_first": 1.0
+ },
+ "numerator": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ },
+ "attribute": "minecraft:player.sweeping_damage_ratio",
+ "id": "minecraft:enchantment.sweeping_edge",
+ "operation": "add_value"
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 20,
+ "per_level_above_first": 9
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 9
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/sword",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/swift_sneak.json b/src/main/resources/data/minecraft/enchantment/swift_sneak.json
new file mode 100644
index 0000000..0809bb5
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/swift_sneak.json
@@ -0,0 +1,34 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.swift_sneak"
+ },
+ "effects": {
+ "minecraft:attributes": [
+ {
+ "amount": {
+ "type": "minecraft:linear",
+ "base": 0.15,
+ "per_level_above_first": 0.15
+ },
+ "attribute": "minecraft:player.sneaking_speed",
+ "id": "minecraft:enchantment.swift_sneak",
+ "operation": "add_value"
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 75,
+ "per_level_above_first": 25
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 25,
+ "per_level_above_first": 25
+ },
+ "slots": [
+ "legs"
+ ],
+ "supported_items": "#minecraft:enchantable/leg_armor",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/thorns.json b/src/main/resources/data/minecraft/enchantment/thorns.json
new file mode 100644
index 0000000..0f0d4c3
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/thorns.json
@@ -0,0 +1,55 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.thorns"
+ },
+ "effects": {
+ "minecraft:post_attack": [
+ {
+ "affected": "attacker",
+ "effect": {
+ "type": "minecraft:all_of",
+ "effects": [
+ {
+ "type": "minecraft:damage_entity",
+ "damage_type": "minecraft:thorns",
+ "max_damage": 5.0,
+ "min_damage": 1.0
+ },
+ {
+ "type": "minecraft:damage_item",
+ "amount": 2.0
+ }
+ ]
+ },
+ "enchanted": "victim",
+ "requirements": {
+ "chance": {
+ "type": "minecraft:enchantment_level",
+ "amount": {
+ "type": "minecraft:linear",
+ "base": 0.15,
+ "per_level_above_first": 0.15
+ }
+ },
+ "condition": "minecraft:random_chance"
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 60,
+ "per_level_above_first": 20
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 10,
+ "per_level_above_first": 20
+ },
+ "primary_items": "#minecraft:enchantable/chest_armor",
+ "slots": [
+ "any"
+ ],
+ "supported_items": "#minecraft:enchantable/armor",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/unbreaking.json b/src/main/resources/data/minecraft/enchantment/unbreaking.json
new file mode 100644
index 0000000..6028e42
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/unbreaking.json
@@ -0,0 +1,75 @@
+{
+ "anvil_cost": 2,
+ "description": {
+ "translate": "enchantment.minecraft.unbreaking"
+ },
+ "effects": {
+ "minecraft:item_damage": [
+ {
+ "effect": {
+ "type": "minecraft:remove_binomial",
+ "chance": {
+ "type": "minecraft:fraction",
+ "denominator": {
+ "type": "minecraft:linear",
+ "base": 10.0,
+ "per_level_above_first": 5.0
+ },
+ "numerator": {
+ "type": "minecraft:linear",
+ "base": 2.0,
+ "per_level_above_first": 2.0
+ }
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "#minecraft:enchantable/armor"
+ }
+ }
+ },
+ {
+ "effect": {
+ "type": "minecraft:remove_binomial",
+ "chance": {
+ "type": "minecraft:fraction",
+ "denominator": {
+ "type": "minecraft:linear",
+ "base": 2.0,
+ "per_level_above_first": 1.0
+ },
+ "numerator": {
+ "type": "minecraft:linear",
+ "base": 1.0,
+ "per_level_above_first": 1.0
+ }
+ }
+ },
+ "requirements": {
+ "condition": "minecraft:inverted",
+ "term": {
+ "condition": "minecraft:match_tool",
+ "predicate": {
+ "items": "#minecraft:enchantable/armor"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 55,
+ "per_level_above_first": 8
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 5,
+ "per_level_above_first": 8
+ },
+ "slots": [
+ "any"
+ ],
+ "supported_items": "#minecraft:enchantable/durability",
+ "weight": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/vanishing_curse.json b/src/main/resources/data/minecraft/enchantment/vanishing_curse.json
new file mode 100644
index 0000000..c82f119
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/vanishing_curse.json
@@ -0,0 +1,23 @@
+{
+ "anvil_cost": 8,
+ "description": {
+ "translate": "enchantment.minecraft.vanishing_curse"
+ },
+ "effects": {
+ "minecraft:prevent_equipment_drop": {}
+ },
+ "max_cost": {
+ "base": 50,
+ "per_level_above_first": 0
+ },
+ "max_level": 1,
+ "min_cost": {
+ "base": 25,
+ "per_level_above_first": 0
+ },
+ "slots": [
+ "any"
+ ],
+ "supported_items": "#minecraft:enchantable/vanishing",
+ "weight": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/enchantment/wind_burst.json b/src/main/resources/data/minecraft/enchantment/wind_burst.json
new file mode 100644
index 0000000..cdc3318
--- /dev/null
+++ b/src/main/resources/data/minecraft/enchantment/wind_burst.json
@@ -0,0 +1,68 @@
+{
+ "anvil_cost": 4,
+ "description": {
+ "translate": "enchantment.minecraft.wind_burst"
+ },
+ "effects": {
+ "minecraft:post_attack": [
+ {
+ "affected": "attacker",
+ "effect": {
+ "type": "minecraft:explode",
+ "block_interaction": "trigger",
+ "immune_blocks": "#minecraft:blocks_wind_charge_explosions",
+ "knockback_multiplier": {
+ "type": "minecraft:lookup",
+ "fallback": {
+ "type": "minecraft:linear",
+ "base": 1.5,
+ "per_level_above_first": 0.35
+ },
+ "values": [
+ 1.2,
+ 1.75,
+ 2.2
+ ]
+ },
+ "large_particle": {
+ "type": "minecraft:gust_emitter_large"
+ },
+ "radius": 3.5,
+ "small_particle": {
+ "type": "minecraft:gust_emitter_small"
+ },
+ "sound": "minecraft:entity.wind_charge.wind_burst"
+ },
+ "enchanted": "attacker",
+ "requirements": {
+ "condition": "minecraft:entity_properties",
+ "entity": "direct_attacker",
+ "predicate": {
+ "flags": {
+ "is_flying": false
+ },
+ "movement": {
+ "fall_distance": {
+ "min": 1.5
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "max_cost": {
+ "base": 65,
+ "per_level_above_first": 9
+ },
+ "max_level": 3,
+ "min_cost": {
+ "base": 15,
+ "per_level_above_first": 9
+ },
+ "slots": [
+ "mainhand"
+ ],
+ "supported_items": "#minecraft:enchantable/mace",
+ "weight": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/11.json b/src/main/resources/data/minecraft/jukebox_song/11.json
new file mode 100644
index 0000000..44b6598
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/11.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 11,
+ "description": {
+ "translate": "jukebox_song.minecraft.11"
+ },
+ "length_in_seconds": 71.0,
+ "sound_event": "minecraft:music_disc.11"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/13.json b/src/main/resources/data/minecraft/jukebox_song/13.json
new file mode 100644
index 0000000..86dc2f4
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/13.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 1,
+ "description": {
+ "translate": "jukebox_song.minecraft.13"
+ },
+ "length_in_seconds": 178.0,
+ "sound_event": "minecraft:music_disc.13"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/5.json b/src/main/resources/data/minecraft/jukebox_song/5.json
new file mode 100644
index 0000000..f441bbe
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/5.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 15,
+ "description": {
+ "translate": "jukebox_song.minecraft.5"
+ },
+ "length_in_seconds": 178.0,
+ "sound_event": "minecraft:music_disc.5"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/blocks.json b/src/main/resources/data/minecraft/jukebox_song/blocks.json
new file mode 100644
index 0000000..94d000b
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/blocks.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 3,
+ "description": {
+ "translate": "jukebox_song.minecraft.blocks"
+ },
+ "length_in_seconds": 345.0,
+ "sound_event": "minecraft:music_disc.blocks"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/cat.json b/src/main/resources/data/minecraft/jukebox_song/cat.json
new file mode 100644
index 0000000..598c165
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/cat.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 2,
+ "description": {
+ "translate": "jukebox_song.minecraft.cat"
+ },
+ "length_in_seconds": 185.0,
+ "sound_event": "minecraft:music_disc.cat"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/chirp.json b/src/main/resources/data/minecraft/jukebox_song/chirp.json
new file mode 100644
index 0000000..d722880
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/chirp.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 4,
+ "description": {
+ "translate": "jukebox_song.minecraft.chirp"
+ },
+ "length_in_seconds": 185.0,
+ "sound_event": "minecraft:music_disc.chirp"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/creator.json b/src/main/resources/data/minecraft/jukebox_song/creator.json
new file mode 100644
index 0000000..3b63f55
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/creator.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 12,
+ "description": {
+ "translate": "jukebox_song.minecraft.creator"
+ },
+ "length_in_seconds": 176.0,
+ "sound_event": "minecraft:music_disc.creator"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/creator_music_box.json b/src/main/resources/data/minecraft/jukebox_song/creator_music_box.json
new file mode 100644
index 0000000..6184d36
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/creator_music_box.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 11,
+ "description": {
+ "translate": "jukebox_song.minecraft.creator_music_box"
+ },
+ "length_in_seconds": 73.0,
+ "sound_event": "minecraft:music_disc.creator_music_box"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/far.json b/src/main/resources/data/minecraft/jukebox_song/far.json
new file mode 100644
index 0000000..f57cf8d
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/far.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 5,
+ "description": {
+ "translate": "jukebox_song.minecraft.far"
+ },
+ "length_in_seconds": 174.0,
+ "sound_event": "minecraft:music_disc.far"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/mall.json b/src/main/resources/data/minecraft/jukebox_song/mall.json
new file mode 100644
index 0000000..a5a8ddb
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/mall.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 6,
+ "description": {
+ "translate": "jukebox_song.minecraft.mall"
+ },
+ "length_in_seconds": 197.0,
+ "sound_event": "minecraft:music_disc.mall"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/mellohi.json b/src/main/resources/data/minecraft/jukebox_song/mellohi.json
new file mode 100644
index 0000000..cdea238
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/mellohi.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 7,
+ "description": {
+ "translate": "jukebox_song.minecraft.mellohi"
+ },
+ "length_in_seconds": 96.0,
+ "sound_event": "minecraft:music_disc.mellohi"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/otherside.json b/src/main/resources/data/minecraft/jukebox_song/otherside.json
new file mode 100644
index 0000000..7856239
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/otherside.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 14,
+ "description": {
+ "translate": "jukebox_song.minecraft.otherside"
+ },
+ "length_in_seconds": 195.0,
+ "sound_event": "minecraft:music_disc.otherside"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/pigstep.json b/src/main/resources/data/minecraft/jukebox_song/pigstep.json
new file mode 100644
index 0000000..3d4d74a
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/pigstep.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 13,
+ "description": {
+ "translate": "jukebox_song.minecraft.pigstep"
+ },
+ "length_in_seconds": 149.0,
+ "sound_event": "minecraft:music_disc.pigstep"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/precipice.json b/src/main/resources/data/minecraft/jukebox_song/precipice.json
new file mode 100644
index 0000000..2cb2124
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/precipice.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 13,
+ "description": {
+ "translate": "jukebox_song.minecraft.precipice"
+ },
+ "length_in_seconds": 299.0,
+ "sound_event": "minecraft:music_disc.precipice"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/relic.json b/src/main/resources/data/minecraft/jukebox_song/relic.json
new file mode 100644
index 0000000..077ca97
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/relic.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 14,
+ "description": {
+ "translate": "jukebox_song.minecraft.relic"
+ },
+ "length_in_seconds": 218.0,
+ "sound_event": "minecraft:music_disc.relic"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/stal.json b/src/main/resources/data/minecraft/jukebox_song/stal.json
new file mode 100644
index 0000000..c069d61
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/stal.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 8,
+ "description": {
+ "translate": "jukebox_song.minecraft.stal"
+ },
+ "length_in_seconds": 150.0,
+ "sound_event": "minecraft:music_disc.stal"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/strad.json b/src/main/resources/data/minecraft/jukebox_song/strad.json
new file mode 100644
index 0000000..918a7dc
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/strad.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 9,
+ "description": {
+ "translate": "jukebox_song.minecraft.strad"
+ },
+ "length_in_seconds": 188.0,
+ "sound_event": "minecraft:music_disc.strad"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/wait.json b/src/main/resources/data/minecraft/jukebox_song/wait.json
new file mode 100644
index 0000000..c0cd84b
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/wait.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 12,
+ "description": {
+ "translate": "jukebox_song.minecraft.wait"
+ },
+ "length_in_seconds": 238.0,
+ "sound_event": "minecraft:music_disc.wait"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/jukebox_song/ward.json b/src/main/resources/data/minecraft/jukebox_song/ward.json
new file mode 100644
index 0000000..7f08af1
--- /dev/null
+++ b/src/main/resources/data/minecraft/jukebox_song/ward.json
@@ -0,0 +1,8 @@
+{
+ "comparator_output": 10,
+ "description": {
+ "translate": "jukebox_song.minecraft.ward"
+ },
+ "length_in_seconds": 251.0,
+ "sound_event": "minecraft:music_disc.ward"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/alban.json b/src/main/resources/data/minecraft/painting_variant/alban.json
new file mode 100644
index 0000000..255379b
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/alban.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:alban",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/aztec.json b/src/main/resources/data/minecraft/painting_variant/aztec.json
new file mode 100644
index 0000000..4455e18
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/aztec.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:aztec",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/aztec2.json b/src/main/resources/data/minecraft/painting_variant/aztec2.json
new file mode 100644
index 0000000..1d92296
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/aztec2.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:aztec2",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/backyard.json b/src/main/resources/data/minecraft/painting_variant/backyard.json
new file mode 100644
index 0000000..6af19da
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/backyard.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:backyard",
+ "height": 4,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/baroque.json b/src/main/resources/data/minecraft/painting_variant/baroque.json
new file mode 100644
index 0000000..2506d16
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/baroque.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:baroque",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/bomb.json b/src/main/resources/data/minecraft/painting_variant/bomb.json
new file mode 100644
index 0000000..e9e70fb
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/bomb.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:bomb",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/bouquet.json b/src/main/resources/data/minecraft/painting_variant/bouquet.json
new file mode 100644
index 0000000..0ae5580
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/bouquet.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:bouquet",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/burning_skull.json b/src/main/resources/data/minecraft/painting_variant/burning_skull.json
new file mode 100644
index 0000000..8702529
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/burning_skull.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:burning_skull",
+ "height": 4,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/bust.json b/src/main/resources/data/minecraft/painting_variant/bust.json
new file mode 100644
index 0000000..7e5751f
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/bust.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:bust",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/cavebird.json b/src/main/resources/data/minecraft/painting_variant/cavebird.json
new file mode 100644
index 0000000..7de7284
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/cavebird.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:cavebird",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/changing.json b/src/main/resources/data/minecraft/painting_variant/changing.json
new file mode 100644
index 0000000..4c84b16
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/changing.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:changing",
+ "height": 2,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/cotan.json b/src/main/resources/data/minecraft/painting_variant/cotan.json
new file mode 100644
index 0000000..eb2bfc4
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/cotan.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:cotan",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/courbet.json b/src/main/resources/data/minecraft/painting_variant/courbet.json
new file mode 100644
index 0000000..30b56b9
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/courbet.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:courbet",
+ "height": 1,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/creebet.json b/src/main/resources/data/minecraft/painting_variant/creebet.json
new file mode 100644
index 0000000..2fa2c68
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/creebet.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:creebet",
+ "height": 1,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/donkey_kong.json b/src/main/resources/data/minecraft/painting_variant/donkey_kong.json
new file mode 100644
index 0000000..df7e438
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/donkey_kong.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:donkey_kong",
+ "height": 3,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/earth.json b/src/main/resources/data/minecraft/painting_variant/earth.json
new file mode 100644
index 0000000..457074b
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/earth.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:earth",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/endboss.json b/src/main/resources/data/minecraft/painting_variant/endboss.json
new file mode 100644
index 0000000..bae094f
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/endboss.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:endboss",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/fern.json b/src/main/resources/data/minecraft/painting_variant/fern.json
new file mode 100644
index 0000000..f268700
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/fern.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:fern",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/fighters.json b/src/main/resources/data/minecraft/painting_variant/fighters.json
new file mode 100644
index 0000000..2815f0b
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/fighters.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:fighters",
+ "height": 2,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/finding.json b/src/main/resources/data/minecraft/painting_variant/finding.json
new file mode 100644
index 0000000..ece67f7
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/finding.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:finding",
+ "height": 2,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/fire.json b/src/main/resources/data/minecraft/painting_variant/fire.json
new file mode 100644
index 0000000..470e511
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/fire.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:fire",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/graham.json b/src/main/resources/data/minecraft/painting_variant/graham.json
new file mode 100644
index 0000000..fcee8cc
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/graham.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:graham",
+ "height": 2,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/humble.json b/src/main/resources/data/minecraft/painting_variant/humble.json
new file mode 100644
index 0000000..85e4247
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/humble.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:humble",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/kebab.json b/src/main/resources/data/minecraft/painting_variant/kebab.json
new file mode 100644
index 0000000..3c11f25
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/kebab.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:kebab",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/lowmist.json b/src/main/resources/data/minecraft/painting_variant/lowmist.json
new file mode 100644
index 0000000..cbff4a5
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/lowmist.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:lowmist",
+ "height": 2,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/match.json b/src/main/resources/data/minecraft/painting_variant/match.json
new file mode 100644
index 0000000..f0307c0
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/match.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:match",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/meditative.json b/src/main/resources/data/minecraft/painting_variant/meditative.json
new file mode 100644
index 0000000..8310bca
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/meditative.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:meditative",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/orb.json b/src/main/resources/data/minecraft/painting_variant/orb.json
new file mode 100644
index 0000000..d5fd196
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/orb.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:orb",
+ "height": 4,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/owlemons.json b/src/main/resources/data/minecraft/painting_variant/owlemons.json
new file mode 100644
index 0000000..4184052
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/owlemons.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:owlemons",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/passage.json b/src/main/resources/data/minecraft/painting_variant/passage.json
new file mode 100644
index 0000000..d7b1653
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/passage.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:passage",
+ "height": 2,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/pigscene.json b/src/main/resources/data/minecraft/painting_variant/pigscene.json
new file mode 100644
index 0000000..0451235
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/pigscene.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:pigscene",
+ "height": 4,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/plant.json b/src/main/resources/data/minecraft/painting_variant/plant.json
new file mode 100644
index 0000000..306feb1
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/plant.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:plant",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/pointer.json b/src/main/resources/data/minecraft/painting_variant/pointer.json
new file mode 100644
index 0000000..bedc843
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/pointer.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:pointer",
+ "height": 4,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/pond.json b/src/main/resources/data/minecraft/painting_variant/pond.json
new file mode 100644
index 0000000..1a39b4e
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/pond.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:pond",
+ "height": 4,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/pool.json b/src/main/resources/data/minecraft/painting_variant/pool.json
new file mode 100644
index 0000000..b689482
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/pool.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:pool",
+ "height": 1,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/prairie_ride.json b/src/main/resources/data/minecraft/painting_variant/prairie_ride.json
new file mode 100644
index 0000000..aefcc13
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/prairie_ride.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:prairie_ride",
+ "height": 2,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/sea.json b/src/main/resources/data/minecraft/painting_variant/sea.json
new file mode 100644
index 0000000..925c428
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/sea.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:sea",
+ "height": 1,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/skeleton.json b/src/main/resources/data/minecraft/painting_variant/skeleton.json
new file mode 100644
index 0000000..d2ae4d6
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/skeleton.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:skeleton",
+ "height": 3,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/skull_and_roses.json b/src/main/resources/data/minecraft/painting_variant/skull_and_roses.json
new file mode 100644
index 0000000..7ee8cbf
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/skull_and_roses.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:skull_and_roses",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/stage.json b/src/main/resources/data/minecraft/painting_variant/stage.json
new file mode 100644
index 0000000..7998cd4
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/stage.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:stage",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/sunflowers.json b/src/main/resources/data/minecraft/painting_variant/sunflowers.json
new file mode 100644
index 0000000..2a29031
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/sunflowers.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:sunflowers",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/sunset.json b/src/main/resources/data/minecraft/painting_variant/sunset.json
new file mode 100644
index 0000000..3a9350d
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/sunset.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:sunset",
+ "height": 1,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/tides.json b/src/main/resources/data/minecraft/painting_variant/tides.json
new file mode 100644
index 0000000..488d37b
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/tides.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:tides",
+ "height": 3,
+ "width": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/unpacked.json b/src/main/resources/data/minecraft/painting_variant/unpacked.json
new file mode 100644
index 0000000..57c2b4a
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/unpacked.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:unpacked",
+ "height": 4,
+ "width": 4
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/void.json b/src/main/resources/data/minecraft/painting_variant/void.json
new file mode 100644
index 0000000..2bb9eb5
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/void.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:void",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/wanderer.json b/src/main/resources/data/minecraft/painting_variant/wanderer.json
new file mode 100644
index 0000000..2125577
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/wanderer.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:wanderer",
+ "height": 2,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/wasteland.json b/src/main/resources/data/minecraft/painting_variant/wasteland.json
new file mode 100644
index 0000000..d873432
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/wasteland.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:wasteland",
+ "height": 1,
+ "width": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/water.json b/src/main/resources/data/minecraft/painting_variant/water.json
new file mode 100644
index 0000000..f1fc49d
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/water.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:water",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/wind.json b/src/main/resources/data/minecraft/painting_variant/wind.json
new file mode 100644
index 0000000..b5c2c1d
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/wind.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:wind",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/painting_variant/wither.json b/src/main/resources/data/minecraft/painting_variant/wither.json
new file mode 100644
index 0000000..482ab3a
--- /dev/null
+++ b/src/main/resources/data/minecraft/painting_variant/wither.json
@@ -0,0 +1,5 @@
+{
+ "asset_id": "minecraft:wither",
+ "height": 2,
+ "width": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/trim_pattern/bolt.json b/src/main/resources/data/minecraft/trim_pattern/bolt.json
new file mode 100644
index 0000000..27c0d9b
--- /dev/null
+++ b/src/main/resources/data/minecraft/trim_pattern/bolt.json
@@ -0,0 +1,8 @@
+{
+ "asset_id": "minecraft:bolt",
+ "decal": false,
+ "description": {
+ "translate": "trim_pattern.minecraft.bolt"
+ },
+ "template_item": "minecraft:bolt_armor_trim_smithing_template"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/trim_pattern/flow.json b/src/main/resources/data/minecraft/trim_pattern/flow.json
new file mode 100644
index 0000000..2d94de8
--- /dev/null
+++ b/src/main/resources/data/minecraft/trim_pattern/flow.json
@@ -0,0 +1,8 @@
+{
+ "asset_id": "minecraft:flow",
+ "decal": false,
+ "description": {
+ "translate": "trim_pattern.minecraft.flow"
+ },
+ "template_item": "minecraft:flow_armor_trim_smithing_template"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/worldgen/biome/mangrove_swamp.json b/src/main/resources/data/minecraft/worldgen/biome/mangrove_swamp.json
index e894837..bc4aa91 100644
--- a/src/main/resources/data/minecraft/worldgen/biome/mangrove_swamp.json
+++ b/src/main/resources/data/minecraft/worldgen/biome/mangrove_swamp.json
@@ -135,7 +135,7 @@
"type": "minecraft:skeleton",
"maxCount": 4,
"minCount": 4,
- "weight": 100
+ "weight": 70
},
{
"type": "minecraft:creeper",
@@ -166,6 +166,12 @@
"maxCount": 1,
"minCount": 1,
"weight": 1
+ },
+ {
+ "type": "minecraft:bogged",
+ "maxCount": 4,
+ "minCount": 4,
+ "weight": 30
}
],
"underground_water_creature": [
diff --git a/src/main/resources/data/minecraft/worldgen/biome/swamp.json b/src/main/resources/data/minecraft/worldgen/biome/swamp.json
index 498fb47..1f67a8f 100644
--- a/src/main/resources/data/minecraft/worldgen/biome/swamp.json
+++ b/src/main/resources/data/minecraft/worldgen/biome/swamp.json
@@ -165,7 +165,7 @@
"type": "minecraft:skeleton",
"maxCount": 4,
"minCount": 4,
- "weight": 100
+ "weight": 70
},
{
"type": "minecraft:creeper",
@@ -196,6 +196,12 @@
"maxCount": 1,
"minCount": 1,
"weight": 1
+ },
+ {
+ "type": "minecraft:bogged",
+ "maxCount": 4,
+ "minCount": 4,
+ "weight": 30
}
],
"underground_water_creature": [
diff --git a/src/main/resources/data/minecraft/worldgen/biome/the_end.json b/src/main/resources/data/minecraft/worldgen/biome/the_end.json
index 44df211..616acd8 100644
--- a/src/main/resources/data/minecraft/worldgen/biome/the_end.json
+++ b/src/main/resources/data/minecraft/worldgen/biome/the_end.json
@@ -20,6 +20,14 @@
[],
[
"minecraft:end_spike"
+ ],
+ [],
+ [],
+ [],
+ [],
+ [],
+ [
+ "minecraft:end_platform"
]
],
"has_precipitation": false,
diff --git a/src/main/resources/mapping.json b/src/main/resources/mapping.json
deleted file mode 100644
index facb580..0000000
--- a/src/main/resources/mapping.json
+++ /dev/null
@@ -1,89 +0,0 @@
-{
- "HandshakeIn": {
- "0x00": "PacketHandshakingIn"
- },
- "LoginIn": {
- "0x00": "PacketLoginInLoginStart",
- "0x02": "PacketLoginInPluginMessaging",
- "0x03": "ServerboundLoginAcknowledgedPacket"
- },
- "LoginOut": {
- "PacketLoginOutLoginSuccess": "0x02",
- "PacketLoginOutDisconnect": "0x00",
- "PacketLoginOutPluginMessaging": "0x04"
- },
- "ConfigurationIn": {
- "0x03": "ServerboundFinishConfigurationPacket"
- },
- "ConfigurationOut": {
- "ClientboundRegistryDataPacket": "0x07",
- "ClientboundFinishConfigurationPacket": "0x03"
- },
- "PlayIn": {
- "0x18": "PacketPlayInKeepAlive",
- "0x04": "ServerboundChatCommandPacket",
- "0x06": "PacketPlayInChat",
- "0x1A": "PacketPlayInPosition",
- "0x1B": "PacketPlayInPositionAndLook",
- "0x1C": "PacketPlayInRotation",
- "0x12": "PacketPlayInPluginMessaging",
- "0x0B": "PacketPlayInTabComplete",
- "0x2F": "PacketPlayInHeldItemChange",
- "0x2B": "ServerboundResourcePackPacket",
- "0x38": "PacketPlayInUseItem",
- "0x39": "PacketPlayInBlockPlace",
- "0x32": "PacketPlayInSetCreativeSlot",
- "0x0E": "PacketPlayInWindowClick",
- "0x0F": "PacketPlayInCloseWindow",
- "0x20": "PacketPlayInPickItem",
- "0x24": "PacketPlayInBlockDig",
- "0x2A": "PacketPlayInItemName"
- },
- "PlayOut": {
- "PacketPlayOutLogin": "0x2B",
- "PacketPlayOutPositionAndLook": "0x40",
- "PacketPlayOutSpawnPosition": "0x56",
- "ClientboundSystemChatPacket": "0x6C",
- "PacketPlayOutPlayerAbilities": "0x38",
- "ClientboundLevelChunkWithLightPacket": "0x27",
- "PacketPlayOutUnloadChunk": "0x21",
- "PacketPlayOutKeepAlive": "0x26",
- "PacketPlayOutGameStateChange": "0x22",
- "PacketPlayOutPlayerInfo": "0x3E",
- "PacketPlayOutUpdateViewPosition": "0x54",
- "PacketPlayOutDisconnect": "0x1D",
- "PacketPlayOutPluginMessaging": "0x19",
- "PacketPlayOutTabComplete": "0x10",
- "PacketPlayOutDeclareCommands": "0x11",
- "PacketPlayOutRespawn": "0x47",
- "PacketPlayOutEntityDestroy": "0x42",
- "PacketPlayOutEntityMetadata": "0x58",
- "PacketPlayOutSpawnEntity": "0x01",
- "PacketPlayOutHeldItemChange": "0x53",
- "PacketPlayOutPlayerListHeaderFooter": "0x6D",
- "ClientboundResourcePackPushPacket": "0x46",
- "ClientboundSetTitlesAnimationPacket": "0x66",
- "ClientboundSetTitleTextPacket": "0x65",
- "ClientboundSetSubtitleTextPacket": "0x63",
- "ClientboundSetActionBarTextPacket": "0x4C",
- "ClientboundClearTitlesPacket": "0x0F",
- "PacketPlayOutBoss": "0x0A",
- "PacketPlayOutNamedSoundEffect": "0x68",
- "PacketPlayOutStopSound": "0x6A",
- "PacketPlayOutWindowItems": "0x13",
- "PacketPlayOutSetSlot": "0x15",
- "PacketPlayOutOpenWindow": "0x33",
- "PacketPlayOutCloseWindow": "0x12",
- "PacketPlayOutWindowData": "0x14",
- "ClientboundChunkBatchFinishedPacket": "0x0C",
- "ClientboundChunkBatchStartPacket": "0x0D"
- },
- "StatusIn": {
- "0x01": "PacketStatusInPing",
- "0x00": "PacketStatusInRequest"
- },
- "StatusOut": {
- "PacketStatusOutResponse": "0x00",
- "PacketStatusOutPong": "0x01"
- }
-}
\ No newline at end of file
diff --git a/src/main/resources/reports/packets.json b/src/main/resources/reports/packets.json
new file mode 100644
index 0000000..8932094
--- /dev/null
+++ b/src/main/resources/reports/packets.json
@@ -0,0 +1,699 @@
+{
+ "configuration": {
+ "clientbound": {
+ "minecraft:cookie_request": {
+ "protocol_id": 0
+ },
+ "minecraft:custom_payload": {
+ "protocol_id": 1
+ },
+ "minecraft:custom_report_details": {
+ "protocol_id": 15
+ },
+ "minecraft:disconnect": {
+ "protocol_id": 2
+ },
+ "minecraft:finish_configuration": {
+ "protocol_id": 3
+ },
+ "minecraft:keep_alive": {
+ "protocol_id": 4
+ },
+ "minecraft:ping": {
+ "protocol_id": 5
+ },
+ "minecraft:registry_data": {
+ "protocol_id": 7
+ },
+ "minecraft:reset_chat": {
+ "protocol_id": 6
+ },
+ "minecraft:resource_pack_pop": {
+ "protocol_id": 8
+ },
+ "minecraft:resource_pack_push": {
+ "protocol_id": 9
+ },
+ "minecraft:select_known_packs": {
+ "protocol_id": 14
+ },
+ "minecraft:server_links": {
+ "protocol_id": 16
+ },
+ "minecraft:store_cookie": {
+ "protocol_id": 10
+ },
+ "minecraft:transfer": {
+ "protocol_id": 11
+ },
+ "minecraft:update_enabled_features": {
+ "protocol_id": 12
+ },
+ "minecraft:update_tags": {
+ "protocol_id": 13
+ }
+ },
+ "serverbound": {
+ "minecraft:client_information": {
+ "protocol_id": 0
+ },
+ "minecraft:cookie_response": {
+ "protocol_id": 1
+ },
+ "minecraft:custom_payload": {
+ "protocol_id": 2
+ },
+ "minecraft:finish_configuration": {
+ "protocol_id": 3
+ },
+ "minecraft:keep_alive": {
+ "protocol_id": 4
+ },
+ "minecraft:pong": {
+ "protocol_id": 5
+ },
+ "minecraft:resource_pack": {
+ "protocol_id": 6
+ },
+ "minecraft:select_known_packs": {
+ "protocol_id": 7
+ }
+ }
+ },
+ "handshake": {
+ "serverbound": {
+ "minecraft:intention": {
+ "protocol_id": 0
+ }
+ }
+ },
+ "login": {
+ "clientbound": {
+ "minecraft:cookie_request": {
+ "protocol_id": 5
+ },
+ "minecraft:custom_query": {
+ "protocol_id": 4
+ },
+ "minecraft:game_profile": {
+ "protocol_id": 2
+ },
+ "minecraft:hello": {
+ "protocol_id": 1
+ },
+ "minecraft:login_compression": {
+ "protocol_id": 3
+ },
+ "minecraft:login_disconnect": {
+ "protocol_id": 0
+ }
+ },
+ "serverbound": {
+ "minecraft:cookie_response": {
+ "protocol_id": 4
+ },
+ "minecraft:custom_query_answer": {
+ "protocol_id": 2
+ },
+ "minecraft:hello": {
+ "protocol_id": 0
+ },
+ "minecraft:key": {
+ "protocol_id": 1
+ },
+ "minecraft:login_acknowledged": {
+ "protocol_id": 3
+ }
+ }
+ },
+ "play": {
+ "clientbound": {
+ "minecraft:add_entity": {
+ "protocol_id": 1
+ },
+ "minecraft:add_experience_orb": {
+ "protocol_id": 2
+ },
+ "minecraft:animate": {
+ "protocol_id": 3
+ },
+ "minecraft:award_stats": {
+ "protocol_id": 4
+ },
+ "minecraft:block_changed_ack": {
+ "protocol_id": 5
+ },
+ "minecraft:block_destruction": {
+ "protocol_id": 6
+ },
+ "minecraft:block_entity_data": {
+ "protocol_id": 7
+ },
+ "minecraft:block_event": {
+ "protocol_id": 8
+ },
+ "minecraft:block_update": {
+ "protocol_id": 9
+ },
+ "minecraft:boss_event": {
+ "protocol_id": 10
+ },
+ "minecraft:bundle_delimiter": {
+ "protocol_id": 0
+ },
+ "minecraft:change_difficulty": {
+ "protocol_id": 11
+ },
+ "minecraft:chunk_batch_finished": {
+ "protocol_id": 12
+ },
+ "minecraft:chunk_batch_start": {
+ "protocol_id": 13
+ },
+ "minecraft:chunks_biomes": {
+ "protocol_id": 14
+ },
+ "minecraft:clear_titles": {
+ "protocol_id": 15
+ },
+ "minecraft:command_suggestions": {
+ "protocol_id": 16
+ },
+ "minecraft:commands": {
+ "protocol_id": 17
+ },
+ "minecraft:container_close": {
+ "protocol_id": 18
+ },
+ "minecraft:container_set_content": {
+ "protocol_id": 19
+ },
+ "minecraft:container_set_data": {
+ "protocol_id": 20
+ },
+ "minecraft:container_set_slot": {
+ "protocol_id": 21
+ },
+ "minecraft:cookie_request": {
+ "protocol_id": 22
+ },
+ "minecraft:cooldown": {
+ "protocol_id": 23
+ },
+ "minecraft:custom_chat_completions": {
+ "protocol_id": 24
+ },
+ "minecraft:custom_payload": {
+ "protocol_id": 25
+ },
+ "minecraft:custom_report_details": {
+ "protocol_id": 122
+ },
+ "minecraft:damage_event": {
+ "protocol_id": 26
+ },
+ "minecraft:debug_sample": {
+ "protocol_id": 27
+ },
+ "minecraft:delete_chat": {
+ "protocol_id": 28
+ },
+ "minecraft:disconnect": {
+ "protocol_id": 29
+ },
+ "minecraft:disguised_chat": {
+ "protocol_id": 30
+ },
+ "minecraft:entity_event": {
+ "protocol_id": 31
+ },
+ "minecraft:explode": {
+ "protocol_id": 32
+ },
+ "minecraft:forget_level_chunk": {
+ "protocol_id": 33
+ },
+ "minecraft:game_event": {
+ "protocol_id": 34
+ },
+ "minecraft:horse_screen_open": {
+ "protocol_id": 35
+ },
+ "minecraft:hurt_animation": {
+ "protocol_id": 36
+ },
+ "minecraft:initialize_border": {
+ "protocol_id": 37
+ },
+ "minecraft:keep_alive": {
+ "protocol_id": 38
+ },
+ "minecraft:level_chunk_with_light": {
+ "protocol_id": 39
+ },
+ "minecraft:level_event": {
+ "protocol_id": 40
+ },
+ "minecraft:level_particles": {
+ "protocol_id": 41
+ },
+ "minecraft:light_update": {
+ "protocol_id": 42
+ },
+ "minecraft:login": {
+ "protocol_id": 43
+ },
+ "minecraft:map_item_data": {
+ "protocol_id": 44
+ },
+ "minecraft:merchant_offers": {
+ "protocol_id": 45
+ },
+ "minecraft:move_entity_pos": {
+ "protocol_id": 46
+ },
+ "minecraft:move_entity_pos_rot": {
+ "protocol_id": 47
+ },
+ "minecraft:move_entity_rot": {
+ "protocol_id": 48
+ },
+ "minecraft:move_vehicle": {
+ "protocol_id": 49
+ },
+ "minecraft:open_book": {
+ "protocol_id": 50
+ },
+ "minecraft:open_screen": {
+ "protocol_id": 51
+ },
+ "minecraft:open_sign_editor": {
+ "protocol_id": 52
+ },
+ "minecraft:ping": {
+ "protocol_id": 53
+ },
+ "minecraft:place_ghost_recipe": {
+ "protocol_id": 55
+ },
+ "minecraft:player_abilities": {
+ "protocol_id": 56
+ },
+ "minecraft:player_chat": {
+ "protocol_id": 57
+ },
+ "minecraft:player_combat_end": {
+ "protocol_id": 58
+ },
+ "minecraft:player_combat_enter": {
+ "protocol_id": 59
+ },
+ "minecraft:player_combat_kill": {
+ "protocol_id": 60
+ },
+ "minecraft:player_info_remove": {
+ "protocol_id": 61
+ },
+ "minecraft:player_info_update": {
+ "protocol_id": 62
+ },
+ "minecraft:player_look_at": {
+ "protocol_id": 63
+ },
+ "minecraft:player_position": {
+ "protocol_id": 64
+ },
+ "minecraft:pong_response": {
+ "protocol_id": 54
+ },
+ "minecraft:projectile_power": {
+ "protocol_id": 121
+ },
+ "minecraft:recipe": {
+ "protocol_id": 65
+ },
+ "minecraft:remove_entities": {
+ "protocol_id": 66
+ },
+ "minecraft:remove_mob_effect": {
+ "protocol_id": 67
+ },
+ "minecraft:reset_score": {
+ "protocol_id": 68
+ },
+ "minecraft:resource_pack_pop": {
+ "protocol_id": 69
+ },
+ "minecraft:resource_pack_push": {
+ "protocol_id": 70
+ },
+ "minecraft:respawn": {
+ "protocol_id": 71
+ },
+ "minecraft:rotate_head": {
+ "protocol_id": 72
+ },
+ "minecraft:section_blocks_update": {
+ "protocol_id": 73
+ },
+ "minecraft:select_advancements_tab": {
+ "protocol_id": 74
+ },
+ "minecraft:server_data": {
+ "protocol_id": 75
+ },
+ "minecraft:server_links": {
+ "protocol_id": 123
+ },
+ "minecraft:set_action_bar_text": {
+ "protocol_id": 76
+ },
+ "minecraft:set_border_center": {
+ "protocol_id": 77
+ },
+ "minecraft:set_border_lerp_size": {
+ "protocol_id": 78
+ },
+ "minecraft:set_border_size": {
+ "protocol_id": 79
+ },
+ "minecraft:set_border_warning_delay": {
+ "protocol_id": 80
+ },
+ "minecraft:set_border_warning_distance": {
+ "protocol_id": 81
+ },
+ "minecraft:set_camera": {
+ "protocol_id": 82
+ },
+ "minecraft:set_carried_item": {
+ "protocol_id": 83
+ },
+ "minecraft:set_chunk_cache_center": {
+ "protocol_id": 84
+ },
+ "minecraft:set_chunk_cache_radius": {
+ "protocol_id": 85
+ },
+ "minecraft:set_default_spawn_position": {
+ "protocol_id": 86
+ },
+ "minecraft:set_display_objective": {
+ "protocol_id": 87
+ },
+ "minecraft:set_entity_data": {
+ "protocol_id": 88
+ },
+ "minecraft:set_entity_link": {
+ "protocol_id": 89
+ },
+ "minecraft:set_entity_motion": {
+ "protocol_id": 90
+ },
+ "minecraft:set_equipment": {
+ "protocol_id": 91
+ },
+ "minecraft:set_experience": {
+ "protocol_id": 92
+ },
+ "minecraft:set_health": {
+ "protocol_id": 93
+ },
+ "minecraft:set_objective": {
+ "protocol_id": 94
+ },
+ "minecraft:set_passengers": {
+ "protocol_id": 95
+ },
+ "minecraft:set_player_team": {
+ "protocol_id": 96
+ },
+ "minecraft:set_score": {
+ "protocol_id": 97
+ },
+ "minecraft:set_simulation_distance": {
+ "protocol_id": 98
+ },
+ "minecraft:set_subtitle_text": {
+ "protocol_id": 99
+ },
+ "minecraft:set_time": {
+ "protocol_id": 100
+ },
+ "minecraft:set_title_text": {
+ "protocol_id": 101
+ },
+ "minecraft:set_titles_animation": {
+ "protocol_id": 102
+ },
+ "minecraft:sound": {
+ "protocol_id": 104
+ },
+ "minecraft:sound_entity": {
+ "protocol_id": 103
+ },
+ "minecraft:start_configuration": {
+ "protocol_id": 105
+ },
+ "minecraft:stop_sound": {
+ "protocol_id": 106
+ },
+ "minecraft:store_cookie": {
+ "protocol_id": 107
+ },
+ "minecraft:system_chat": {
+ "protocol_id": 108
+ },
+ "minecraft:tab_list": {
+ "protocol_id": 109
+ },
+ "minecraft:tag_query": {
+ "protocol_id": 110
+ },
+ "minecraft:take_item_entity": {
+ "protocol_id": 111
+ },
+ "minecraft:teleport_entity": {
+ "protocol_id": 112
+ },
+ "minecraft:ticking_state": {
+ "protocol_id": 113
+ },
+ "minecraft:ticking_step": {
+ "protocol_id": 114
+ },
+ "minecraft:transfer": {
+ "protocol_id": 115
+ },
+ "minecraft:update_advancements": {
+ "protocol_id": 116
+ },
+ "minecraft:update_attributes": {
+ "protocol_id": 117
+ },
+ "minecraft:update_mob_effect": {
+ "protocol_id": 118
+ },
+ "minecraft:update_recipes": {
+ "protocol_id": 119
+ },
+ "minecraft:update_tags": {
+ "protocol_id": 120
+ }
+ },
+ "serverbound": {
+ "minecraft:accept_teleportation": {
+ "protocol_id": 0
+ },
+ "minecraft:block_entity_tag_query": {
+ "protocol_id": 1
+ },
+ "minecraft:change_difficulty": {
+ "protocol_id": 2
+ },
+ "minecraft:chat": {
+ "protocol_id": 6
+ },
+ "minecraft:chat_ack": {
+ "protocol_id": 3
+ },
+ "minecraft:chat_command": {
+ "protocol_id": 4
+ },
+ "minecraft:chat_command_signed": {
+ "protocol_id": 5
+ },
+ "minecraft:chat_session_update": {
+ "protocol_id": 7
+ },
+ "minecraft:chunk_batch_received": {
+ "protocol_id": 8
+ },
+ "minecraft:client_command": {
+ "protocol_id": 9
+ },
+ "minecraft:client_information": {
+ "protocol_id": 10
+ },
+ "minecraft:command_suggestion": {
+ "protocol_id": 11
+ },
+ "minecraft:configuration_acknowledged": {
+ "protocol_id": 12
+ },
+ "minecraft:container_button_click": {
+ "protocol_id": 13
+ },
+ "minecraft:container_click": {
+ "protocol_id": 14
+ },
+ "minecraft:container_close": {
+ "protocol_id": 15
+ },
+ "minecraft:container_slot_state_changed": {
+ "protocol_id": 16
+ },
+ "minecraft:cookie_response": {
+ "protocol_id": 17
+ },
+ "minecraft:custom_payload": {
+ "protocol_id": 18
+ },
+ "minecraft:debug_sample_subscription": {
+ "protocol_id": 19
+ },
+ "minecraft:edit_book": {
+ "protocol_id": 20
+ },
+ "minecraft:entity_tag_query": {
+ "protocol_id": 21
+ },
+ "minecraft:interact": {
+ "protocol_id": 22
+ },
+ "minecraft:jigsaw_generate": {
+ "protocol_id": 23
+ },
+ "minecraft:keep_alive": {
+ "protocol_id": 24
+ },
+ "minecraft:lock_difficulty": {
+ "protocol_id": 25
+ },
+ "minecraft:move_player_pos": {
+ "protocol_id": 26
+ },
+ "minecraft:move_player_pos_rot": {
+ "protocol_id": 27
+ },
+ "minecraft:move_player_rot": {
+ "protocol_id": 28
+ },
+ "minecraft:move_player_status_only": {
+ "protocol_id": 29
+ },
+ "minecraft:move_vehicle": {
+ "protocol_id": 30
+ },
+ "minecraft:paddle_boat": {
+ "protocol_id": 31
+ },
+ "minecraft:pick_item": {
+ "protocol_id": 32
+ },
+ "minecraft:ping_request": {
+ "protocol_id": 33
+ },
+ "minecraft:place_recipe": {
+ "protocol_id": 34
+ },
+ "minecraft:player_abilities": {
+ "protocol_id": 35
+ },
+ "minecraft:player_action": {
+ "protocol_id": 36
+ },
+ "minecraft:player_command": {
+ "protocol_id": 37
+ },
+ "minecraft:player_input": {
+ "protocol_id": 38
+ },
+ "minecraft:pong": {
+ "protocol_id": 39
+ },
+ "minecraft:recipe_book_change_settings": {
+ "protocol_id": 40
+ },
+ "minecraft:recipe_book_seen_recipe": {
+ "protocol_id": 41
+ },
+ "minecraft:rename_item": {
+ "protocol_id": 42
+ },
+ "minecraft:resource_pack": {
+ "protocol_id": 43
+ },
+ "minecraft:seen_advancements": {
+ "protocol_id": 44
+ },
+ "minecraft:select_trade": {
+ "protocol_id": 45
+ },
+ "minecraft:set_beacon": {
+ "protocol_id": 46
+ },
+ "minecraft:set_carried_item": {
+ "protocol_id": 47
+ },
+ "minecraft:set_command_block": {
+ "protocol_id": 48
+ },
+ "minecraft:set_command_minecart": {
+ "protocol_id": 49
+ },
+ "minecraft:set_creative_mode_slot": {
+ "protocol_id": 50
+ },
+ "minecraft:set_jigsaw_block": {
+ "protocol_id": 51
+ },
+ "minecraft:set_structure_block": {
+ "protocol_id": 52
+ },
+ "minecraft:sign_update": {
+ "protocol_id": 53
+ },
+ "minecraft:swing": {
+ "protocol_id": 54
+ },
+ "minecraft:teleport_to_entity": {
+ "protocol_id": 55
+ },
+ "minecraft:use_item": {
+ "protocol_id": 57
+ },
+ "minecraft:use_item_on": {
+ "protocol_id": 56
+ }
+ }
+ },
+ "status": {
+ "clientbound": {
+ "minecraft:pong_response": {
+ "protocol_id": 1
+ },
+ "minecraft:status_response": {
+ "protocol_id": 0
+ }
+ },
+ "serverbound": {
+ "minecraft:ping_request": {
+ "protocol_id": 1
+ },
+ "minecraft:status_request": {
+ "protocol_id": 0
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/reports/registries.json b/src/main/resources/reports/registries.json
index 0f4fdcb..257ad97 100644
--- a/src/main/resources/reports/registries.json
+++ b/src/main/resources/reports/registries.json
@@ -80,7 +80,7 @@
"protocol_id": 2
}
},
- "protocol_id": 30
+ "protocol_id": 28
},
"minecraft:armor_material": {
"entries": {
@@ -109,7 +109,7 @@
"protocol_id": 5
}
},
- "protocol_id": 69
+ "protocol_id": 67
},
"minecraft:attribute": {
"entries": {
@@ -128,44 +128,59 @@
"minecraft:generic.attack_speed": {
"protocol_id": 4
},
- "minecraft:generic.fall_damage_multiplier": {
+ "minecraft:generic.burning_time": {
+ "protocol_id": 7
+ },
+ "minecraft:generic.explosion_knockback_resistance": {
"protocol_id": 8
},
- "minecraft:generic.flying_speed": {
- "protocol_id": 9
- },
- "minecraft:generic.follow_range": {
+ "minecraft:generic.fall_damage_multiplier": {
"protocol_id": 10
},
- "minecraft:generic.gravity": {
+ "minecraft:generic.flying_speed": {
"protocol_id": 11
},
- "minecraft:generic.jump_strength": {
+ "minecraft:generic.follow_range": {
"protocol_id": 12
},
- "minecraft:generic.knockback_resistance": {
+ "minecraft:generic.gravity": {
"protocol_id": 13
},
- "minecraft:generic.luck": {
+ "minecraft:generic.jump_strength": {
"protocol_id": 14
},
- "minecraft:generic.max_absorption": {
+ "minecraft:generic.knockback_resistance": {
"protocol_id": 15
},
- "minecraft:generic.max_health": {
+ "minecraft:generic.luck": {
"protocol_id": 16
},
- "minecraft:generic.movement_speed": {
+ "minecraft:generic.max_absorption": {
"protocol_id": 17
},
- "minecraft:generic.safe_fall_distance": {
+ "minecraft:generic.max_health": {
"protocol_id": 18
},
+ "minecraft:generic.movement_efficiency": {
+ "protocol_id": 20
+ },
+ "minecraft:generic.movement_speed": {
+ "protocol_id": 21
+ },
+ "minecraft:generic.oxygen_bonus": {
+ "protocol_id": 22
+ },
+ "minecraft:generic.safe_fall_distance": {
+ "protocol_id": 23
+ },
"minecraft:generic.scale": {
- "protocol_id": 19
+ "protocol_id": 24
},
"minecraft:generic.step_height": {
- "protocol_id": 21
+ "protocol_id": 27
+ },
+ "minecraft:generic.water_movement_efficiency": {
+ "protocol_id": 30
},
"minecraft:player.block_break_speed": {
"protocol_id": 5
@@ -174,13 +189,25 @@
"protocol_id": 6
},
"minecraft:player.entity_interaction_range": {
- "protocol_id": 7
+ "protocol_id": 9
+ },
+ "minecraft:player.mining_efficiency": {
+ "protocol_id": 19
+ },
+ "minecraft:player.sneaking_speed": {
+ "protocol_id": 25
+ },
+ "minecraft:player.submerged_mining_speed": {
+ "protocol_id": 28
+ },
+ "minecraft:player.sweeping_damage_ratio": {
+ "protocol_id": 29
},
"minecraft:zombie.spawn_reinforcements": {
- "protocol_id": 20
+ "protocol_id": 26
}
},
- "protocol_id": 20
+ "protocol_id": 18
},
"minecraft:block": {
"default": "minecraft:air",
@@ -3503,7 +3530,7 @@
"protocol_id": 43
}
},
- "protocol_id": 10
+ "protocol_id": 9
},
"minecraft:block_predicate_type": {
"entries": {
@@ -3540,11 +3567,14 @@
"minecraft:true": {
"protocol_id": 11
},
+ "minecraft:unobstructed": {
+ "protocol_id": 12
+ },
"minecraft:would_survive": {
"protocol_id": 6
}
},
- "protocol_id": 40
+ "protocol_id": 38
},
"minecraft:block_type": {
"entries": {
@@ -4272,7 +4302,7 @@
"protocol_id": 240
}
},
- "protocol_id": 58
+ "protocol_id": 56
},
"minecraft:cat_variant": {
"entries": {
@@ -4310,7 +4340,7 @@
"protocol_id": 8
}
},
- "protocol_id": 62
+ "protocol_id": 60
},
"minecraft:chunk_status": {
"default": "minecraft:empty",
@@ -4352,7 +4382,7 @@
"protocol_id": 5
}
},
- "protocol_id": 13
+ "protocol_id": 11
},
"minecraft:command_argument_type": {
"entries": {
@@ -4519,7 +4549,7 @@
"protocol_id": 10
}
},
- "protocol_id": 22
+ "protocol_id": 20
},
"minecraft:creative_mode_tab": {
"entries": {
@@ -4566,7 +4596,7 @@
"protocol_id": 7
}
},
- "protocol_id": 66
+ "protocol_id": 64
},
"minecraft:custom_stat": {
"entries": {
@@ -4796,7 +4826,7 @@
"protocol_id": 13
}
},
- "protocol_id": 12
+ "protocol_id": 10
},
"minecraft:data_component_type": {
"entries": {
@@ -4804,19 +4834,19 @@
"protocol_id": 12
},
"minecraft:banner_patterns": {
- "protocol_id": 48
- },
- "minecraft:base_color": {
"protocol_id": 49
},
+ "minecraft:base_color": {
+ "protocol_id": 50
+ },
"minecraft:bees": {
- "protocol_id": 53
+ "protocol_id": 54
},
"minecraft:block_entity_data": {
"protocol_id": 39
},
"minecraft:block_state": {
- "protocol_id": 52
+ "protocol_id": 53
},
"minecraft:bucket_entity_data": {
"protocol_id": 38
@@ -4834,10 +4864,10 @@
"protocol_id": 29
},
"minecraft:container": {
- "protocol_id": 51
+ "protocol_id": 52
},
"minecraft:container_loot": {
- "protocol_id": 55
+ "protocol_id": 56
},
"minecraft:creative_slot_lock": {
"protocol_id": 17
@@ -4873,10 +4903,10 @@
"protocol_id": 21
},
"minecraft:firework_explosion": {
- "protocol_id": 44
+ "protocol_id": 45
},
"minecraft:fireworks": {
- "protocol_id": 45
+ "protocol_id": 46
},
"minecraft:food": {
"protocol_id": 20
@@ -4896,11 +4926,14 @@
"minecraft:item_name": {
"protocol_id": 6
},
+ "minecraft:jukebox_playable": {
+ "protocol_id": 42
+ },
"minecraft:lock": {
- "protocol_id": 54
+ "protocol_id": 55
},
"minecraft:lodestone_tracker": {
- "protocol_id": 43
+ "protocol_id": 44
},
"minecraft:lore": {
"protocol_id": 7
@@ -4924,25 +4957,25 @@
"protocol_id": 1
},
"minecraft:note_block_sound": {
- "protocol_id": 47
+ "protocol_id": 48
},
"minecraft:ominous_bottle_amplifier": {
"protocol_id": 41
},
"minecraft:pot_decorations": {
- "protocol_id": 50
+ "protocol_id": 51
},
"minecraft:potion_contents": {
"protocol_id": 31
},
"minecraft:profile": {
- "protocol_id": 46
+ "protocol_id": 47
},
"minecraft:rarity": {
"protocol_id": 8
},
"minecraft:recipes": {
- "protocol_id": 42
+ "protocol_id": 43
},
"minecraft:repair_cost": {
"protocol_id": 16
@@ -4969,218 +5002,324 @@
"protocol_id": 34
}
},
- "protocol_id": 70
+ "protocol_id": 68
},
- "minecraft:decorated_pot_patterns": {
+ "minecraft:decorated_pot_pattern": {
"entries": {
- "minecraft:angler_pottery_pattern": {
+ "minecraft:angler": {
+ "protocol_id": 0
+ },
+ "minecraft:archer": {
"protocol_id": 1
},
- "minecraft:archer_pottery_pattern": {
+ "minecraft:arms_up": {
"protocol_id": 2
},
- "minecraft:arms_up_pottery_pattern": {
+ "minecraft:blade": {
"protocol_id": 3
},
- "minecraft:blade_pottery_pattern": {
+ "minecraft:blank": {
+ "protocol_id": 23
+ },
+ "minecraft:brewer": {
"protocol_id": 4
},
- "minecraft:brewer_pottery_pattern": {
+ "minecraft:burn": {
"protocol_id": 5
},
- "minecraft:burn_pottery_pattern": {
+ "minecraft:danger": {
"protocol_id": 6
},
- "minecraft:danger_pottery_pattern": {
+ "minecraft:explorer": {
"protocol_id": 7
},
- "minecraft:decorated_pot_base": {
- "protocol_id": 24
- },
- "minecraft:decorated_pot_side": {
- "protocol_id": 0
- },
- "minecraft:explorer_pottery_pattern": {
+ "minecraft:flow": {
"protocol_id": 8
},
- "minecraft:flow_pottery_pattern": {
+ "minecraft:friend": {
"protocol_id": 9
},
- "minecraft:friend_pottery_pattern": {
+ "minecraft:guster": {
"protocol_id": 10
},
- "minecraft:guster_pottery_pattern": {
+ "minecraft:heart": {
"protocol_id": 11
},
- "minecraft:heart_pottery_pattern": {
+ "minecraft:heartbreak": {
"protocol_id": 12
},
- "minecraft:heartbreak_pottery_pattern": {
+ "minecraft:howl": {
"protocol_id": 13
},
- "minecraft:howl_pottery_pattern": {
+ "minecraft:miner": {
"protocol_id": 14
},
- "minecraft:miner_pottery_pattern": {
+ "minecraft:mourner": {
"protocol_id": 15
},
- "minecraft:mourner_pottery_pattern": {
+ "minecraft:plenty": {
"protocol_id": 16
},
- "minecraft:plenty_pottery_pattern": {
+ "minecraft:prize": {
"protocol_id": 17
},
- "minecraft:prize_pottery_pattern": {
+ "minecraft:scrape": {
"protocol_id": 18
},
- "minecraft:scrape_pottery_pattern": {
+ "minecraft:sheaf": {
"protocol_id": 19
},
- "minecraft:sheaf_pottery_pattern": {
+ "minecraft:shelter": {
"protocol_id": 20
},
- "minecraft:shelter_pottery_pattern": {
+ "minecraft:skull": {
"protocol_id": 21
},
- "minecraft:skull_pottery_pattern": {
+ "minecraft:snort": {
"protocol_id": 22
- },
- "minecraft:snort_pottery_pattern": {
- "protocol_id": 23
}
},
- "protocol_id": 65
+ "protocol_id": 63
},
- "minecraft:enchantment": {
+ "minecraft:enchantment_effect_component_type": {
"entries": {
- "minecraft:aqua_affinity": {
- "protocol_id": 6
+ "minecraft:ammo_use": {
+ "protocol_id": 13
},
- "minecraft:bane_of_arthropods": {
- "protocol_id": 15
+ "minecraft:armor_effectiveness": {
+ "protocol_id": 5
},
- "minecraft:binding_curse": {
- "protocol_id": 10
- },
- "minecraft:blast_protection": {
- "protocol_id": 3
- },
- "minecraft:breach": {
- "protocol_id": 38
- },
- "minecraft:channeling": {
- "protocol_id": 33
- },
- "minecraft:density": {
- "protocol_id": 37
- },
- "minecraft:depth_strider": {
- "protocol_id": 8
- },
- "minecraft:efficiency": {
- "protocol_id": 20
- },
- "minecraft:feather_falling": {
- "protocol_id": 2
- },
- "minecraft:fire_aspect": {
- "protocol_id": 17
- },
- "minecraft:fire_protection": {
- "protocol_id": 1
- },
- "minecraft:flame": {
- "protocol_id": 26
- },
- "minecraft:fortune": {
- "protocol_id": 23
- },
- "minecraft:frost_walker": {
+ "minecraft:attributes": {
"protocol_id": 9
},
- "minecraft:impaling": {
- "protocol_id": 31
+ "minecraft:block_experience": {
+ "protocol_id": 21
},
- "minecraft:infinity": {
- "protocol_id": 27
- },
- "minecraft:knockback": {
- "protocol_id": 16
- },
- "minecraft:looting": {
- "protocol_id": 18
- },
- "minecraft:loyalty": {
- "protocol_id": 30
- },
- "minecraft:luck_of_the_sea": {
- "protocol_id": 28
- },
- "minecraft:lure": {
- "protocol_id": 29
- },
- "minecraft:mending": {
- "protocol_id": 40
- },
- "minecraft:multishot": {
- "protocol_id": 34
- },
- "minecraft:piercing": {
- "protocol_id": 36
- },
- "minecraft:power": {
+ "minecraft:crossbow_charge_time": {
"protocol_id": 24
},
- "minecraft:projectile_protection": {
- "protocol_id": 4
- },
- "minecraft:protection": {
- "protocol_id": 0
- },
- "minecraft:punch": {
+ "minecraft:crossbow_charging_sounds": {
"protocol_id": 25
},
- "minecraft:quick_charge": {
- "protocol_id": 35
+ "minecraft:damage": {
+ "protocol_id": 2
},
- "minecraft:respiration": {
- "protocol_id": 5
+ "minecraft:damage_immunity": {
+ "protocol_id": 1
},
- "minecraft:riptide": {
- "protocol_id": 32
+ "minecraft:damage_protection": {
+ "protocol_id": 0
},
- "minecraft:sharpness": {
- "protocol_id": 13
+ "minecraft:equipment_drops": {
+ "protocol_id": 10
},
- "minecraft:silk_touch": {
- "protocol_id": 21
+ "minecraft:fishing_luck_bonus": {
+ "protocol_id": 20
},
- "minecraft:smite": {
- "protocol_id": 14
- },
- "minecraft:soul_speed": {
- "protocol_id": 11
- },
- "minecraft:sweeping_edge": {
+ "minecraft:fishing_time_reduction": {
"protocol_id": 19
},
- "minecraft:swift_sneak": {
- "protocol_id": 12
- },
- "minecraft:thorns": {
+ "minecraft:hit_block": {
"protocol_id": 7
},
- "minecraft:unbreaking": {
+ "minecraft:item_damage": {
+ "protocol_id": 8
+ },
+ "minecraft:knockback": {
+ "protocol_id": 4
+ },
+ "minecraft:location_changed": {
+ "protocol_id": 11
+ },
+ "minecraft:mob_experience": {
"protocol_id": 22
},
- "minecraft:vanishing_curse": {
- "protocol_id": 41
+ "minecraft:post_attack": {
+ "protocol_id": 6
},
- "minecraft:wind_burst": {
- "protocol_id": 39
+ "minecraft:prevent_armor_change": {
+ "protocol_id": 28
+ },
+ "minecraft:prevent_equipment_drop": {
+ "protocol_id": 27
+ },
+ "minecraft:projectile_count": {
+ "protocol_id": 17
+ },
+ "minecraft:projectile_piercing": {
+ "protocol_id": 14
+ },
+ "minecraft:projectile_spawned": {
+ "protocol_id": 15
+ },
+ "minecraft:projectile_spread": {
+ "protocol_id": 16
+ },
+ "minecraft:repair_with_xp": {
+ "protocol_id": 23
+ },
+ "minecraft:smash_damage_per_fallen_block": {
+ "protocol_id": 3
+ },
+ "minecraft:tick": {
+ "protocol_id": 12
+ },
+ "minecraft:trident_return_acceleration": {
+ "protocol_id": 18
+ },
+ "minecraft:trident_sound": {
+ "protocol_id": 26
+ },
+ "minecraft:trident_spin_attack_strength": {
+ "protocol_id": 29
}
},
- "protocol_id": 5
+ "protocol_id": 72
+ },
+ "minecraft:enchantment_entity_effect_type": {
+ "entries": {
+ "minecraft:all_of": {
+ "protocol_id": 0
+ },
+ "minecraft:apply_mob_effect": {
+ "protocol_id": 1
+ },
+ "minecraft:damage_entity": {
+ "protocol_id": 2
+ },
+ "minecraft:damage_item": {
+ "protocol_id": 3
+ },
+ "minecraft:explode": {
+ "protocol_id": 4
+ },
+ "minecraft:ignite": {
+ "protocol_id": 5
+ },
+ "minecraft:play_sound": {
+ "protocol_id": 6
+ },
+ "minecraft:replace_block": {
+ "protocol_id": 7
+ },
+ "minecraft:replace_disk": {
+ "protocol_id": 8
+ },
+ "minecraft:run_function": {
+ "protocol_id": 9
+ },
+ "minecraft:set_block_properties": {
+ "protocol_id": 10
+ },
+ "minecraft:spawn_particles": {
+ "protocol_id": 11
+ },
+ "minecraft:summon_entity": {
+ "protocol_id": 12
+ }
+ },
+ "protocol_id": 74
+ },
+ "minecraft:enchantment_level_based_value_type": {
+ "entries": {
+ "minecraft:clamped": {
+ "protocol_id": 0
+ },
+ "minecraft:fraction": {
+ "protocol_id": 1
+ },
+ "minecraft:levels_squared": {
+ "protocol_id": 2
+ },
+ "minecraft:linear": {
+ "protocol_id": 3
+ },
+ "minecraft:lookup": {
+ "protocol_id": 4
+ }
+ },
+ "protocol_id": 73
+ },
+ "minecraft:enchantment_location_based_effect_type": {
+ "entries": {
+ "minecraft:all_of": {
+ "protocol_id": 0
+ },
+ "minecraft:apply_mob_effect": {
+ "protocol_id": 1
+ },
+ "minecraft:attribute": {
+ "protocol_id": 2
+ },
+ "minecraft:damage_entity": {
+ "protocol_id": 3
+ },
+ "minecraft:damage_item": {
+ "protocol_id": 4
+ },
+ "minecraft:explode": {
+ "protocol_id": 5
+ },
+ "minecraft:ignite": {
+ "protocol_id": 6
+ },
+ "minecraft:play_sound": {
+ "protocol_id": 7
+ },
+ "minecraft:replace_block": {
+ "protocol_id": 8
+ },
+ "minecraft:replace_disk": {
+ "protocol_id": 9
+ },
+ "minecraft:run_function": {
+ "protocol_id": 10
+ },
+ "minecraft:set_block_properties": {
+ "protocol_id": 11
+ },
+ "minecraft:spawn_particles": {
+ "protocol_id": 12
+ },
+ "minecraft:summon_entity": {
+ "protocol_id": 13
+ }
+ },
+ "protocol_id": 75
+ },
+ "minecraft:enchantment_provider_type": {
+ "entries": {
+ "minecraft:by_cost": {
+ "protocol_id": 0
+ },
+ "minecraft:by_cost_with_difficulty": {
+ "protocol_id": 1
+ },
+ "minecraft:single": {
+ "protocol_id": 2
+ }
+ },
+ "protocol_id": 77
+ },
+ "minecraft:enchantment_value_effect_type": {
+ "entries": {
+ "minecraft:add": {
+ "protocol_id": 0
+ },
+ "minecraft:all_of": {
+ "protocol_id": 1
+ },
+ "minecraft:multiply": {
+ "protocol_id": 2
+ },
+ "minecraft:remove_binomial": {
+ "protocol_id": 3
+ },
+ "minecraft:set": {
+ "protocol_id": 4
+ }
+ },
+ "protocol_id": 76
},
"minecraft:entity_sub_predicate_type": {
"entries": {
@@ -5242,7 +5381,7 @@
"protocol_id": 18
}
},
- "protocol_id": 71
+ "protocol_id": 69
},
"minecraft:entity_type": {
"default": "minecraft:pig",
@@ -5638,7 +5777,7 @@
"protocol_id": 127
}
},
- "protocol_id": 6
+ "protocol_id": 5
},
"minecraft:float_provider_type": {
"entries": {
@@ -5655,7 +5794,7 @@
"protocol_id": 1
}
},
- "protocol_id": 37
+ "protocol_id": 35
},
"minecraft:fluid": {
"default": "minecraft:empty",
@@ -5690,7 +5829,7 @@
"protocol_id": 1
}
},
- "protocol_id": 63
+ "protocol_id": 61
},
"minecraft:game_event": {
"default": "minecraft:step",
@@ -5899,7 +6038,7 @@
"protocol_id": 5
}
},
- "protocol_id": 39
+ "protocol_id": 37
},
"minecraft:instrument": {
"entries": {
@@ -5928,7 +6067,7 @@
"protocol_id": 6
}
},
- "protocol_id": 64
+ "protocol_id": 62
},
"minecraft:int_provider_type": {
"entries": {
@@ -5951,7 +6090,7 @@
"protocol_id": 4
}
},
- "protocol_id": 38
+ "protocol_id": 36
},
"minecraft:item": {
"default": "minecraft:air",
@@ -6023,10 +6162,10 @@
"protocol_id": 86
},
"minecraft:amethyst_cluster": {
- "protocol_id": 1258
+ "protocol_id": 1261
},
"minecraft:amethyst_shard": {
- "protocol_id": 808
+ "protocol_id": 809
},
"minecraft:ancient_debris": {
"protocol_id": 80
@@ -6044,16 +6183,16 @@
"protocol_id": 407
},
"minecraft:angler_pottery_sherd": {
- "protocol_id": 1285
+ "protocol_id": 1288
},
"minecraft:anvil": {
"protocol_id": 419
},
"minecraft:apple": {
- "protocol_id": 799
+ "protocol_id": 800
},
"minecraft:archer_pottery_sherd": {
- "protocol_id": 1286
+ "protocol_id": 1289
},
"minecraft:armadillo_scute": {
"protocol_id": 796
@@ -6065,10 +6204,10 @@
"protocol_id": 1123
},
"minecraft:arms_up_pottery_sherd": {
- "protocol_id": 1287
+ "protocol_id": 1290
},
"minecraft:arrow": {
- "protocol_id": 801
+ "protocol_id": 802
},
"minecraft:axolotl_bucket": {
"protocol_id": 919
@@ -6143,7 +6282,7 @@
"protocol_id": 739
},
"minecraft:barrel": {
- "protocol_id": 1202
+ "protocol_id": 1205
},
"minecraft:barrier": {
"protocol_id": 443
@@ -6161,7 +6300,7 @@
"protocol_id": 56
},
"minecraft:bee_nest": {
- "protocol_id": 1219
+ "protocol_id": 1222
},
"minecraft:bee_spawn_egg": {
"protocol_id": 1012
@@ -6170,7 +6309,7 @@
"protocol_id": 988
},
"minecraft:beehive": {
- "protocol_id": 1220
+ "protocol_id": 1223
},
"minecraft:beetroot": {
"protocol_id": 1154
@@ -6182,7 +6321,7 @@
"protocol_id": 1156
},
"minecraft:bell": {
- "protocol_id": 1210
+ "protocol_id": 1213
},
"minecraft:big_dripleaf": {
"protocol_id": 249
@@ -6245,7 +6384,7 @@
"protocol_id": 979
},
"minecraft:black_candle": {
- "protocol_id": 1254
+ "protocol_id": 1257
},
"minecraft:black_carpet": {
"protocol_id": 461
@@ -6278,22 +6417,22 @@
"protocol_id": 217
},
"minecraft:blackstone": {
- "protocol_id": 1225
+ "protocol_id": 1228
},
"minecraft:blackstone_slab": {
- "protocol_id": 1226
+ "protocol_id": 1229
},
"minecraft:blackstone_stairs": {
- "protocol_id": 1227
+ "protocol_id": 1230
},
"minecraft:blackstone_wall": {
"protocol_id": 412
},
"minecraft:blade_pottery_sherd": {
- "protocol_id": 1288
+ "protocol_id": 1291
},
"minecraft:blast_furnace": {
- "protocol_id": 1204
+ "protocol_id": 1207
},
"minecraft:blaze_powder": {
"protocol_id": 1002
@@ -6311,7 +6450,7 @@
"protocol_id": 975
},
"minecraft:blue_candle": {
- "protocol_id": 1250
+ "protocol_id": 1253
},
"minecraft:blue_carpet": {
"protocol_id": 457
@@ -6353,7 +6492,7 @@
"protocol_id": 1014
},
"minecraft:bolt_armor_trim_smithing_template": {
- "protocol_id": 1284
+ "protocol_id": 1287
},
"minecraft:bone": {
"protocol_id": 961
@@ -6371,10 +6510,10 @@
"protocol_id": 286
},
"minecraft:bow": {
- "protocol_id": 800
+ "protocol_id": 801
},
"minecraft:bowl": {
- "protocol_id": 848
+ "protocol_id": 799
},
"minecraft:brain_coral": {
"protocol_id": 600
@@ -6389,13 +6528,13 @@
"protocol_id": 855
},
"minecraft:breeze_rod": {
- "protocol_id": 1329
+ "protocol_id": 1332
},
"minecraft:breeze_spawn_egg": {
"protocol_id": 1015
},
"minecraft:brewer_pottery_sherd": {
- "protocol_id": 1289
+ "protocol_id": 1292
},
"minecraft:brewing_stand": {
"protocol_id": 1004
@@ -6422,7 +6561,7 @@
"protocol_id": 976
},
"minecraft:brown_candle": {
- "protocol_id": 1251
+ "protocol_id": 1254
},
"minecraft:brown_carpet": {
"protocol_id": 458
@@ -6461,7 +6600,7 @@
"protocol_id": 214
},
"minecraft:brush": {
- "protocol_id": 1265
+ "protocol_id": 1268
},
"minecraft:bubble_coral": {
"protocol_id": 601
@@ -6482,7 +6621,7 @@
"protocol_id": 930
},
"minecraft:burn_pottery_sherd": {
- "protocol_id": 1290
+ "protocol_id": 1293
},
"minecraft:cactus": {
"protocol_id": 308
@@ -6500,10 +6639,10 @@
"protocol_id": 1017
},
"minecraft:campfire": {
- "protocol_id": 1215
+ "protocol_id": 1218
},
"minecraft:candle": {
- "protocol_id": 1238
+ "protocol_id": 1241
},
"minecraft:carrot": {
"protocol_id": 1097
@@ -6512,7 +6651,7 @@
"protocol_id": 771
},
"minecraft:cartography_table": {
- "protocol_id": 1205
+ "protocol_id": 1208
},
"minecraft:carved_pumpkin": {
"protocol_id": 323
@@ -6545,7 +6684,7 @@
"protocol_id": 862
},
"minecraft:charcoal": {
- "protocol_id": 803
+ "protocol_id": 804
},
"minecraft:cherry_boat": {
"protocol_id": 784
@@ -6626,7 +6765,7 @@
"protocol_id": 368
},
"minecraft:chiseled_polished_blackstone": {
- "protocol_id": 1232
+ "protocol_id": 1235
},
"minecraft:chiseled_quartz_block": {
"protocol_id": 422
@@ -6665,7 +6804,7 @@
"protocol_id": 932
},
"minecraft:coal": {
- "protocol_id": 802
+ "protocol_id": 803
},
"minecraft:coal_block": {
"protocol_id": 81
@@ -6677,7 +6816,7 @@
"protocol_id": 29
},
"minecraft:coast_armor_trim_smithing_template": {
- "protocol_id": 1269
+ "protocol_id": 1272
},
"minecraft:cobbled_deepslate": {
"protocol_id": 9
@@ -6731,7 +6870,7 @@
"protocol_id": 928
},
"minecraft:composter": {
- "protocol_id": 1201
+ "protocol_id": 1204
},
"minecraft:conduit": {
"protocol_id": 620
@@ -6764,16 +6903,16 @@
"protocol_id": 89
},
"minecraft:copper_bulb": {
- "protocol_id": 1316
+ "protocol_id": 1319
},
"minecraft:copper_door": {
"protocol_id": 722
},
"minecraft:copper_grate": {
- "protocol_id": 1308
+ "protocol_id": 1311
},
"minecraft:copper_ingot": {
- "protocol_id": 812
+ "protocol_id": 813
},
"minecraft:copper_ore": {
"protocol_id": 66
@@ -6797,7 +6936,7 @@
"protocol_id": 367
},
"minecraft:cracked_polished_blackstone_bricks": {
- "protocol_id": 1236
+ "protocol_id": 1239
},
"minecraft:cracked_stone_bricks": {
"protocol_id": 342
@@ -6809,7 +6948,7 @@
"protocol_id": 300
},
"minecraft:creeper_banner_pattern": {
- "protocol_id": 1193
+ "protocol_id": 1196
},
"minecraft:creeper_head": {
"protocol_id": 1107
@@ -6866,10 +7005,10 @@
"protocol_id": 740
},
"minecraft:crossbow": {
- "protocol_id": 1189
+ "protocol_id": 1192
},
"minecraft:crying_obsidian": {
- "protocol_id": 1224
+ "protocol_id": 1227
},
"minecraft:cut_copper": {
"protocol_id": 100
@@ -6899,7 +7038,7 @@
"protocol_id": 973
},
"minecraft:cyan_candle": {
- "protocol_id": 1248
+ "protocol_id": 1251
},
"minecraft:cyan_carpet": {
"protocol_id": 455
@@ -6938,7 +7077,7 @@
"protocol_id": 218
},
"minecraft:danger_pottery_sherd": {
- "protocol_id": 1291
+ "protocol_id": 1294
},
"minecraft:dark_oak_boat": {
"protocol_id": 786
@@ -7112,10 +7251,10 @@
"protocol_id": 762
},
"minecraft:diamond": {
- "protocol_id": 804
+ "protocol_id": 805
},
"minecraft:diamond_axe": {
- "protocol_id": 840
+ "protocol_id": 841
},
"minecraft:diamond_block": {
"protocol_id": 91
@@ -7130,7 +7269,7 @@
"protocol_id": 868
},
"minecraft:diamond_hoe": {
- "protocol_id": 841
+ "protocol_id": 842
},
"minecraft:diamond_horse_armor": {
"protocol_id": 1126
@@ -7142,13 +7281,13 @@
"protocol_id": 76
},
"minecraft:diamond_pickaxe": {
- "protocol_id": 839
+ "protocol_id": 840
},
"minecraft:diamond_shovel": {
- "protocol_id": 838
+ "protocol_id": 839
},
"minecraft:diamond_sword": {
- "protocol_id": 837
+ "protocol_id": 838
},
"minecraft:diorite": {
"protocol_id": 4
@@ -7169,7 +7308,7 @@
"protocol_id": 464
},
"minecraft:disc_fragment_5": {
- "protocol_id": 1184
+ "protocol_id": 1187
},
"minecraft:dispenser": {
"protocol_id": 668
@@ -7205,10 +7344,10 @@
"protocol_id": 1025
},
"minecraft:dune_armor_trim_smithing_template": {
- "protocol_id": 1268
+ "protocol_id": 1271
},
"minecraft:echo_shard": {
- "protocol_id": 1264
+ "protocol_id": 1267
},
"minecraft:egg": {
"protocol_id": 927
@@ -7220,7 +7359,7 @@
"protocol_id": 773
},
"minecraft:emerald": {
- "protocol_id": 805
+ "protocol_id": 806
},
"minecraft:emerald_block": {
"protocol_id": 382
@@ -7286,7 +7425,7 @@
"protocol_id": 1088
},
"minecraft:explorer_pottery_sherd": {
- "protocol_id": 1292
+ "protocol_id": 1295
},
"minecraft:exposed_chiseled_copper": {
"protocol_id": 97
@@ -7295,13 +7434,13 @@
"protocol_id": 93
},
"minecraft:exposed_copper_bulb": {
- "protocol_id": 1317
+ "protocol_id": 1320
},
"minecraft:exposed_copper_door": {
"protocol_id": 723
},
"minecraft:exposed_copper_grate": {
- "protocol_id": 1309
+ "protocol_id": 1312
},
"minecraft:exposed_copper_trapdoor": {
"protocol_id": 743
@@ -7316,7 +7455,7 @@
"protocol_id": 105
},
"minecraft:eye_armor_trim_smithing_template": {
- "protocol_id": 1272
+ "protocol_id": 1275
},
"minecraft:farmland": {
"protocol_id": 301
@@ -7355,7 +7494,7 @@
"protocol_id": 931
},
"minecraft:fletching_table": {
- "protocol_id": 1206
+ "protocol_id": 1209
},
"minecraft:flint": {
"protocol_id": 880
@@ -7364,16 +7503,16 @@
"protocol_id": 798
},
"minecraft:flow_armor_trim_smithing_template": {
- "protocol_id": 1283
+ "protocol_id": 1286
},
"minecraft:flow_banner_pattern": {
- "protocol_id": 1198
+ "protocol_id": 1201
},
"minecraft:flow_pottery_sherd": {
- "protocol_id": 1293
+ "protocol_id": 1296
},
"minecraft:flower_banner_pattern": {
- "protocol_id": 1192
+ "protocol_id": 1195
},
"minecraft:flower_pot": {
"protocol_id": 1096
@@ -7388,13 +7527,13 @@
"protocol_id": 1031
},
"minecraft:friend_pottery_sherd": {
- "protocol_id": 1294
+ "protocol_id": 1297
},
"minecraft:frog_spawn_egg": {
"protocol_id": 1032
},
"minecraft:frogspawn": {
- "protocol_id": 1263
+ "protocol_id": 1266
},
"minecraft:furnace": {
"protocol_id": 302
@@ -7409,7 +7548,7 @@
"protocol_id": 995
},
"minecraft:gilded_blackstone": {
- "protocol_id": 1228
+ "protocol_id": 1231
},
"minecraft:glass": {
"protocol_id": 188
@@ -7424,10 +7563,10 @@
"protocol_id": 1007
},
"minecraft:globe_banner_pattern": {
- "protocol_id": 1196
+ "protocol_id": 1199
},
"minecraft:glow_berries": {
- "protocol_id": 1214
+ "protocol_id": 1217
},
"minecraft:glow_ink_sac": {
"protocol_id": 942
@@ -7448,7 +7587,7 @@
"protocol_id": 934
},
"minecraft:goat_horn": {
- "protocol_id": 1200
+ "protocol_id": 1203
},
"minecraft:goat_spawn_egg": {
"protocol_id": 1035
@@ -7457,7 +7596,7 @@
"protocol_id": 90
},
"minecraft:gold_ingot": {
- "protocol_id": 814
+ "protocol_id": 815
},
"minecraft:gold_nugget": {
"protocol_id": 996
@@ -7469,7 +7608,7 @@
"protocol_id": 884
},
"minecraft:golden_axe": {
- "protocol_id": 830
+ "protocol_id": 831
},
"minecraft:golden_boots": {
"protocol_id": 875
@@ -7484,7 +7623,7 @@
"protocol_id": 872
},
"minecraft:golden_hoe": {
- "protocol_id": 831
+ "protocol_id": 832
},
"minecraft:golden_horse_armor": {
"protocol_id": 1125
@@ -7493,13 +7632,13 @@
"protocol_id": 874
},
"minecraft:golden_pickaxe": {
- "protocol_id": 829
+ "protocol_id": 830
},
"minecraft:golden_shovel": {
- "protocol_id": 828
+ "protocol_id": 829
},
"minecraft:golden_sword": {
- "protocol_id": 827
+ "protocol_id": 828
},
"minecraft:granite": {
"protocol_id": 2
@@ -7526,7 +7665,7 @@
"protocol_id": 971
},
"minecraft:gray_candle": {
- "protocol_id": 1246
+ "protocol_id": 1249
},
"minecraft:gray_carpet": {
"protocol_id": 453
@@ -7565,7 +7704,7 @@
"protocol_id": 977
},
"minecraft:green_candle": {
- "protocol_id": 1252
+ "protocol_id": 1255
},
"minecraft:green_carpet": {
"protocol_id": 459
@@ -7598,7 +7737,7 @@
"protocol_id": 215
},
"minecraft:grindstone": {
- "protocol_id": 1207
+ "protocol_id": 1210
},
"minecraft:guardian_spawn_egg": {
"protocol_id": 1036
@@ -7607,10 +7746,10 @@
"protocol_id": 852
},
"minecraft:guster_banner_pattern": {
- "protocol_id": 1199
+ "protocol_id": 1202
},
"minecraft:guster_pottery_sherd": {
- "protocol_id": 1295
+ "protocol_id": 1298
},
"minecraft:hanging_roots": {
"protocol_id": 248
@@ -7619,13 +7758,13 @@
"protocol_id": 445
},
"minecraft:heart_of_the_sea": {
- "protocol_id": 1188
+ "protocol_id": 1191
},
"minecraft:heart_pottery_sherd": {
- "protocol_id": 1296
+ "protocol_id": 1299
},
"minecraft:heartbreak_pottery_sherd": {
- "protocol_id": 1297
+ "protocol_id": 1300
},
"minecraft:heavy_core": {
"protocol_id": 85
@@ -7640,13 +7779,13 @@
"protocol_id": 665
},
"minecraft:honey_bottle": {
- "protocol_id": 1221
+ "protocol_id": 1224
},
"minecraft:honeycomb": {
- "protocol_id": 1218
+ "protocol_id": 1221
},
"minecraft:honeycomb_block": {
- "protocol_id": 1222
+ "protocol_id": 1225
},
"minecraft:hopper": {
"protocol_id": 667
@@ -7667,10 +7806,10 @@
"protocol_id": 1038
},
"minecraft:host_armor_trim_smithing_template": {
- "protocol_id": 1282
+ "protocol_id": 1285
},
"minecraft:howl_pottery_sherd": {
- "protocol_id": 1298
+ "protocol_id": 1301
},
"minecraft:husk_spawn_egg": {
"protocol_id": 1039
@@ -7703,7 +7842,7 @@
"protocol_id": 941
},
"minecraft:iron_axe": {
- "protocol_id": 835
+ "protocol_id": 836
},
"minecraft:iron_bars": {
"protocol_id": 355
@@ -7727,13 +7866,13 @@
"protocol_id": 864
},
"minecraft:iron_hoe": {
- "protocol_id": 836
+ "protocol_id": 837
},
"minecraft:iron_horse_armor": {
"protocol_id": 1124
},
"minecraft:iron_ingot": {
- "protocol_id": 810
+ "protocol_id": 811
},
"minecraft:iron_leggings": {
"protocol_id": 866
@@ -7745,13 +7884,13 @@
"protocol_id": 64
},
"minecraft:iron_pickaxe": {
- "protocol_id": 834
+ "protocol_id": 835
},
"minecraft:iron_shovel": {
- "protocol_id": 833
+ "protocol_id": 834
},
"minecraft:iron_sword": {
- "protocol_id": 832
+ "protocol_id": 833
},
"minecraft:iron_trapdoor": {
"protocol_id": 730
@@ -7829,19 +7968,19 @@
"protocol_id": 303
},
"minecraft:lantern": {
- "protocol_id": 1211
+ "protocol_id": 1214
},
"minecraft:lapis_block": {
"protocol_id": 190
},
"minecraft:lapis_lazuli": {
- "protocol_id": 806
+ "protocol_id": 807
},
"minecraft:lapis_ore": {
"protocol_id": 74
},
"minecraft:large_amethyst_bud": {
- "protocol_id": 1257
+ "protocol_id": 1260
},
"minecraft:large_fern": {
"protocol_id": 470
@@ -7886,7 +8025,7 @@
"protocol_id": 967
},
"minecraft:light_blue_candle": {
- "protocol_id": 1242
+ "protocol_id": 1245
},
"minecraft:light_blue_carpet": {
"protocol_id": 449
@@ -7925,7 +8064,7 @@
"protocol_id": 972
},
"minecraft:light_gray_candle": {
- "protocol_id": 1247
+ "protocol_id": 1250
},
"minecraft:light_gray_carpet": {
"protocol_id": 454
@@ -7979,7 +8118,7 @@
"protocol_id": 969
},
"minecraft:lime_candle": {
- "protocol_id": 1244
+ "protocol_id": 1247
},
"minecraft:lime_carpet": {
"protocol_id": 451
@@ -8018,10 +8157,10 @@
"protocol_id": 1041
},
"minecraft:lodestone": {
- "protocol_id": 1223
+ "protocol_id": 1226
},
"minecraft:loom": {
- "protocol_id": 1191
+ "protocol_id": 1194
},
"minecraft:mace": {
"protocol_id": 1093
@@ -8033,7 +8172,7 @@
"protocol_id": 966
},
"minecraft:magenta_candle": {
- "protocol_id": 1241
+ "protocol_id": 1244
},
"minecraft:magenta_carpet": {
"protocol_id": 448
@@ -8132,7 +8271,7 @@
"protocol_id": 1101
},
"minecraft:medium_amethyst_bud": {
- "protocol_id": 1256
+ "protocol_id": 1259
},
"minecraft:melon": {
"protocol_id": 358
@@ -8150,10 +8289,10 @@
"protocol_id": 766
},
"minecraft:miner_pottery_sherd": {
- "protocol_id": 1299
+ "protocol_id": 1302
},
"minecraft:mojang_banner_pattern": {
- "protocol_id": 1195
+ "protocol_id": 1198
},
"minecraft:mooshroom_spawn_egg": {
"protocol_id": 1043
@@ -8189,7 +8328,7 @@
"protocol_id": 341
},
"minecraft:mourner_pottery_sherd": {
- "protocol_id": 1300
+ "protocol_id": 1303
},
"minecraft:mud": {
"protocol_id": 32
@@ -8219,13 +8358,13 @@
"protocol_id": 849
},
"minecraft:music_disc_11": {
- "protocol_id": 1178
+ "protocol_id": 1180
},
"minecraft:music_disc_13": {
"protocol_id": 1168
},
"minecraft:music_disc_5": {
- "protocol_id": 1182
+ "protocol_id": 1184
},
"minecraft:music_disc_blocks": {
"protocol_id": 1170
@@ -8236,35 +8375,44 @@
"minecraft:music_disc_chirp": {
"protocol_id": 1171
},
- "minecraft:music_disc_far": {
+ "minecraft:music_disc_creator": {
"protocol_id": 1172
},
- "minecraft:music_disc_mall": {
+ "minecraft:music_disc_creator_music_box": {
"protocol_id": 1173
},
- "minecraft:music_disc_mellohi": {
+ "minecraft:music_disc_far": {
"protocol_id": 1174
},
- "minecraft:music_disc_otherside": {
- "protocol_id": 1180
- },
- "minecraft:music_disc_pigstep": {
- "protocol_id": 1183
- },
- "minecraft:music_disc_relic": {
- "protocol_id": 1181
- },
- "minecraft:music_disc_stal": {
+ "minecraft:music_disc_mall": {
"protocol_id": 1175
},
- "minecraft:music_disc_strad": {
+ "minecraft:music_disc_mellohi": {
"protocol_id": 1176
},
+ "minecraft:music_disc_otherside": {
+ "protocol_id": 1182
+ },
+ "minecraft:music_disc_pigstep": {
+ "protocol_id": 1185
+ },
+ "minecraft:music_disc_precipice": {
+ "protocol_id": 1186
+ },
+ "minecraft:music_disc_relic": {
+ "protocol_id": 1183
+ },
+ "minecraft:music_disc_stal": {
+ "protocol_id": 1177
+ },
+ "minecraft:music_disc_strad": {
+ "protocol_id": 1178
+ },
"minecraft:music_disc_wait": {
- "protocol_id": 1179
+ "protocol_id": 1181
},
"minecraft:music_disc_ward": {
- "protocol_id": 1177
+ "protocol_id": 1179
},
"minecraft:mutton": {
"protocol_id": 1131
@@ -8276,7 +8424,7 @@
"protocol_id": 1129
},
"minecraft:nautilus_shell": {
- "protocol_id": 1187
+ "protocol_id": 1190
},
"minecraft:nether_brick": {
"protocol_id": 1115
@@ -8315,7 +8463,7 @@
"protocol_id": 517
},
"minecraft:netherite_axe": {
- "protocol_id": 845
+ "protocol_id": 846
},
"minecraft:netherite_block": {
"protocol_id": 92
@@ -8330,28 +8478,28 @@
"protocol_id": 876
},
"minecraft:netherite_hoe": {
- "protocol_id": 846
+ "protocol_id": 847
},
"minecraft:netherite_ingot": {
- "protocol_id": 815
+ "protocol_id": 816
},
"minecraft:netherite_leggings": {
"protocol_id": 878
},
"minecraft:netherite_pickaxe": {
- "protocol_id": 844
+ "protocol_id": 845
},
"minecraft:netherite_scrap": {
- "protocol_id": 816
+ "protocol_id": 817
},
"minecraft:netherite_shovel": {
- "protocol_id": 843
+ "protocol_id": 844
},
"minecraft:netherite_sword": {
- "protocol_id": 842
+ "protocol_id": 843
},
"minecraft:netherite_upgrade_smithing_template": {
- "protocol_id": 1266
+ "protocol_id": 1269
},
"minecraft:netherrack": {
"protocol_id": 325
@@ -8420,13 +8568,13 @@
"protocol_id": 1045
},
"minecraft:ochre_froglight": {
- "protocol_id": 1260
+ "protocol_id": 1263
},
"minecraft:ominous_bottle": {
- "protocol_id": 1328
+ "protocol_id": 1331
},
"minecraft:ominous_trial_key": {
- "protocol_id": 1326
+ "protocol_id": 1329
},
"minecraft:orange_banner": {
"protocol_id": 1134
@@ -8435,7 +8583,7 @@
"protocol_id": 965
},
"minecraft:orange_candle": {
- "protocol_id": 1240
+ "protocol_id": 1243
},
"minecraft:orange_carpet": {
"protocol_id": 447
@@ -8480,13 +8628,13 @@
"protocol_id": 95
},
"minecraft:oxidized_copper_bulb": {
- "protocol_id": 1319
+ "protocol_id": 1322
},
"minecraft:oxidized_copper_door": {
"protocol_id": 725
},
"minecraft:oxidized_copper_grate": {
- "protocol_id": 1311
+ "protocol_id": 1314
},
"minecraft:oxidized_copper_trapdoor": {
"protocol_id": 745
@@ -8519,7 +8667,7 @@
"protocol_id": 1047
},
"minecraft:pearlescent_froglight": {
- "protocol_id": 1262
+ "protocol_id": 1265
},
"minecraft:peony": {
"protocol_id": 468
@@ -8528,7 +8676,7 @@
"protocol_id": 268
},
"minecraft:phantom_membrane": {
- "protocol_id": 1186
+ "protocol_id": 1189
},
"minecraft:phantom_spawn_egg": {
"protocol_id": 1048
@@ -8537,7 +8685,7 @@
"protocol_id": 1049
},
"minecraft:piglin_banner_pattern": {
- "protocol_id": 1197
+ "protocol_id": 1200
},
"minecraft:piglin_brute_spawn_egg": {
"protocol_id": 1051
@@ -8558,7 +8706,7 @@
"protocol_id": 970
},
"minecraft:pink_candle": {
- "protocol_id": 1245
+ "protocol_id": 1248
},
"minecraft:pink_carpet": {
"protocol_id": 452
@@ -8609,13 +8757,13 @@
"protocol_id": 1105
},
"minecraft:plenty_pottery_sherd": {
- "protocol_id": 1301
+ "protocol_id": 1304
},
"minecraft:podzol": {
"protocol_id": 30
},
"minecraft:pointed_dripstone": {
- "protocol_id": 1259
+ "protocol_id": 1262
},
"minecraft:poisonous_potato": {
"protocol_id": 1100
@@ -8636,19 +8784,19 @@
"protocol_id": 329
},
"minecraft:polished_blackstone": {
- "protocol_id": 1229
+ "protocol_id": 1232
},
"minecraft:polished_blackstone_brick_slab": {
- "protocol_id": 1234
+ "protocol_id": 1237
},
"minecraft:polished_blackstone_brick_stairs": {
- "protocol_id": 1235
+ "protocol_id": 1238
},
"minecraft:polished_blackstone_brick_wall": {
"protocol_id": 414
},
"minecraft:polished_blackstone_bricks": {
- "protocol_id": 1233
+ "protocol_id": 1236
},
"minecraft:polished_blackstone_button": {
"protocol_id": 683
@@ -8657,10 +8805,10 @@
"protocol_id": 696
},
"minecraft:polished_blackstone_slab": {
- "protocol_id": 1230
+ "protocol_id": 1233
},
"minecraft:polished_blackstone_stairs": {
- "protocol_id": 1231
+ "protocol_id": 1234
},
"minecraft:polished_blackstone_wall": {
"protocol_id": 413
@@ -8756,7 +8904,7 @@
"protocol_id": 400
},
"minecraft:prize_pottery_sherd": {
- "protocol_id": 1302
+ "protocol_id": 1305
},
"minecraft:pufferfish": {
"protocol_id": 938
@@ -8783,7 +8931,7 @@
"protocol_id": 974
},
"minecraft:purple_candle": {
- "protocol_id": 1249
+ "protocol_id": 1252
},
"minecraft:purple_carpet": {
"protocol_id": 456
@@ -8828,7 +8976,7 @@
"protocol_id": 297
},
"minecraft:quartz": {
- "protocol_id": 807
+ "protocol_id": 808
},
"minecraft:quartz_block": {
"protocol_id": 423
@@ -8864,25 +9012,25 @@
"protocol_id": 763
},
"minecraft:raiser_armor_trim_smithing_template": {
- "protocol_id": 1281
+ "protocol_id": 1284
},
"minecraft:ravager_spawn_egg": {
"protocol_id": 1056
},
"minecraft:raw_copper": {
- "protocol_id": 811
+ "protocol_id": 812
},
"minecraft:raw_copper_block": {
"protocol_id": 83
},
"minecraft:raw_gold": {
- "protocol_id": 813
+ "protocol_id": 814
},
"minecraft:raw_gold_block": {
"protocol_id": 84
},
"minecraft:raw_iron": {
- "protocol_id": 809
+ "protocol_id": 810
},
"minecraft:raw_iron_block": {
"protocol_id": 82
@@ -8897,7 +9045,7 @@
"protocol_id": 978
},
"minecraft:red_candle": {
- "protocol_id": 1253
+ "protocol_id": 1256
},
"minecraft:red_carpet": {
"protocol_id": 460
@@ -8990,10 +9138,10 @@
"protocol_id": 514
},
"minecraft:respawn_anchor": {
- "protocol_id": 1237
+ "protocol_id": 1240
},
"minecraft:rib_armor_trim_smithing_template": {
- "protocol_id": 1276
+ "protocol_id": 1279
},
"minecraft:rooted_dirt": {
"protocol_id": 31
@@ -9035,7 +9183,7 @@
"protocol_id": 656
},
"minecraft:scrape_pottery_sherd": {
- "protocol_id": 1303
+ "protocol_id": 1306
},
"minecraft:sculk": {
"protocol_id": 371
@@ -9062,13 +9210,13 @@
"protocol_id": 200
},
"minecraft:sentry_armor_trim_smithing_template": {
- "protocol_id": 1267
+ "protocol_id": 1270
},
"minecraft:shaper_armor_trim_smithing_template": {
- "protocol_id": 1279
+ "protocol_id": 1282
},
"minecraft:sheaf_pottery_sherd": {
- "protocol_id": 1304
+ "protocol_id": 1307
},
"minecraft:shears": {
"protocol_id": 983
@@ -9077,7 +9225,7 @@
"protocol_id": 1058
},
"minecraft:shelter_pottery_sherd": {
- "protocol_id": 1305
+ "protocol_id": 1308
},
"minecraft:shield": {
"protocol_id": 1162
@@ -9086,7 +9234,7 @@
"protocol_id": 195
},
"minecraft:shroomlight": {
- "protocol_id": 1217
+ "protocol_id": 1220
},
"minecraft:shulker_box": {
"protocol_id": 522
@@ -9098,7 +9246,7 @@
"protocol_id": 1059
},
"minecraft:silence_armor_trim_smithing_template": {
- "protocol_id": 1280
+ "protocol_id": 1283
},
"minecraft:silverfish_spawn_egg": {
"protocol_id": 1060
@@ -9113,10 +9261,10 @@
"protocol_id": 1061
},
"minecraft:skull_banner_pattern": {
- "protocol_id": 1194
+ "protocol_id": 1197
},
"minecraft:skull_pottery_sherd": {
- "protocol_id": 1306
+ "protocol_id": 1309
},
"minecraft:slime_ball": {
"protocol_id": 926
@@ -9128,16 +9276,16 @@
"protocol_id": 1063
},
"minecraft:small_amethyst_bud": {
- "protocol_id": 1255
+ "protocol_id": 1258
},
"minecraft:small_dripleaf": {
"protocol_id": 250
},
"minecraft:smithing_table": {
- "protocol_id": 1208
+ "protocol_id": 1211
},
"minecraft:smoker": {
- "protocol_id": 1203
+ "protocol_id": 1206
},
"minecraft:smooth_basalt": {
"protocol_id": 330
@@ -9182,10 +9330,10 @@
"protocol_id": 1064
},
"minecraft:snort_pottery_sherd": {
- "protocol_id": 1307
+ "protocol_id": 1310
},
"minecraft:snout_armor_trim_smithing_template": {
- "protocol_id": 1275
+ "protocol_id": 1278
},
"minecraft:snow": {
"protocol_id": 305
@@ -9200,10 +9348,10 @@
"protocol_id": 912
},
"minecraft:soul_campfire": {
- "protocol_id": 1216
+ "protocol_id": 1219
},
"minecraft:soul_lantern": {
- "protocol_id": 1212
+ "protocol_id": 1215
},
"minecraft:soul_sand": {
"protocol_id": 326
@@ -9227,7 +9375,7 @@
"protocol_id": 1066
},
"minecraft:spire_armor_trim_smithing_template": {
- "protocol_id": 1277
+ "protocol_id": 1280
},
"minecraft:splash_potion": {
"protocol_id": 1158
@@ -9296,7 +9444,7 @@
"protocol_id": 1067
},
"minecraft:stick": {
- "protocol_id": 847
+ "protocol_id": 848
},
"minecraft:sticky_piston": {
"protocol_id": 663
@@ -9305,7 +9453,7 @@
"protocol_id": 1
},
"minecraft:stone_axe": {
- "protocol_id": 825
+ "protocol_id": 826
},
"minecraft:stone_brick_slab": {
"protocol_id": 271
@@ -9323,16 +9471,16 @@
"protocol_id": 682
},
"minecraft:stone_hoe": {
- "protocol_id": 826
+ "protocol_id": 827
},
"minecraft:stone_pickaxe": {
- "protocol_id": 824
+ "protocol_id": 825
},
"minecraft:stone_pressure_plate": {
"protocol_id": 695
},
"minecraft:stone_shovel": {
- "protocol_id": 823
+ "protocol_id": 824
},
"minecraft:stone_slab": {
"protocol_id": 264
@@ -9341,10 +9489,10 @@
"protocol_id": 627
},
"minecraft:stone_sword": {
- "protocol_id": 822
+ "protocol_id": 823
},
"minecraft:stonecutter": {
- "protocol_id": 1209
+ "protocol_id": 1212
},
"minecraft:stray_spawn_egg": {
"protocol_id": 1068
@@ -9440,10 +9588,10 @@
"protocol_id": 58
},
"minecraft:suspicious_stew": {
- "protocol_id": 1190
+ "protocol_id": 1193
},
"minecraft:sweet_berries": {
- "protocol_id": 1213
+ "protocol_id": 1216
},
"minecraft:tadpole_bucket": {
"protocol_id": 920
@@ -9461,7 +9609,7 @@
"protocol_id": 462
},
"minecraft:tide_armor_trim_smithing_template": {
- "protocol_id": 1274
+ "protocol_id": 1277
},
"minecraft:tinted_glass": {
"protocol_id": 189
@@ -9494,13 +9642,13 @@
"protocol_id": 678
},
"minecraft:trial_key": {
- "protocol_id": 1325
+ "protocol_id": 1328
},
"minecraft:trial_spawner": {
- "protocol_id": 1324
+ "protocol_id": 1327
},
"minecraft:trident": {
- "protocol_id": 1185
+ "protocol_id": 1188
},
"minecraft:tripwire_hook": {
"protocol_id": 677
@@ -9563,13 +9711,13 @@
"protocol_id": 242
},
"minecraft:vault": {
- "protocol_id": 1327
+ "protocol_id": 1330
},
"minecraft:verdant_froglight": {
- "protocol_id": 1261
+ "protocol_id": 1264
},
"minecraft:vex_armor_trim_smithing_template": {
- "protocol_id": 1273
+ "protocol_id": 1276
},
"minecraft:vex_spawn_egg": {
"protocol_id": 1074
@@ -9587,7 +9735,7 @@
"protocol_id": 1077
},
"minecraft:ward_armor_trim_smithing_template": {
- "protocol_id": 1271
+ "protocol_id": 1274
},
"minecraft:warden_spawn_egg": {
"protocol_id": 1078
@@ -9656,13 +9804,13 @@
"protocol_id": 112
},
"minecraft:waxed_copper_bulb": {
- "protocol_id": 1320
+ "protocol_id": 1323
},
"minecraft:waxed_copper_door": {
"protocol_id": 726
},
"minecraft:waxed_copper_grate": {
- "protocol_id": 1312
+ "protocol_id": 1315
},
"minecraft:waxed_copper_trapdoor": {
"protocol_id": 746
@@ -9683,13 +9831,13 @@
"protocol_id": 113
},
"minecraft:waxed_exposed_copper_bulb": {
- "protocol_id": 1321
+ "protocol_id": 1324
},
"minecraft:waxed_exposed_copper_door": {
"protocol_id": 727
},
"minecraft:waxed_exposed_copper_grate": {
- "protocol_id": 1313
+ "protocol_id": 1316
},
"minecraft:waxed_exposed_copper_trapdoor": {
"protocol_id": 747
@@ -9710,13 +9858,13 @@
"protocol_id": 115
},
"minecraft:waxed_oxidized_copper_bulb": {
- "protocol_id": 1323
+ "protocol_id": 1326
},
"minecraft:waxed_oxidized_copper_door": {
"protocol_id": 729
},
"minecraft:waxed_oxidized_copper_grate": {
- "protocol_id": 1315
+ "protocol_id": 1318
},
"minecraft:waxed_oxidized_copper_trapdoor": {
"protocol_id": 749
@@ -9737,13 +9885,13 @@
"protocol_id": 114
},
"minecraft:waxed_weathered_copper_bulb": {
- "protocol_id": 1322
+ "protocol_id": 1325
},
"minecraft:waxed_weathered_copper_door": {
"protocol_id": 728
},
"minecraft:waxed_weathered_copper_grate": {
- "protocol_id": 1314
+ "protocol_id": 1317
},
"minecraft:waxed_weathered_copper_trapdoor": {
"protocol_id": 748
@@ -9758,7 +9906,7 @@
"protocol_id": 126
},
"minecraft:wayfinder_armor_trim_smithing_template": {
- "protocol_id": 1278
+ "protocol_id": 1281
},
"minecraft:weathered_chiseled_copper": {
"protocol_id": 98
@@ -9767,13 +9915,13 @@
"protocol_id": 94
},
"minecraft:weathered_copper_bulb": {
- "protocol_id": 1318
+ "protocol_id": 1321
},
"minecraft:weathered_copper_door": {
"protocol_id": 724
},
"minecraft:weathered_copper_grate": {
- "protocol_id": 1310
+ "protocol_id": 1313
},
"minecraft:weathered_copper_trapdoor": {
"protocol_id": 744
@@ -9806,7 +9954,7 @@
"protocol_id": 964
},
"minecraft:white_candle": {
- "protocol_id": 1239
+ "protocol_id": 1242
},
"minecraft:white_carpet": {
"protocol_id": 446
@@ -9842,7 +9990,7 @@
"protocol_id": 202
},
"minecraft:wild_armor_trim_smithing_template": {
- "protocol_id": 1270
+ "protocol_id": 1273
},
"minecraft:wind_charge": {
"protocol_id": 1090
@@ -9869,19 +10017,19 @@
"protocol_id": 1082
},
"minecraft:wooden_axe": {
- "protocol_id": 820
- },
- "minecraft:wooden_hoe": {
"protocol_id": 821
},
+ "minecraft:wooden_hoe": {
+ "protocol_id": 822
+ },
"minecraft:wooden_pickaxe": {
- "protocol_id": 819
+ "protocol_id": 820
},
"minecraft:wooden_shovel": {
- "protocol_id": 818
+ "protocol_id": 819
},
"minecraft:wooden_sword": {
- "protocol_id": 817
+ "protocol_id": 818
},
"minecraft:writable_book": {
"protocol_id": 1091
@@ -9896,7 +10044,7 @@
"protocol_id": 968
},
"minecraft:yellow_candle": {
- "protocol_id": 1243
+ "protocol_id": 1246
},
"minecraft:yellow_carpet": {
"protocol_id": 450
@@ -9947,7 +10095,7 @@
"protocol_id": 1087
}
},
- "protocol_id": 7
+ "protocol_id": 6
},
"minecraft:item_sub_predicate_type": {
"entries": {
@@ -9975,6 +10123,9 @@
"minecraft:fireworks": {
"protocol_id": 8
},
+ "minecraft:jukebox_playable": {
+ "protocol_id": 13
+ },
"minecraft:potion_contents": {
"protocol_id": 3
},
@@ -9991,7 +10142,7 @@
"protocol_id": 10
}
},
- "protocol_id": 72
+ "protocol_id": 70
},
"minecraft:loot_condition_type": {
"entries": {
@@ -10007,6 +10158,9 @@
"minecraft:damage_source_properties": {
"protocol_id": 12
},
+ "minecraft:enchantment_active_check": {
+ "protocol_id": 18
+ },
"minecraft:entity_properties": {
"protocol_id": 5
},
@@ -10028,7 +10182,7 @@
"minecraft:random_chance": {
"protocol_id": 3
},
- "minecraft:random_chance_with_looting": {
+ "minecraft:random_chance_with_enchanted_bonus": {
"protocol_id": 4
},
"minecraft:reference": {
@@ -10050,7 +10204,7 @@
"protocol_id": 14
}
},
- "protocol_id": 33
+ "protocol_id": 31
},
"minecraft:loot_function_type": {
"entries": {
@@ -10075,6 +10229,9 @@
"minecraft:enchant_with_levels": {
"protocol_id": 2
},
+ "minecraft:enchanted_count_increase": {
+ "protocol_id": 8
+ },
"minecraft:exploration_map": {
"protocol_id": 12
},
@@ -10093,9 +10250,6 @@
"minecraft:limit_count": {
"protocol_id": 18
},
- "minecraft:looting_enchant": {
- "protocol_id": 8
- },
"minecraft:modify_contents": {
"protocol_id": 16
},
@@ -10175,7 +10329,7 @@
"protocol_id": 37
}
},
- "protocol_id": 32
+ "protocol_id": 30
},
"minecraft:loot_nbt_provider_type": {
"entries": {
@@ -10186,7 +10340,7 @@
"protocol_id": 0
}
},
- "protocol_id": 35
+ "protocol_id": 33
},
"minecraft:loot_number_provider_type": {
"entries": {
@@ -10196,6 +10350,9 @@
"minecraft:constant": {
"protocol_id": 0
},
+ "minecraft:enchantment_level": {
+ "protocol_id": 5
+ },
"minecraft:score": {
"protocol_id": 3
},
@@ -10206,7 +10363,7 @@
"protocol_id": 1
}
},
- "protocol_id": 34
+ "protocol_id": 32
},
"minecraft:loot_pool_entry_type": {
"entries": {
@@ -10235,7 +10392,7 @@
"protocol_id": 4
}
},
- "protocol_id": 31
+ "protocol_id": 29
},
"minecraft:loot_score_provider_type": {
"entries": {
@@ -10246,7 +10403,7 @@
"protocol_id": 0
}
},
- "protocol_id": 36
+ "protocol_id": 34
},
"minecraft:map_decoration_type": {
"entries": {
@@ -10356,7 +10513,7 @@
"protocol_id": 31
}
},
- "protocol_id": 73
+ "protocol_id": 71
},
"minecraft:memory_module_type": {
"default": "minecraft:dummy",
@@ -10680,7 +10837,7 @@
"protocol_id": 12
}
},
- "protocol_id": 27
+ "protocol_id": 25
},
"minecraft:menu": {
"entries": {
@@ -10760,7 +10917,7 @@
"protocol_id": 24
}
},
- "protocol_id": 17
+ "protocol_id": 15
},
"minecraft:mob_effect": {
"entries": {
@@ -10896,103 +11053,7 @@
"protocol_id": 1
}
},
- "protocol_id": 68
- },
- "minecraft:painting_variant": {
- "default": "minecraft:kebab",
- "entries": {
- "minecraft:alban": {
- "protocol_id": 2
- },
- "minecraft:aztec": {
- "protocol_id": 1
- },
- "minecraft:aztec2": {
- "protocol_id": 3
- },
- "minecraft:bomb": {
- "protocol_id": 4
- },
- "minecraft:burning_skull": {
- "protocol_id": 23
- },
- "minecraft:bust": {
- "protocol_id": 15
- },
- "minecraft:courbet": {
- "protocol_id": 8
- },
- "minecraft:creebet": {
- "protocol_id": 11
- },
- "minecraft:donkey_kong": {
- "protocol_id": 29
- },
- "minecraft:earth": {
- "protocol_id": 25
- },
- "minecraft:fighters": {
- "protocol_id": 20
- },
- "minecraft:fire": {
- "protocol_id": 28
- },
- "minecraft:graham": {
- "protocol_id": 13
- },
- "minecraft:kebab": {
- "protocol_id": 0
- },
- "minecraft:match": {
- "protocol_id": 14
- },
- "minecraft:pigscene": {
- "protocol_id": 22
- },
- "minecraft:plant": {
- "protocol_id": 5
- },
- "minecraft:pointer": {
- "protocol_id": 21
- },
- "minecraft:pool": {
- "protocol_id": 7
- },
- "minecraft:sea": {
- "protocol_id": 9
- },
- "minecraft:skeleton": {
- "protocol_id": 24
- },
- "minecraft:skull_and_roses": {
- "protocol_id": 18
- },
- "minecraft:stage": {
- "protocol_id": 16
- },
- "minecraft:sunset": {
- "protocol_id": 10
- },
- "minecraft:void": {
- "protocol_id": 17
- },
- "minecraft:wanderer": {
- "protocol_id": 12
- },
- "minecraft:wasteland": {
- "protocol_id": 6
- },
- "minecraft:water": {
- "protocol_id": 27
- },
- "minecraft:wind": {
- "protocol_id": 26
- },
- "minecraft:wither": {
- "protocol_id": 19
- }
- },
- "protocol_id": 11
+ "protocol_id": 66
},
"minecraft:particle_type": {
"entries": {
@@ -11324,7 +11385,7 @@
"protocol_id": 65
}
},
- "protocol_id": 9
+ "protocol_id": 8
},
"minecraft:point_of_interest_type": {
"entries": {
@@ -11389,7 +11450,7 @@
"protocol_id": 12
}
},
- "protocol_id": 26
+ "protocol_id": 24
},
"minecraft:pos_rule_test": {
"entries": {
@@ -11403,7 +11464,7 @@
"protocol_id": 1
}
},
- "protocol_id": 16
+ "protocol_id": 14
},
"minecraft:position_source_type": {
"entries": {
@@ -11414,7 +11475,7 @@
"protocol_id": 1
}
},
- "protocol_id": 21
+ "protocol_id": 19
},
"minecraft:potion": {
"entries": {
@@ -11557,7 +11618,7 @@
"protocol_id": 42
}
},
- "protocol_id": 8
+ "protocol_id": 7
},
"minecraft:recipe_serializer": {
"entries": {
@@ -11631,7 +11692,7 @@
"protocol_id": 19
}
},
- "protocol_id": 19
+ "protocol_id": 17
},
"minecraft:recipe_type": {
"entries": {
@@ -11657,7 +11718,7 @@
"protocol_id": 5
}
},
- "protocol_id": 18
+ "protocol_id": 16
},
"minecraft:rule_block_entity_modifier": {
"entries": {
@@ -11674,7 +11735,7 @@
"protocol_id": 1
}
},
- "protocol_id": 15
+ "protocol_id": 13
},
"minecraft:rule_test": {
"entries": {
@@ -11697,7 +11758,7 @@
"protocol_id": 3
}
},
- "protocol_id": 14
+ "protocol_id": 12
},
"minecraft:schedule": {
"entries": {
@@ -11714,7 +11775,7 @@
"protocol_id": 3
}
},
- "protocol_id": 29
+ "protocol_id": 27
},
"minecraft:sensor_type": {
"default": "minecraft:dummy",
@@ -11798,7 +11859,7 @@
"protocol_id": 23
}
},
- "protocol_id": 28
+ "protocol_id": 26
},
"minecraft:sound_event": {
"entries": {
@@ -12679,19 +12740,19 @@
"protocol_id": 551
},
"minecraft:block.fungus.break": {
- "protocol_id": 958
- },
- "minecraft:block.fungus.fall": {
- "protocol_id": 962
- },
- "minecraft:block.fungus.hit": {
"protocol_id": 961
},
+ "minecraft:block.fungus.fall": {
+ "protocol_id": 965
+ },
+ "minecraft:block.fungus.hit": {
+ "protocol_id": 964
+ },
"minecraft:block.fungus.place": {
- "protocol_id": 960
+ "protocol_id": 963
},
"minecraft:block.fungus.step": {
- "protocol_id": 959
+ "protocol_id": 962
},
"minecraft:block.furnace.fire_crackle": {
"protocol_id": 570
@@ -12793,7 +12854,7 @@
"protocol_id": 653
},
"minecraft:block.hanging_sign.waxed_interact_fail": {
- "protocol_id": 1510
+ "protocol_id": 1514
},
"minecraft:block.heavy_core.break": {
"protocol_id": 658
@@ -12889,7 +12950,7 @@
"protocol_id": 780
},
"minecraft:block.lily_pad.place": {
- "protocol_id": 1479
+ "protocol_id": 1483
},
"minecraft:block.lodestone.break": {
"protocol_id": 794
@@ -13024,100 +13085,100 @@
"protocol_id": 860
},
"minecraft:block.nether_bricks.break": {
- "protocol_id": 915
- },
- "minecraft:block.nether_bricks.fall": {
- "protocol_id": 919
- },
- "minecraft:block.nether_bricks.hit": {
"protocol_id": 918
},
- "minecraft:block.nether_bricks.place": {
- "protocol_id": 917
- },
- "minecraft:block.nether_bricks.step": {
- "protocol_id": 916
- },
- "minecraft:block.nether_gold_ore.break": {
- "protocol_id": 1158
- },
- "minecraft:block.nether_gold_ore.fall": {
- "protocol_id": 1159
- },
- "minecraft:block.nether_gold_ore.hit": {
- "protocol_id": 1160
- },
- "minecraft:block.nether_gold_ore.place": {
- "protocol_id": 1161
- },
- "minecraft:block.nether_gold_ore.step": {
- "protocol_id": 1162
- },
- "minecraft:block.nether_ore.break": {
- "protocol_id": 1163
- },
- "minecraft:block.nether_ore.fall": {
- "protocol_id": 1164
- },
- "minecraft:block.nether_ore.hit": {
- "protocol_id": 1165
- },
- "minecraft:block.nether_ore.place": {
- "protocol_id": 1166
- },
- "minecraft:block.nether_ore.step": {
- "protocol_id": 1167
- },
- "minecraft:block.nether_sprouts.break": {
- "protocol_id": 953
- },
- "minecraft:block.nether_sprouts.fall": {
- "protocol_id": 957
- },
- "minecraft:block.nether_sprouts.hit": {
- "protocol_id": 956
- },
- "minecraft:block.nether_sprouts.place": {
- "protocol_id": 955
- },
- "minecraft:block.nether_sprouts.step": {
- "protocol_id": 954
- },
- "minecraft:block.nether_wart.break": {
- "protocol_id": 920
- },
- "minecraft:block.nether_wood.break": {
+ "minecraft:block.nether_bricks.fall": {
"protocol_id": 922
},
- "minecraft:block.nether_wood.fall": {
+ "minecraft:block.nether_bricks.hit": {
+ "protocol_id": 921
+ },
+ "minecraft:block.nether_bricks.place": {
+ "protocol_id": 920
+ },
+ "minecraft:block.nether_bricks.step": {
+ "protocol_id": 919
+ },
+ "minecraft:block.nether_gold_ore.break": {
+ "protocol_id": 1161
+ },
+ "minecraft:block.nether_gold_ore.fall": {
+ "protocol_id": 1162
+ },
+ "minecraft:block.nether_gold_ore.hit": {
+ "protocol_id": 1163
+ },
+ "minecraft:block.nether_gold_ore.place": {
+ "protocol_id": 1164
+ },
+ "minecraft:block.nether_gold_ore.step": {
+ "protocol_id": 1165
+ },
+ "minecraft:block.nether_ore.break": {
+ "protocol_id": 1166
+ },
+ "minecraft:block.nether_ore.fall": {
+ "protocol_id": 1167
+ },
+ "minecraft:block.nether_ore.hit": {
+ "protocol_id": 1168
+ },
+ "minecraft:block.nether_ore.place": {
+ "protocol_id": 1169
+ },
+ "minecraft:block.nether_ore.step": {
+ "protocol_id": 1170
+ },
+ "minecraft:block.nether_sprouts.break": {
+ "protocol_id": 956
+ },
+ "minecraft:block.nether_sprouts.fall": {
+ "protocol_id": 960
+ },
+ "minecraft:block.nether_sprouts.hit": {
+ "protocol_id": 959
+ },
+ "minecraft:block.nether_sprouts.place": {
+ "protocol_id": 958
+ },
+ "minecraft:block.nether_sprouts.step": {
+ "protocol_id": 957
+ },
+ "minecraft:block.nether_wart.break": {
"protocol_id": 923
},
- "minecraft:block.nether_wood.hit": {
- "protocol_id": 924
- },
- "minecraft:block.nether_wood.place": {
+ "minecraft:block.nether_wood.break": {
"protocol_id": 925
},
- "minecraft:block.nether_wood.step": {
+ "minecraft:block.nether_wood.fall": {
"protocol_id": 926
},
- "minecraft:block.nether_wood_button.click_off": {
- "protocol_id": 931
- },
- "minecraft:block.nether_wood_button.click_on": {
- "protocol_id": 932
- },
- "minecraft:block.nether_wood_door.close": {
+ "minecraft:block.nether_wood.hit": {
"protocol_id": 927
},
- "minecraft:block.nether_wood_door.open": {
+ "minecraft:block.nether_wood.place": {
"protocol_id": 928
},
- "minecraft:block.nether_wood_fence_gate.close": {
+ "minecraft:block.nether_wood.step": {
+ "protocol_id": 929
+ },
+ "minecraft:block.nether_wood_button.click_off": {
+ "protocol_id": 934
+ },
+ "minecraft:block.nether_wood_button.click_on": {
"protocol_id": 935
},
+ "minecraft:block.nether_wood_door.close": {
+ "protocol_id": 930
+ },
+ "minecraft:block.nether_wood_door.open": {
+ "protocol_id": 931
+ },
+ "minecraft:block.nether_wood_fence_gate.close": {
+ "protocol_id": 938
+ },
"minecraft:block.nether_wood_fence_gate.open": {
- "protocol_id": 936
+ "protocol_id": 939
},
"minecraft:block.nether_wood_hanging_sign.break": {
"protocol_id": 664
@@ -13135,143 +13196,143 @@
"protocol_id": 663
},
"minecraft:block.nether_wood_pressure_plate.click_off": {
- "protocol_id": 933
+ "protocol_id": 936
},
"minecraft:block.nether_wood_pressure_plate.click_on": {
- "protocol_id": 934
+ "protocol_id": 937
},
"minecraft:block.nether_wood_trapdoor.close": {
- "protocol_id": 929
+ "protocol_id": 932
},
"minecraft:block.nether_wood_trapdoor.open": {
- "protocol_id": 930
+ "protocol_id": 933
},
"minecraft:block.netherite_block.break": {
- "protocol_id": 973
- },
- "minecraft:block.netherite_block.fall": {
- "protocol_id": 977
- },
- "minecraft:block.netherite_block.hit": {
"protocol_id": 976
},
- "minecraft:block.netherite_block.place": {
- "protocol_id": 975
- },
- "minecraft:block.netherite_block.step": {
- "protocol_id": 974
- },
- "minecraft:block.netherrack.break": {
- "protocol_id": 978
- },
- "minecraft:block.netherrack.fall": {
- "protocol_id": 982
- },
- "minecraft:block.netherrack.hit": {
- "protocol_id": 981
- },
- "minecraft:block.netherrack.place": {
+ "minecraft:block.netherite_block.fall": {
"protocol_id": 980
},
- "minecraft:block.netherrack.step": {
+ "minecraft:block.netherite_block.hit": {
"protocol_id": 979
},
- "minecraft:block.note_block.banjo": {
- "protocol_id": 998
+ "minecraft:block.netherite_block.place": {
+ "protocol_id": 978
},
- "minecraft:block.note_block.basedrum": {
- "protocol_id": 983
+ "minecraft:block.netherite_block.step": {
+ "protocol_id": 977
},
- "minecraft:block.note_block.bass": {
- "protocol_id": 984
+ "minecraft:block.netherrack.break": {
+ "protocol_id": 981
},
- "minecraft:block.note_block.bell": {
+ "minecraft:block.netherrack.fall": {
"protocol_id": 985
},
- "minecraft:block.note_block.bit": {
- "protocol_id": 997
+ "minecraft:block.netherrack.hit": {
+ "protocol_id": 984
},
- "minecraft:block.note_block.chime": {
- "protocol_id": 986
+ "minecraft:block.netherrack.place": {
+ "protocol_id": 983
},
- "minecraft:block.note_block.cow_bell": {
- "protocol_id": 995
+ "minecraft:block.netherrack.step": {
+ "protocol_id": 982
},
- "minecraft:block.note_block.didgeridoo": {
- "protocol_id": 996
- },
- "minecraft:block.note_block.flute": {
- "protocol_id": 987
- },
- "minecraft:block.note_block.guitar": {
- "protocol_id": 988
- },
- "minecraft:block.note_block.harp": {
- "protocol_id": 989
- },
- "minecraft:block.note_block.hat": {
- "protocol_id": 990
- },
- "minecraft:block.note_block.imitate.creeper": {
+ "minecraft:block.note_block.banjo": {
"protocol_id": 1001
},
- "minecraft:block.note_block.imitate.ender_dragon": {
- "protocol_id": 1002
+ "minecraft:block.note_block.basedrum": {
+ "protocol_id": 986
},
- "minecraft:block.note_block.imitate.piglin": {
- "protocol_id": 1004
+ "minecraft:block.note_block.bass": {
+ "protocol_id": 987
},
- "minecraft:block.note_block.imitate.skeleton": {
+ "minecraft:block.note_block.bell": {
+ "protocol_id": 988
+ },
+ "minecraft:block.note_block.bit": {
"protocol_id": 1000
},
- "minecraft:block.note_block.imitate.wither_skeleton": {
- "protocol_id": 1003
+ "minecraft:block.note_block.chime": {
+ "protocol_id": 989
},
- "minecraft:block.note_block.imitate.zombie": {
+ "minecraft:block.note_block.cow_bell": {
+ "protocol_id": 998
+ },
+ "minecraft:block.note_block.didgeridoo": {
"protocol_id": 999
},
- "minecraft:block.note_block.iron_xylophone": {
- "protocol_id": 994
+ "minecraft:block.note_block.flute": {
+ "protocol_id": 990
},
- "minecraft:block.note_block.pling": {
+ "minecraft:block.note_block.guitar": {
"protocol_id": 991
},
- "minecraft:block.note_block.snare": {
+ "minecraft:block.note_block.harp": {
"protocol_id": 992
},
- "minecraft:block.note_block.xylophone": {
+ "minecraft:block.note_block.hat": {
"protocol_id": 993
},
+ "minecraft:block.note_block.imitate.creeper": {
+ "protocol_id": 1004
+ },
+ "minecraft:block.note_block.imitate.ender_dragon": {
+ "protocol_id": 1005
+ },
+ "minecraft:block.note_block.imitate.piglin": {
+ "protocol_id": 1007
+ },
+ "minecraft:block.note_block.imitate.skeleton": {
+ "protocol_id": 1003
+ },
+ "minecraft:block.note_block.imitate.wither_skeleton": {
+ "protocol_id": 1006
+ },
+ "minecraft:block.note_block.imitate.zombie": {
+ "protocol_id": 1002
+ },
+ "minecraft:block.note_block.iron_xylophone": {
+ "protocol_id": 997
+ },
+ "minecraft:block.note_block.pling": {
+ "protocol_id": 994
+ },
+ "minecraft:block.note_block.snare": {
+ "protocol_id": 995
+ },
+ "minecraft:block.note_block.xylophone": {
+ "protocol_id": 996
+ },
"minecraft:block.nylium.break": {
- "protocol_id": 948
- },
- "minecraft:block.nylium.fall": {
- "protocol_id": 952
- },
- "minecraft:block.nylium.hit": {
"protocol_id": 951
},
+ "minecraft:block.nylium.fall": {
+ "protocol_id": 955
+ },
+ "minecraft:block.nylium.hit": {
+ "protocol_id": 954
+ },
"minecraft:block.nylium.place": {
- "protocol_id": 950
+ "protocol_id": 953
},
"minecraft:block.nylium.step": {
- "protocol_id": 949
+ "protocol_id": 952
},
"minecraft:block.packed_mud.break": {
- "protocol_id": 938
- },
- "minecraft:block.packed_mud.fall": {
- "protocol_id": 939
- },
- "minecraft:block.packed_mud.hit": {
- "protocol_id": 940
- },
- "minecraft:block.packed_mud.place": {
"protocol_id": 941
},
- "minecraft:block.packed_mud.step": {
+ "minecraft:block.packed_mud.fall": {
"protocol_id": 942
},
+ "minecraft:block.packed_mud.hit": {
+ "protocol_id": 943
+ },
+ "minecraft:block.packed_mud.place": {
+ "protocol_id": 944
+ },
+ "minecraft:block.packed_mud.step": {
+ "protocol_id": 945
+ },
"minecraft:block.pink_petals.break": {
"protocol_id": 836
},
@@ -13288,10 +13349,10 @@
"protocol_id": 840
},
"minecraft:block.piston.contract": {
- "protocol_id": 1094
+ "protocol_id": 1097
},
"minecraft:block.piston.extend": {
- "protocol_id": 1095
+ "protocol_id": 1098
},
"minecraft:block.pointed_dripstone.break": {
"protocol_id": 433
@@ -13324,92 +13385,92 @@
"protocol_id": 434
},
"minecraft:block.polished_deepslate.break": {
- "protocol_id": 1123
- },
- "minecraft:block.polished_deepslate.fall": {
- "protocol_id": 1124
- },
- "minecraft:block.polished_deepslate.hit": {
- "protocol_id": 1125
- },
- "minecraft:block.polished_deepslate.place": {
"protocol_id": 1126
},
- "minecraft:block.polished_deepslate.step": {
+ "minecraft:block.polished_deepslate.fall": {
"protocol_id": 1127
},
- "minecraft:block.polished_tuff.break": {
- "protocol_id": 1407
- },
- "minecraft:block.polished_tuff.fall": {
- "protocol_id": 1408
- },
- "minecraft:block.polished_tuff.hit": {
- "protocol_id": 1409
- },
- "minecraft:block.polished_tuff.place": {
- "protocol_id": 1410
- },
- "minecraft:block.polished_tuff.step": {
- "protocol_id": 1411
- },
- "minecraft:block.portal.ambient": {
+ "minecraft:block.polished_deepslate.hit": {
"protocol_id": 1128
},
- "minecraft:block.portal.travel": {
+ "minecraft:block.polished_deepslate.place": {
"protocol_id": 1129
},
- "minecraft:block.portal.trigger": {
+ "minecraft:block.polished_deepslate.step": {
"protocol_id": 1130
},
- "minecraft:block.powder_snow.break": {
+ "minecraft:block.polished_tuff.break": {
+ "protocol_id": 1410
+ },
+ "minecraft:block.polished_tuff.fall": {
+ "protocol_id": 1411
+ },
+ "minecraft:block.polished_tuff.hit": {
+ "protocol_id": 1412
+ },
+ "minecraft:block.polished_tuff.place": {
+ "protocol_id": 1413
+ },
+ "minecraft:block.polished_tuff.step": {
+ "protocol_id": 1414
+ },
+ "minecraft:block.portal.ambient": {
"protocol_id": 1131
},
- "minecraft:block.powder_snow.fall": {
+ "minecraft:block.portal.travel": {
"protocol_id": 1132
},
- "minecraft:block.powder_snow.hit": {
+ "minecraft:block.portal.trigger": {
"protocol_id": 1133
},
- "minecraft:block.powder_snow.place": {
+ "minecraft:block.powder_snow.break": {
"protocol_id": 1134
},
- "minecraft:block.powder_snow.step": {
+ "minecraft:block.powder_snow.fall": {
"protocol_id": 1135
},
+ "minecraft:block.powder_snow.hit": {
+ "protocol_id": 1136
+ },
+ "minecraft:block.powder_snow.place": {
+ "protocol_id": 1137
+ },
+ "minecraft:block.powder_snow.step": {
+ "protocol_id": 1138
+ },
"minecraft:block.pumpkin.carve": {
- "protocol_id": 1143
+ "protocol_id": 1146
},
"minecraft:block.redstone_torch.burnout": {
- "protocol_id": 1168
- },
- "minecraft:block.respawn_anchor.ambient": {
- "protocol_id": 1169
- },
- "minecraft:block.respawn_anchor.charge": {
- "protocol_id": 1170
- },
- "minecraft:block.respawn_anchor.deplete": {
"protocol_id": 1171
},
- "minecraft:block.respawn_anchor.set_spawn": {
+ "minecraft:block.respawn_anchor.ambient": {
"protocol_id": 1172
},
- "minecraft:block.rooted_dirt.break": {
+ "minecraft:block.respawn_anchor.charge": {
"protocol_id": 1173
},
- "minecraft:block.rooted_dirt.fall": {
+ "minecraft:block.respawn_anchor.deplete": {
"protocol_id": 1174
},
- "minecraft:block.rooted_dirt.hit": {
+ "minecraft:block.respawn_anchor.set_spawn": {
"protocol_id": 1175
},
- "minecraft:block.rooted_dirt.place": {
+ "minecraft:block.rooted_dirt.break": {
"protocol_id": 1176
},
- "minecraft:block.rooted_dirt.step": {
+ "minecraft:block.rooted_dirt.fall": {
"protocol_id": 1177
},
+ "minecraft:block.rooted_dirt.hit": {
+ "protocol_id": 1178
+ },
+ "minecraft:block.rooted_dirt.place": {
+ "protocol_id": 1179
+ },
+ "minecraft:block.rooted_dirt.step": {
+ "protocol_id": 1180
+ },
"minecraft:block.roots.break": {
"protocol_id": 565
},
@@ -13426,323 +13487,323 @@
"protocol_id": 566
},
"minecraft:block.sand.break": {
- "protocol_id": 1182
- },
- "minecraft:block.sand.fall": {
- "protocol_id": 1183
- },
- "minecraft:block.sand.hit": {
- "protocol_id": 1184
- },
- "minecraft:block.sand.place": {
"protocol_id": 1185
},
- "minecraft:block.sand.step": {
+ "minecraft:block.sand.fall": {
"protocol_id": 1186
},
- "minecraft:block.scaffolding.break": {
+ "minecraft:block.sand.hit": {
"protocol_id": 1187
},
- "minecraft:block.scaffolding.fall": {
+ "minecraft:block.sand.place": {
"protocol_id": 1188
},
- "minecraft:block.scaffolding.hit": {
+ "minecraft:block.sand.step": {
"protocol_id": 1189
},
- "minecraft:block.scaffolding.place": {
+ "minecraft:block.scaffolding.break": {
"protocol_id": 1190
},
- "minecraft:block.scaffolding.step": {
+ "minecraft:block.scaffolding.fall": {
"protocol_id": 1191
},
- "minecraft:block.sculk.break": {
- "protocol_id": 1194
- },
- "minecraft:block.sculk.charge": {
- "protocol_id": 1193
- },
- "minecraft:block.sculk.fall": {
- "protocol_id": 1195
- },
- "minecraft:block.sculk.hit": {
- "protocol_id": 1196
- },
- "minecraft:block.sculk.place": {
- "protocol_id": 1197
- },
- "minecraft:block.sculk.spread": {
+ "minecraft:block.scaffolding.hit": {
"protocol_id": 1192
},
- "minecraft:block.sculk.step": {
+ "minecraft:block.scaffolding.place": {
+ "protocol_id": 1193
+ },
+ "minecraft:block.scaffolding.step": {
+ "protocol_id": 1194
+ },
+ "minecraft:block.sculk.break": {
+ "protocol_id": 1197
+ },
+ "minecraft:block.sculk.charge": {
+ "protocol_id": 1196
+ },
+ "minecraft:block.sculk.fall": {
"protocol_id": 1198
},
- "minecraft:block.sculk_catalyst.bloom": {
+ "minecraft:block.sculk.hit": {
"protocol_id": 1199
},
- "minecraft:block.sculk_catalyst.break": {
+ "minecraft:block.sculk.place": {
"protocol_id": 1200
},
- "minecraft:block.sculk_catalyst.fall": {
+ "minecraft:block.sculk.spread": {
+ "protocol_id": 1195
+ },
+ "minecraft:block.sculk.step": {
"protocol_id": 1201
},
- "minecraft:block.sculk_catalyst.hit": {
+ "minecraft:block.sculk_catalyst.bloom": {
"protocol_id": 1202
},
- "minecraft:block.sculk_catalyst.place": {
+ "minecraft:block.sculk_catalyst.break": {
"protocol_id": 1203
},
- "minecraft:block.sculk_catalyst.step": {
+ "minecraft:block.sculk_catalyst.fall": {
"protocol_id": 1204
},
- "minecraft:block.sculk_sensor.break": {
- "protocol_id": 1207
- },
- "minecraft:block.sculk_sensor.clicking": {
+ "minecraft:block.sculk_catalyst.hit": {
"protocol_id": 1205
},
- "minecraft:block.sculk_sensor.clicking_stop": {
+ "minecraft:block.sculk_catalyst.place": {
"protocol_id": 1206
},
- "minecraft:block.sculk_sensor.fall": {
- "protocol_id": 1208
+ "minecraft:block.sculk_catalyst.step": {
+ "protocol_id": 1207
},
- "minecraft:block.sculk_sensor.hit": {
- "protocol_id": 1209
- },
- "minecraft:block.sculk_sensor.place": {
+ "minecraft:block.sculk_sensor.break": {
"protocol_id": 1210
},
- "minecraft:block.sculk_sensor.step": {
+ "minecraft:block.sculk_sensor.clicking": {
+ "protocol_id": 1208
+ },
+ "minecraft:block.sculk_sensor.clicking_stop": {
+ "protocol_id": 1209
+ },
+ "minecraft:block.sculk_sensor.fall": {
"protocol_id": 1211
},
- "minecraft:block.sculk_shrieker.break": {
+ "minecraft:block.sculk_sensor.hit": {
"protocol_id": 1212
},
- "minecraft:block.sculk_shrieker.fall": {
+ "minecraft:block.sculk_sensor.place": {
"protocol_id": 1213
},
- "minecraft:block.sculk_shrieker.hit": {
+ "minecraft:block.sculk_sensor.step": {
"protocol_id": 1214
},
- "minecraft:block.sculk_shrieker.place": {
+ "minecraft:block.sculk_shrieker.break": {
"protocol_id": 1215
},
- "minecraft:block.sculk_shrieker.shriek": {
+ "minecraft:block.sculk_shrieker.fall": {
"protocol_id": 1216
},
- "minecraft:block.sculk_shrieker.step": {
+ "minecraft:block.sculk_shrieker.hit": {
"protocol_id": 1217
},
- "minecraft:block.sculk_vein.break": {
+ "minecraft:block.sculk_shrieker.place": {
"protocol_id": 1218
},
- "minecraft:block.sculk_vein.fall": {
+ "minecraft:block.sculk_shrieker.shriek": {
"protocol_id": 1219
},
- "minecraft:block.sculk_vein.hit": {
+ "minecraft:block.sculk_shrieker.step": {
"protocol_id": 1220
},
- "minecraft:block.sculk_vein.place": {
+ "minecraft:block.sculk_vein.break": {
"protocol_id": 1221
},
- "minecraft:block.sculk_vein.step": {
+ "minecraft:block.sculk_vein.fall": {
"protocol_id": 1222
},
+ "minecraft:block.sculk_vein.hit": {
+ "protocol_id": 1223
+ },
+ "minecraft:block.sculk_vein.place": {
+ "protocol_id": 1224
+ },
+ "minecraft:block.sculk_vein.step": {
+ "protocol_id": 1225
+ },
"minecraft:block.shroomlight.break": {
- "protocol_id": 1230
- },
- "minecraft:block.shroomlight.fall": {
- "protocol_id": 1234
- },
- "minecraft:block.shroomlight.hit": {
"protocol_id": 1233
},
- "minecraft:block.shroomlight.place": {
- "protocol_id": 1232
- },
- "minecraft:block.shroomlight.step": {
- "protocol_id": 1231
- },
- "minecraft:block.shulker_box.close": {
+ "minecraft:block.shroomlight.fall": {
"protocol_id": 1237
},
+ "minecraft:block.shroomlight.hit": {
+ "protocol_id": 1236
+ },
+ "minecraft:block.shroomlight.place": {
+ "protocol_id": 1235
+ },
+ "minecraft:block.shroomlight.step": {
+ "protocol_id": 1234
+ },
+ "minecraft:block.shulker_box.close": {
+ "protocol_id": 1240
+ },
"minecraft:block.shulker_box.open": {
- "protocol_id": 1238
+ "protocol_id": 1241
},
"minecraft:block.sign.waxed_interact_fail": {
- "protocol_id": 1511
+ "protocol_id": 1515
},
"minecraft:block.slime_block.break": {
- "protocol_id": 1271
- },
- "minecraft:block.slime_block.fall": {
- "protocol_id": 1272
- },
- "minecraft:block.slime_block.hit": {
- "protocol_id": 1273
- },
- "minecraft:block.slime_block.place": {
"protocol_id": 1274
},
- "minecraft:block.slime_block.step": {
+ "minecraft:block.slime_block.fall": {
"protocol_id": 1275
},
- "minecraft:block.small_amethyst_bud.break": {
+ "minecraft:block.slime_block.hit": {
"protocol_id": 1276
},
- "minecraft:block.small_amethyst_bud.place": {
+ "minecraft:block.slime_block.place": {
"protocol_id": 1277
},
- "minecraft:block.small_dripleaf.break": {
+ "minecraft:block.slime_block.step": {
"protocol_id": 1278
},
- "minecraft:block.small_dripleaf.fall": {
+ "minecraft:block.small_amethyst_bud.break": {
"protocol_id": 1279
},
- "minecraft:block.small_dripleaf.hit": {
+ "minecraft:block.small_amethyst_bud.place": {
"protocol_id": 1280
},
- "minecraft:block.small_dripleaf.place": {
+ "minecraft:block.small_dripleaf.break": {
"protocol_id": 1281
},
- "minecraft:block.small_dripleaf.step": {
+ "minecraft:block.small_dripleaf.fall": {
"protocol_id": 1282
},
- "minecraft:block.smithing_table.use": {
- "protocol_id": 1312
- },
- "minecraft:block.smoker.smoke": {
- "protocol_id": 1313
- },
- "minecraft:block.sniffer_egg.crack": {
- "protocol_id": 1327
- },
- "minecraft:block.sniffer_egg.hatch": {
- "protocol_id": 1328
- },
- "minecraft:block.sniffer_egg.plop": {
- "protocol_id": 1326
- },
- "minecraft:block.snow.break": {
- "protocol_id": 1330
- },
- "minecraft:block.snow.fall": {
- "protocol_id": 1331
- },
- "minecraft:block.snow.hit": {
- "protocol_id": 1337
- },
- "minecraft:block.snow.place": {
- "protocol_id": 1338
- },
- "minecraft:block.snow.step": {
- "protocol_id": 1339
- },
- "minecraft:block.soul_sand.break": {
+ "minecraft:block.small_dripleaf.hit": {
"protocol_id": 1283
},
- "minecraft:block.soul_sand.fall": {
- "protocol_id": 1287
- },
- "minecraft:block.soul_sand.hit": {
- "protocol_id": 1286
- },
- "minecraft:block.soul_sand.place": {
- "protocol_id": 1285
- },
- "minecraft:block.soul_sand.step": {
+ "minecraft:block.small_dripleaf.place": {
"protocol_id": 1284
},
- "minecraft:block.soul_soil.break": {
- "protocol_id": 1288
+ "minecraft:block.small_dripleaf.step": {
+ "protocol_id": 1285
},
- "minecraft:block.soul_soil.fall": {
- "protocol_id": 1292
+ "minecraft:block.smithing_table.use": {
+ "protocol_id": 1315
},
- "minecraft:block.soul_soil.hit": {
- "protocol_id": 1291
+ "minecraft:block.smoker.smoke": {
+ "protocol_id": 1316
},
- "minecraft:block.soul_soil.place": {
+ "minecraft:block.sniffer_egg.crack": {
+ "protocol_id": 1330
+ },
+ "minecraft:block.sniffer_egg.hatch": {
+ "protocol_id": 1331
+ },
+ "minecraft:block.sniffer_egg.plop": {
+ "protocol_id": 1329
+ },
+ "minecraft:block.snow.break": {
+ "protocol_id": 1333
+ },
+ "minecraft:block.snow.fall": {
+ "protocol_id": 1334
+ },
+ "minecraft:block.snow.hit": {
+ "protocol_id": 1340
+ },
+ "minecraft:block.snow.place": {
+ "protocol_id": 1341
+ },
+ "minecraft:block.snow.step": {
+ "protocol_id": 1342
+ },
+ "minecraft:block.soul_sand.break": {
+ "protocol_id": 1286
+ },
+ "minecraft:block.soul_sand.fall": {
"protocol_id": 1290
},
- "minecraft:block.soul_soil.step": {
+ "minecraft:block.soul_sand.hit": {
"protocol_id": 1289
},
- "minecraft:block.sponge.absorb": {
- "protocol_id": 1351
+ "minecraft:block.soul_sand.place": {
+ "protocol_id": 1288
},
- "minecraft:block.sponge.break": {
- "protocol_id": 1346
+ "minecraft:block.soul_sand.step": {
+ "protocol_id": 1287
},
- "minecraft:block.sponge.fall": {
- "protocol_id": 1347
+ "minecraft:block.soul_soil.break": {
+ "protocol_id": 1291
},
- "minecraft:block.sponge.hit": {
- "protocol_id": 1348
- },
- "minecraft:block.sponge.place": {
- "protocol_id": 1349
- },
- "minecraft:block.sponge.step": {
- "protocol_id": 1350
- },
- "minecraft:block.spore_blossom.break": {
- "protocol_id": 1294
- },
- "minecraft:block.spore_blossom.fall": {
+ "minecraft:block.soul_soil.fall": {
"protocol_id": 1295
},
- "minecraft:block.spore_blossom.hit": {
- "protocol_id": 1296
+ "minecraft:block.soul_soil.hit": {
+ "protocol_id": 1294
},
- "minecraft:block.spore_blossom.place": {
+ "minecraft:block.soul_soil.place": {
+ "protocol_id": 1293
+ },
+ "minecraft:block.soul_soil.step": {
+ "protocol_id": 1292
+ },
+ "minecraft:block.sponge.absorb": {
+ "protocol_id": 1354
+ },
+ "minecraft:block.sponge.break": {
+ "protocol_id": 1349
+ },
+ "minecraft:block.sponge.fall": {
+ "protocol_id": 1350
+ },
+ "minecraft:block.sponge.hit": {
+ "protocol_id": 1351
+ },
+ "minecraft:block.sponge.place": {
+ "protocol_id": 1352
+ },
+ "minecraft:block.sponge.step": {
+ "protocol_id": 1353
+ },
+ "minecraft:block.spore_blossom.break": {
"protocol_id": 1297
},
- "minecraft:block.spore_blossom.step": {
+ "minecraft:block.spore_blossom.fall": {
"protocol_id": 1298
},
+ "minecraft:block.spore_blossom.hit": {
+ "protocol_id": 1299
+ },
+ "minecraft:block.spore_blossom.place": {
+ "protocol_id": 1300
+ },
+ "minecraft:block.spore_blossom.step": {
+ "protocol_id": 1301
+ },
"minecraft:block.stem.break": {
- "protocol_id": 943
- },
- "minecraft:block.stem.fall": {
- "protocol_id": 947
- },
- "minecraft:block.stem.hit": {
"protocol_id": 946
},
+ "minecraft:block.stem.fall": {
+ "protocol_id": 950
+ },
+ "minecraft:block.stem.hit": {
+ "protocol_id": 949
+ },
"minecraft:block.stem.place": {
- "protocol_id": 945
+ "protocol_id": 948
},
"minecraft:block.stem.step": {
- "protocol_id": 944
+ "protocol_id": 947
},
"minecraft:block.stone.break": {
- "protocol_id": 1358
- },
- "minecraft:block.stone.fall": {
"protocol_id": 1361
},
- "minecraft:block.stone.hit": {
- "protocol_id": 1362
- },
- "minecraft:block.stone.place": {
- "protocol_id": 1363
- },
- "minecraft:block.stone.step": {
- "protocol_id": 1366
- },
- "minecraft:block.stone_button.click_off": {
- "protocol_id": 1359
- },
- "minecraft:block.stone_button.click_on": {
- "protocol_id": 1360
- },
- "minecraft:block.stone_pressure_plate.click_off": {
+ "minecraft:block.stone.fall": {
"protocol_id": 1364
},
- "minecraft:block.stone_pressure_plate.click_on": {
+ "minecraft:block.stone.hit": {
"protocol_id": 1365
},
+ "minecraft:block.stone.place": {
+ "protocol_id": 1366
+ },
+ "minecraft:block.stone.step": {
+ "protocol_id": 1369
+ },
+ "minecraft:block.stone_button.click_off": {
+ "protocol_id": 1362
+ },
+ "minecraft:block.stone_button.click_on": {
+ "protocol_id": 1363
+ },
+ "minecraft:block.stone_pressure_plate.click_off": {
+ "protocol_id": 1367
+ },
+ "minecraft:block.stone_pressure_plate.click_on": {
+ "protocol_id": 1368
+ },
"minecraft:block.suspicious_gravel.break": {
"protocol_id": 541
},
@@ -13774,13 +13835,13 @@
"protocol_id": 537
},
"minecraft:block.sweet_berry_bush.break": {
- "protocol_id": 1371
+ "protocol_id": 1374
},
"minecraft:block.sweet_berry_bush.pick_berries": {
- "protocol_id": 1373
+ "protocol_id": 1376
},
"minecraft:block.sweet_berry_bush.place": {
- "protocol_id": 1372
+ "protocol_id": 1375
},
"minecraft:block.trial_spawner.about_to_spawn_item": {
"protocol_id": 679
@@ -13788,15 +13849,12 @@
"minecraft:block.trial_spawner.ambient": {
"protocol_id": 684
},
- "minecraft:block.trial_spawner.ambient_charged": {
+ "minecraft:block.trial_spawner.ambient_ominous": {
"protocol_id": 685
},
"minecraft:block.trial_spawner.break": {
"protocol_id": 673
},
- "minecraft:block.trial_spawner.charge_activate": {
- "protocol_id": 683
- },
"minecraft:block.trial_spawner.close_shutter": {
"protocol_id": 687
},
@@ -13812,6 +13870,9 @@
"minecraft:block.trial_spawner.hit": {
"protocol_id": 676
},
+ "minecraft:block.trial_spawner.ominous_activate": {
+ "protocol_id": 683
+ },
"minecraft:block.trial_spawner.open_shutter": {
"protocol_id": 686
},
@@ -13831,223 +13892,226 @@
"protocol_id": 674
},
"minecraft:block.tripwire.attach": {
- "protocol_id": 1389
- },
- "minecraft:block.tripwire.click_off": {
- "protocol_id": 1390
- },
- "minecraft:block.tripwire.click_on": {
- "protocol_id": 1391
- },
- "minecraft:block.tripwire.detach": {
"protocol_id": 1392
},
+ "minecraft:block.tripwire.click_off": {
+ "protocol_id": 1393
+ },
+ "minecraft:block.tripwire.click_on": {
+ "protocol_id": 1394
+ },
+ "minecraft:block.tripwire.detach": {
+ "protocol_id": 1395
+ },
"minecraft:block.tuff.break": {
- "protocol_id": 1397
- },
- "minecraft:block.tuff.fall": {
- "protocol_id": 1401
- },
- "minecraft:block.tuff.hit": {
"protocol_id": 1400
},
- "minecraft:block.tuff.place": {
- "protocol_id": 1399
- },
- "minecraft:block.tuff.step": {
- "protocol_id": 1398
- },
- "minecraft:block.tuff_bricks.break": {
- "protocol_id": 1402
- },
- "minecraft:block.tuff_bricks.fall": {
- "protocol_id": 1403
- },
- "minecraft:block.tuff_bricks.hit": {
+ "minecraft:block.tuff.fall": {
"protocol_id": 1404
},
- "minecraft:block.tuff_bricks.place": {
+ "minecraft:block.tuff.hit": {
+ "protocol_id": 1403
+ },
+ "minecraft:block.tuff.place": {
+ "protocol_id": 1402
+ },
+ "minecraft:block.tuff.step": {
+ "protocol_id": 1401
+ },
+ "minecraft:block.tuff_bricks.break": {
"protocol_id": 1405
},
- "minecraft:block.tuff_bricks.step": {
+ "minecraft:block.tuff_bricks.fall": {
"protocol_id": 1406
},
+ "minecraft:block.tuff_bricks.hit": {
+ "protocol_id": 1407
+ },
+ "minecraft:block.tuff_bricks.place": {
+ "protocol_id": 1408
+ },
+ "minecraft:block.tuff_bricks.step": {
+ "protocol_id": 1409
+ },
"minecraft:block.vault.activate": {
- "protocol_id": 1433
- },
- "minecraft:block.vault.ambient": {
- "protocol_id": 1434
- },
- "minecraft:block.vault.break": {
- "protocol_id": 1435
- },
- "minecraft:block.vault.close_shutter": {
"protocol_id": 1436
},
- "minecraft:block.vault.deactivate": {
+ "minecraft:block.vault.ambient": {
"protocol_id": 1437
},
- "minecraft:block.vault.eject_item": {
+ "minecraft:block.vault.break": {
"protocol_id": 1438
},
- "minecraft:block.vault.fall": {
+ "minecraft:block.vault.close_shutter": {
"protocol_id": 1439
},
- "minecraft:block.vault.hit": {
+ "minecraft:block.vault.deactivate": {
"protocol_id": 1440
},
- "minecraft:block.vault.insert_item": {
+ "minecraft:block.vault.eject_item": {
"protocol_id": 1441
},
- "minecraft:block.vault.insert_item_fail": {
- "protocol_id": 1442
- },
- "minecraft:block.vault.open_shutter": {
+ "minecraft:block.vault.fall": {
"protocol_id": 1443
},
- "minecraft:block.vault.place": {
+ "minecraft:block.vault.hit": {
"protocol_id": 1444
},
- "minecraft:block.vault.step": {
+ "minecraft:block.vault.insert_item": {
"protocol_id": 1445
},
+ "minecraft:block.vault.insert_item_fail": {
+ "protocol_id": 1446
+ },
+ "minecraft:block.vault.open_shutter": {
+ "protocol_id": 1447
+ },
+ "minecraft:block.vault.place": {
+ "protocol_id": 1448
+ },
+ "minecraft:block.vault.reject_rewarded_player": {
+ "protocol_id": 1442
+ },
+ "minecraft:block.vault.step": {
+ "protocol_id": 1449
+ },
"minecraft:block.vine.break": {
- "protocol_id": 1474
- },
- "minecraft:block.vine.fall": {
- "protocol_id": 1475
- },
- "minecraft:block.vine.hit": {
- "protocol_id": 1476
- },
- "minecraft:block.vine.place": {
- "protocol_id": 1477
- },
- "minecraft:block.vine.step": {
"protocol_id": 1478
},
+ "minecraft:block.vine.fall": {
+ "protocol_id": 1479
+ },
+ "minecraft:block.vine.hit": {
+ "protocol_id": 1480
+ },
+ "minecraft:block.vine.place": {
+ "protocol_id": 1481
+ },
+ "minecraft:block.vine.step": {
+ "protocol_id": 1482
+ },
"minecraft:block.wart_block.break": {
- "protocol_id": 968
- },
- "minecraft:block.wart_block.fall": {
- "protocol_id": 972
- },
- "minecraft:block.wart_block.hit": {
"protocol_id": 971
},
+ "minecraft:block.wart_block.fall": {
+ "protocol_id": 975
+ },
+ "minecraft:block.wart_block.hit": {
+ "protocol_id": 974
+ },
"minecraft:block.wart_block.place": {
- "protocol_id": 970
+ "protocol_id": 973
},
"minecraft:block.wart_block.step": {
- "protocol_id": 969
+ "protocol_id": 972
},
"minecraft:block.water.ambient": {
- "protocol_id": 1512
- },
- "minecraft:block.weeping_vines.break": {
- "protocol_id": 963
- },
- "minecraft:block.weeping_vines.fall": {
- "protocol_id": 967
- },
- "minecraft:block.weeping_vines.hit": {
- "protocol_id": 966
- },
- "minecraft:block.weeping_vines.place": {
- "protocol_id": 965
- },
- "minecraft:block.weeping_vines.step": {
- "protocol_id": 964
- },
- "minecraft:block.wet_grass.break": {
- "protocol_id": 1515
- },
- "minecraft:block.wet_grass.fall": {
"protocol_id": 1516
},
- "minecraft:block.wet_grass.hit": {
- "protocol_id": 1517
+ "minecraft:block.weeping_vines.break": {
+ "protocol_id": 966
},
- "minecraft:block.wet_grass.place": {
- "protocol_id": 1518
+ "minecraft:block.weeping_vines.fall": {
+ "protocol_id": 970
},
- "minecraft:block.wet_grass.step": {
+ "minecraft:block.weeping_vines.hit": {
+ "protocol_id": 969
+ },
+ "minecraft:block.weeping_vines.place": {
+ "protocol_id": 968
+ },
+ "minecraft:block.weeping_vines.step": {
+ "protocol_id": 967
+ },
+ "minecraft:block.wet_grass.break": {
"protocol_id": 1519
},
- "minecraft:block.wet_sponge.break": {
+ "minecraft:block.wet_grass.fall": {
"protocol_id": 1520
},
- "minecraft:block.wet_sponge.dries": {
+ "minecraft:block.wet_grass.hit": {
"protocol_id": 1521
},
- "minecraft:block.wet_sponge.fall": {
+ "minecraft:block.wet_grass.place": {
"protocol_id": 1522
},
- "minecraft:block.wet_sponge.hit": {
+ "minecraft:block.wet_grass.step": {
"protocol_id": 1523
},
- "minecraft:block.wet_sponge.place": {
+ "minecraft:block.wet_sponge.break": {
"protocol_id": 1524
},
- "minecraft:block.wet_sponge.step": {
+ "minecraft:block.wet_sponge.dries": {
"protocol_id": 1525
},
+ "minecraft:block.wet_sponge.fall": {
+ "protocol_id": 1526
+ },
+ "minecraft:block.wet_sponge.hit": {
+ "protocol_id": 1527
+ },
+ "minecraft:block.wet_sponge.place": {
+ "protocol_id": 1528
+ },
+ "minecraft:block.wet_sponge.step": {
+ "protocol_id": 1529
+ },
"minecraft:block.wood.break": {
- "protocol_id": 1565
- },
- "minecraft:block.wood.fall": {
- "protocol_id": 1566
- },
- "minecraft:block.wood.hit": {
- "protocol_id": 1567
- },
- "minecraft:block.wood.place": {
- "protocol_id": 1568
- },
- "minecraft:block.wood.step": {
"protocol_id": 1569
},
- "minecraft:block.wooden_button.click_off": {
- "protocol_id": 1561
- },
- "minecraft:block.wooden_button.click_on": {
- "protocol_id": 1562
- },
- "minecraft:block.wooden_door.close": {
- "protocol_id": 1557
- },
- "minecraft:block.wooden_door.open": {
- "protocol_id": 1558
- },
- "minecraft:block.wooden_pressure_plate.click_off": {
- "protocol_id": 1563
- },
- "minecraft:block.wooden_pressure_plate.click_on": {
- "protocol_id": 1564
- },
- "minecraft:block.wooden_trapdoor.close": {
- "protocol_id": 1559
- },
- "minecraft:block.wooden_trapdoor.open": {
- "protocol_id": 1560
- },
- "minecraft:block.wool.break": {
+ "minecraft:block.wood.fall": {
"protocol_id": 1570
},
- "minecraft:block.wool.fall": {
+ "minecraft:block.wood.hit": {
"protocol_id": 1571
},
- "minecraft:block.wool.hit": {
+ "minecraft:block.wood.place": {
"protocol_id": 1572
},
- "minecraft:block.wool.place": {
+ "minecraft:block.wood.step": {
"protocol_id": 1573
},
- "minecraft:block.wool.step": {
+ "minecraft:block.wooden_button.click_off": {
+ "protocol_id": 1565
+ },
+ "minecraft:block.wooden_button.click_on": {
+ "protocol_id": 1566
+ },
+ "minecraft:block.wooden_door.close": {
+ "protocol_id": 1561
+ },
+ "minecraft:block.wooden_door.open": {
+ "protocol_id": 1562
+ },
+ "minecraft:block.wooden_pressure_plate.click_off": {
+ "protocol_id": 1567
+ },
+ "minecraft:block.wooden_pressure_plate.click_on": {
+ "protocol_id": 1568
+ },
+ "minecraft:block.wooden_trapdoor.close": {
+ "protocol_id": 1563
+ },
+ "minecraft:block.wooden_trapdoor.open": {
+ "protocol_id": 1564
+ },
+ "minecraft:block.wool.break": {
"protocol_id": 1574
},
+ "minecraft:block.wool.fall": {
+ "protocol_id": 1575
+ },
+ "minecraft:block.wool.hit": {
+ "protocol_id": 1576
+ },
+ "minecraft:block.wool.place": {
+ "protocol_id": 1577
+ },
+ "minecraft:block.wool.step": {
+ "protocol_id": 1578
+ },
"minecraft:enchant.thorns.hit": {
- "protocol_id": 1378
+ "protocol_id": 1381
},
"minecraft:entity.allay.ambient_with_item": {
"protocol_id": 0
@@ -15085,1090 +15149,1090 @@
"protocol_id": 867
},
"minecraft:entity.ocelot.ambient": {
- "protocol_id": 1006
- },
- "minecraft:entity.ocelot.death": {
- "protocol_id": 1007
- },
- "minecraft:entity.ocelot.hurt": {
- "protocol_id": 1005
- },
- "minecraft:entity.painting.break": {
"protocol_id": 1009
},
- "minecraft:entity.painting.place": {
+ "minecraft:entity.ocelot.death": {
"protocol_id": 1010
},
- "minecraft:entity.panda.aggressive_ambient": {
- "protocol_id": 1018
+ "minecraft:entity.ocelot.hurt": {
+ "protocol_id": 1008
},
- "minecraft:entity.panda.ambient": {
- "protocol_id": 1013
- },
- "minecraft:entity.panda.bite": {
- "protocol_id": 1021
- },
- "minecraft:entity.panda.cant_breed": {
- "protocol_id": 1017
- },
- "minecraft:entity.panda.death": {
- "protocol_id": 1014
- },
- "minecraft:entity.panda.eat": {
- "protocol_id": 1015
- },
- "minecraft:entity.panda.hurt": {
- "protocol_id": 1020
- },
- "minecraft:entity.panda.pre_sneeze": {
- "protocol_id": 1011
- },
- "minecraft:entity.panda.sneeze": {
+ "minecraft:entity.painting.break": {
"protocol_id": 1012
},
- "minecraft:entity.panda.step": {
+ "minecraft:entity.painting.place": {
+ "protocol_id": 1013
+ },
+ "minecraft:entity.panda.aggressive_ambient": {
+ "protocol_id": 1021
+ },
+ "minecraft:entity.panda.ambient": {
"protocol_id": 1016
},
- "minecraft:entity.panda.worried_ambient": {
- "protocol_id": 1019
- },
- "minecraft:entity.parrot.ambient": {
- "protocol_id": 1022
- },
- "minecraft:entity.parrot.death": {
- "protocol_id": 1023
- },
- "minecraft:entity.parrot.eat": {
+ "minecraft:entity.panda.bite": {
"protocol_id": 1024
},
- "minecraft:entity.parrot.fly": {
+ "minecraft:entity.panda.cant_breed": {
+ "protocol_id": 1020
+ },
+ "minecraft:entity.panda.death": {
+ "protocol_id": 1017
+ },
+ "minecraft:entity.panda.eat": {
+ "protocol_id": 1018
+ },
+ "minecraft:entity.panda.hurt": {
+ "protocol_id": 1023
+ },
+ "minecraft:entity.panda.pre_sneeze": {
+ "protocol_id": 1014
+ },
+ "minecraft:entity.panda.sneeze": {
+ "protocol_id": 1015
+ },
+ "minecraft:entity.panda.step": {
+ "protocol_id": 1019
+ },
+ "minecraft:entity.panda.worried_ambient": {
+ "protocol_id": 1022
+ },
+ "minecraft:entity.parrot.ambient": {
"protocol_id": 1025
},
- "minecraft:entity.parrot.hurt": {
+ "minecraft:entity.parrot.death": {
"protocol_id": 1026
},
- "minecraft:entity.parrot.imitate.blaze": {
+ "minecraft:entity.parrot.eat": {
"protocol_id": 1027
},
- "minecraft:entity.parrot.imitate.bogged": {
+ "minecraft:entity.parrot.fly": {
"protocol_id": 1028
},
- "minecraft:entity.parrot.imitate.breeze": {
+ "minecraft:entity.parrot.hurt": {
"protocol_id": 1029
},
- "minecraft:entity.parrot.imitate.creeper": {
+ "minecraft:entity.parrot.imitate.blaze": {
"protocol_id": 1030
},
- "minecraft:entity.parrot.imitate.drowned": {
+ "minecraft:entity.parrot.imitate.bogged": {
"protocol_id": 1031
},
- "minecraft:entity.parrot.imitate.elder_guardian": {
+ "minecraft:entity.parrot.imitate.breeze": {
"protocol_id": 1032
},
- "minecraft:entity.parrot.imitate.ender_dragon": {
+ "minecraft:entity.parrot.imitate.creeper": {
"protocol_id": 1033
},
- "minecraft:entity.parrot.imitate.endermite": {
+ "minecraft:entity.parrot.imitate.drowned": {
"protocol_id": 1034
},
- "minecraft:entity.parrot.imitate.evoker": {
+ "minecraft:entity.parrot.imitate.elder_guardian": {
"protocol_id": 1035
},
- "minecraft:entity.parrot.imitate.ghast": {
+ "minecraft:entity.parrot.imitate.ender_dragon": {
"protocol_id": 1036
},
- "minecraft:entity.parrot.imitate.guardian": {
+ "minecraft:entity.parrot.imitate.endermite": {
"protocol_id": 1037
},
- "minecraft:entity.parrot.imitate.hoglin": {
+ "minecraft:entity.parrot.imitate.evoker": {
"protocol_id": 1038
},
- "minecraft:entity.parrot.imitate.husk": {
+ "minecraft:entity.parrot.imitate.ghast": {
"protocol_id": 1039
},
- "minecraft:entity.parrot.imitate.illusioner": {
+ "minecraft:entity.parrot.imitate.guardian": {
"protocol_id": 1040
},
- "minecraft:entity.parrot.imitate.magma_cube": {
+ "minecraft:entity.parrot.imitate.hoglin": {
"protocol_id": 1041
},
- "minecraft:entity.parrot.imitate.phantom": {
+ "minecraft:entity.parrot.imitate.husk": {
"protocol_id": 1042
},
- "minecraft:entity.parrot.imitate.piglin": {
+ "minecraft:entity.parrot.imitate.illusioner": {
"protocol_id": 1043
},
- "minecraft:entity.parrot.imitate.piglin_brute": {
+ "minecraft:entity.parrot.imitate.magma_cube": {
"protocol_id": 1044
},
- "minecraft:entity.parrot.imitate.pillager": {
+ "minecraft:entity.parrot.imitate.phantom": {
"protocol_id": 1045
},
- "minecraft:entity.parrot.imitate.ravager": {
+ "minecraft:entity.parrot.imitate.piglin": {
"protocol_id": 1046
},
- "minecraft:entity.parrot.imitate.shulker": {
+ "minecraft:entity.parrot.imitate.piglin_brute": {
"protocol_id": 1047
},
- "minecraft:entity.parrot.imitate.silverfish": {
+ "minecraft:entity.parrot.imitate.pillager": {
"protocol_id": 1048
},
- "minecraft:entity.parrot.imitate.skeleton": {
+ "minecraft:entity.parrot.imitate.ravager": {
"protocol_id": 1049
},
- "minecraft:entity.parrot.imitate.slime": {
+ "minecraft:entity.parrot.imitate.shulker": {
"protocol_id": 1050
},
- "minecraft:entity.parrot.imitate.spider": {
+ "minecraft:entity.parrot.imitate.silverfish": {
"protocol_id": 1051
},
- "minecraft:entity.parrot.imitate.stray": {
+ "minecraft:entity.parrot.imitate.skeleton": {
"protocol_id": 1052
},
- "minecraft:entity.parrot.imitate.vex": {
+ "minecraft:entity.parrot.imitate.slime": {
"protocol_id": 1053
},
- "minecraft:entity.parrot.imitate.vindicator": {
+ "minecraft:entity.parrot.imitate.spider": {
"protocol_id": 1054
},
- "minecraft:entity.parrot.imitate.warden": {
+ "minecraft:entity.parrot.imitate.stray": {
"protocol_id": 1055
},
- "minecraft:entity.parrot.imitate.witch": {
+ "minecraft:entity.parrot.imitate.vex": {
"protocol_id": 1056
},
- "minecraft:entity.parrot.imitate.wither": {
+ "minecraft:entity.parrot.imitate.vindicator": {
"protocol_id": 1057
},
- "minecraft:entity.parrot.imitate.wither_skeleton": {
+ "minecraft:entity.parrot.imitate.warden": {
"protocol_id": 1058
},
- "minecraft:entity.parrot.imitate.zoglin": {
+ "minecraft:entity.parrot.imitate.witch": {
"protocol_id": 1059
},
- "minecraft:entity.parrot.imitate.zombie": {
+ "minecraft:entity.parrot.imitate.wither": {
"protocol_id": 1060
},
- "minecraft:entity.parrot.imitate.zombie_villager": {
+ "minecraft:entity.parrot.imitate.wither_skeleton": {
"protocol_id": 1061
},
- "minecraft:entity.parrot.step": {
+ "minecraft:entity.parrot.imitate.zoglin": {
"protocol_id": 1062
},
- "minecraft:entity.phantom.ambient": {
+ "minecraft:entity.parrot.imitate.zombie": {
"protocol_id": 1063
},
- "minecraft:entity.phantom.bite": {
+ "minecraft:entity.parrot.imitate.zombie_villager": {
"protocol_id": 1064
},
- "minecraft:entity.phantom.death": {
+ "minecraft:entity.parrot.step": {
"protocol_id": 1065
},
- "minecraft:entity.phantom.flap": {
+ "minecraft:entity.phantom.ambient": {
"protocol_id": 1066
},
- "minecraft:entity.phantom.hurt": {
+ "minecraft:entity.phantom.bite": {
"protocol_id": 1067
},
- "minecraft:entity.phantom.swoop": {
+ "minecraft:entity.phantom.death": {
"protocol_id": 1068
},
- "minecraft:entity.pig.ambient": {
+ "minecraft:entity.phantom.flap": {
"protocol_id": 1069
},
- "minecraft:entity.pig.death": {
+ "minecraft:entity.phantom.hurt": {
"protocol_id": 1070
},
- "minecraft:entity.pig.hurt": {
+ "minecraft:entity.phantom.swoop": {
"protocol_id": 1071
},
- "minecraft:entity.pig.saddle": {
+ "minecraft:entity.pig.ambient": {
"protocol_id": 1072
},
- "minecraft:entity.pig.step": {
+ "minecraft:entity.pig.death": {
"protocol_id": 1073
},
- "minecraft:entity.piglin.admiring_item": {
+ "minecraft:entity.pig.hurt": {
"protocol_id": 1074
},
- "minecraft:entity.piglin.ambient": {
+ "minecraft:entity.pig.saddle": {
"protocol_id": 1075
},
- "minecraft:entity.piglin.angry": {
+ "minecraft:entity.pig.step": {
"protocol_id": 1076
},
- "minecraft:entity.piglin.celebrate": {
+ "minecraft:entity.piglin.admiring_item": {
"protocol_id": 1077
},
- "minecraft:entity.piglin.converted_to_zombified": {
- "protocol_id": 1083
- },
- "minecraft:entity.piglin.death": {
+ "minecraft:entity.piglin.ambient": {
"protocol_id": 1078
},
- "minecraft:entity.piglin.hurt": {
- "protocol_id": 1080
- },
- "minecraft:entity.piglin.jealous": {
+ "minecraft:entity.piglin.angry": {
"protocol_id": 1079
},
- "minecraft:entity.piglin.retreat": {
- "protocol_id": 1081
+ "minecraft:entity.piglin.celebrate": {
+ "protocol_id": 1080
},
- "minecraft:entity.piglin.step": {
- "protocol_id": 1082
- },
- "minecraft:entity.piglin_brute.ambient": {
- "protocol_id": 1084
- },
- "minecraft:entity.piglin_brute.angry": {
- "protocol_id": 1085
- },
- "minecraft:entity.piglin_brute.converted_to_zombified": {
- "protocol_id": 1089
- },
- "minecraft:entity.piglin_brute.death": {
+ "minecraft:entity.piglin.converted_to_zombified": {
"protocol_id": 1086
},
- "minecraft:entity.piglin_brute.hurt": {
+ "minecraft:entity.piglin.death": {
+ "protocol_id": 1081
+ },
+ "minecraft:entity.piglin.hurt": {
+ "protocol_id": 1083
+ },
+ "minecraft:entity.piglin.jealous": {
+ "protocol_id": 1082
+ },
+ "minecraft:entity.piglin.retreat": {
+ "protocol_id": 1084
+ },
+ "minecraft:entity.piglin.step": {
+ "protocol_id": 1085
+ },
+ "minecraft:entity.piglin_brute.ambient": {
"protocol_id": 1087
},
- "minecraft:entity.piglin_brute.step": {
+ "minecraft:entity.piglin_brute.angry": {
"protocol_id": 1088
},
- "minecraft:entity.pillager.ambient": {
- "protocol_id": 1090
- },
- "minecraft:entity.pillager.celebrate": {
- "protocol_id": 1091
- },
- "minecraft:entity.pillager.death": {
+ "minecraft:entity.piglin_brute.converted_to_zombified": {
"protocol_id": 1092
},
- "minecraft:entity.pillager.hurt": {
+ "minecraft:entity.piglin_brute.death": {
+ "protocol_id": 1089
+ },
+ "minecraft:entity.piglin_brute.hurt": {
+ "protocol_id": 1090
+ },
+ "minecraft:entity.piglin_brute.step": {
+ "protocol_id": 1091
+ },
+ "minecraft:entity.pillager.ambient": {
"protocol_id": 1093
},
- "minecraft:entity.player.attack.crit": {
+ "minecraft:entity.pillager.celebrate": {
+ "protocol_id": 1094
+ },
+ "minecraft:entity.pillager.death": {
+ "protocol_id": 1095
+ },
+ "minecraft:entity.pillager.hurt": {
"protocol_id": 1096
},
- "minecraft:entity.player.attack.knockback": {
- "protocol_id": 1097
- },
- "minecraft:entity.player.attack.nodamage": {
- "protocol_id": 1098
- },
- "minecraft:entity.player.attack.strong": {
+ "minecraft:entity.player.attack.crit": {
"protocol_id": 1099
},
- "minecraft:entity.player.attack.sweep": {
+ "minecraft:entity.player.attack.knockback": {
"protocol_id": 1100
},
- "minecraft:entity.player.attack.weak": {
+ "minecraft:entity.player.attack.nodamage": {
"protocol_id": 1101
},
- "minecraft:entity.player.big_fall": {
+ "minecraft:entity.player.attack.strong": {
"protocol_id": 1102
},
- "minecraft:entity.player.breath": {
+ "minecraft:entity.player.attack.sweep": {
"protocol_id": 1103
},
- "minecraft:entity.player.burp": {
+ "minecraft:entity.player.attack.weak": {
"protocol_id": 1104
},
- "minecraft:entity.player.death": {
+ "minecraft:entity.player.big_fall": {
"protocol_id": 1105
},
- "minecraft:entity.player.hurt": {
+ "minecraft:entity.player.breath": {
"protocol_id": 1106
},
- "minecraft:entity.player.hurt_drown": {
+ "minecraft:entity.player.burp": {
"protocol_id": 1107
},
- "minecraft:entity.player.hurt_freeze": {
+ "minecraft:entity.player.death": {
"protocol_id": 1108
},
- "minecraft:entity.player.hurt_on_fire": {
+ "minecraft:entity.player.hurt": {
"protocol_id": 1109
},
- "minecraft:entity.player.hurt_sweet_berry_bush": {
+ "minecraft:entity.player.hurt_drown": {
"protocol_id": 1110
},
- "minecraft:entity.player.levelup": {
+ "minecraft:entity.player.hurt_freeze": {
"protocol_id": 1111
},
- "minecraft:entity.player.small_fall": {
+ "minecraft:entity.player.hurt_on_fire": {
"protocol_id": 1112
},
- "minecraft:entity.player.splash": {
+ "minecraft:entity.player.hurt_sweet_berry_bush": {
"protocol_id": 1113
},
- "minecraft:entity.player.splash.high_speed": {
+ "minecraft:entity.player.levelup": {
"protocol_id": 1114
},
- "minecraft:entity.player.swim": {
+ "minecraft:entity.player.small_fall": {
"protocol_id": 1115
},
- "minecraft:entity.player.teleport": {
+ "minecraft:entity.player.splash": {
"protocol_id": 1116
},
- "minecraft:entity.polar_bear.ambient": {
+ "minecraft:entity.player.splash.high_speed": {
"protocol_id": 1117
},
- "minecraft:entity.polar_bear.ambient_baby": {
+ "minecraft:entity.player.swim": {
"protocol_id": 1118
},
- "minecraft:entity.polar_bear.death": {
+ "minecraft:entity.player.teleport": {
"protocol_id": 1119
},
- "minecraft:entity.polar_bear.hurt": {
+ "minecraft:entity.polar_bear.ambient": {
"protocol_id": 1120
},
- "minecraft:entity.polar_bear.step": {
+ "minecraft:entity.polar_bear.ambient_baby": {
"protocol_id": 1121
},
- "minecraft:entity.polar_bear.warning": {
+ "minecraft:entity.polar_bear.death": {
"protocol_id": 1122
},
+ "minecraft:entity.polar_bear.hurt": {
+ "protocol_id": 1123
+ },
+ "minecraft:entity.polar_bear.step": {
+ "protocol_id": 1124
+ },
+ "minecraft:entity.polar_bear.warning": {
+ "protocol_id": 1125
+ },
"minecraft:entity.puffer_fish.ambient": {
- "protocol_id": 1136
- },
- "minecraft:entity.puffer_fish.blow_out": {
- "protocol_id": 1137
- },
- "minecraft:entity.puffer_fish.blow_up": {
- "protocol_id": 1138
- },
- "minecraft:entity.puffer_fish.death": {
"protocol_id": 1139
},
- "minecraft:entity.puffer_fish.flop": {
+ "minecraft:entity.puffer_fish.blow_out": {
"protocol_id": 1140
},
- "minecraft:entity.puffer_fish.hurt": {
+ "minecraft:entity.puffer_fish.blow_up": {
"protocol_id": 1141
},
- "minecraft:entity.puffer_fish.sting": {
+ "minecraft:entity.puffer_fish.death": {
"protocol_id": 1142
},
- "minecraft:entity.rabbit.ambient": {
+ "minecraft:entity.puffer_fish.flop": {
+ "protocol_id": 1143
+ },
+ "minecraft:entity.puffer_fish.hurt": {
"protocol_id": 1144
},
- "minecraft:entity.rabbit.attack": {
+ "minecraft:entity.puffer_fish.sting": {
"protocol_id": 1145
},
- "minecraft:entity.rabbit.death": {
- "protocol_id": 1146
- },
- "minecraft:entity.rabbit.hurt": {
+ "minecraft:entity.rabbit.ambient": {
"protocol_id": 1147
},
- "minecraft:entity.rabbit.jump": {
+ "minecraft:entity.rabbit.attack": {
"protocol_id": 1148
},
- "minecraft:entity.ravager.ambient": {
- "protocol_id": 1150
- },
- "minecraft:entity.ravager.attack": {
- "protocol_id": 1151
- },
- "minecraft:entity.ravager.celebrate": {
- "protocol_id": 1152
- },
- "minecraft:entity.ravager.death": {
- "protocol_id": 1153
- },
- "minecraft:entity.ravager.hurt": {
- "protocol_id": 1154
- },
- "minecraft:entity.ravager.roar": {
- "protocol_id": 1157
- },
- "minecraft:entity.ravager.step": {
- "protocol_id": 1155
- },
- "minecraft:entity.ravager.stunned": {
- "protocol_id": 1156
- },
- "minecraft:entity.salmon.ambient": {
- "protocol_id": 1178
- },
- "minecraft:entity.salmon.death": {
- "protocol_id": 1179
- },
- "minecraft:entity.salmon.flop": {
- "protocol_id": 1180
- },
- "minecraft:entity.salmon.hurt": {
- "protocol_id": 1181
- },
- "minecraft:entity.sheep.ambient": {
- "protocol_id": 1223
- },
- "minecraft:entity.sheep.death": {
- "protocol_id": 1224
- },
- "minecraft:entity.sheep.hurt": {
- "protocol_id": 1225
- },
- "minecraft:entity.sheep.shear": {
- "protocol_id": 1226
- },
- "minecraft:entity.sheep.step": {
- "protocol_id": 1227
- },
- "minecraft:entity.shulker.ambient": {
- "protocol_id": 1236
- },
- "minecraft:entity.shulker.close": {
- "protocol_id": 1241
- },
- "minecraft:entity.shulker.death": {
- "protocol_id": 1242
- },
- "minecraft:entity.shulker.hurt": {
- "protocol_id": 1243
- },
- "minecraft:entity.shulker.hurt_closed": {
- "protocol_id": 1244
- },
- "minecraft:entity.shulker.open": {
- "protocol_id": 1245
- },
- "minecraft:entity.shulker.shoot": {
- "protocol_id": 1246
- },
- "minecraft:entity.shulker.teleport": {
- "protocol_id": 1247
- },
- "minecraft:entity.shulker_bullet.hit": {
- "protocol_id": 1239
- },
- "minecraft:entity.shulker_bullet.hurt": {
- "protocol_id": 1240
- },
- "minecraft:entity.silverfish.ambient": {
- "protocol_id": 1248
- },
- "minecraft:entity.silverfish.death": {
- "protocol_id": 1249
- },
- "minecraft:entity.silverfish.hurt": {
- "protocol_id": 1250
- },
- "minecraft:entity.silverfish.step": {
- "protocol_id": 1251
- },
- "minecraft:entity.skeleton.ambient": {
- "protocol_id": 1252
- },
- "minecraft:entity.skeleton.converted_to_stray": {
- "protocol_id": 1253
- },
- "minecraft:entity.skeleton.death": {
- "protocol_id": 1254
- },
- "minecraft:entity.skeleton.hurt": {
- "protocol_id": 1263
- },
- "minecraft:entity.skeleton.shoot": {
- "protocol_id": 1264
- },
- "minecraft:entity.skeleton.step": {
- "protocol_id": 1265
- },
- "minecraft:entity.skeleton_horse.ambient": {
- "protocol_id": 1255
- },
- "minecraft:entity.skeleton_horse.ambient_water": {
- "protocol_id": 1259
- },
- "minecraft:entity.skeleton_horse.death": {
- "protocol_id": 1256
- },
- "minecraft:entity.skeleton_horse.gallop_water": {
- "protocol_id": 1260
- },
- "minecraft:entity.skeleton_horse.hurt": {
- "protocol_id": 1257
- },
- "minecraft:entity.skeleton_horse.jump_water": {
- "protocol_id": 1261
- },
- "minecraft:entity.skeleton_horse.step_water": {
- "protocol_id": 1262
- },
- "minecraft:entity.skeleton_horse.swim": {
- "protocol_id": 1258
- },
- "minecraft:entity.slime.attack": {
- "protocol_id": 1266
- },
- "minecraft:entity.slime.death": {
- "protocol_id": 1267
- },
- "minecraft:entity.slime.death_small": {
- "protocol_id": 1308
- },
- "minecraft:entity.slime.hurt": {
- "protocol_id": 1268
- },
- "minecraft:entity.slime.hurt_small": {
- "protocol_id": 1309
- },
- "minecraft:entity.slime.jump": {
- "protocol_id": 1269
- },
- "minecraft:entity.slime.jump_small": {
- "protocol_id": 1310
- },
- "minecraft:entity.slime.squish": {
- "protocol_id": 1270
- },
- "minecraft:entity.slime.squish_small": {
- "protocol_id": 1311
- },
- "minecraft:entity.sniffer.death": {
- "protocol_id": 1318
- },
- "minecraft:entity.sniffer.digging": {
- "protocol_id": 1323
- },
- "minecraft:entity.sniffer.digging_stop": {
- "protocol_id": 1324
- },
- "minecraft:entity.sniffer.drop_seed": {
- "protocol_id": 1319
- },
- "minecraft:entity.sniffer.eat": {
- "protocol_id": 1315
- },
- "minecraft:entity.sniffer.happy": {
- "protocol_id": 1325
- },
- "minecraft:entity.sniffer.hurt": {
- "protocol_id": 1317
- },
- "minecraft:entity.sniffer.idle": {
- "protocol_id": 1316
- },
- "minecraft:entity.sniffer.scenting": {
- "protocol_id": 1320
- },
- "minecraft:entity.sniffer.searching": {
- "protocol_id": 1322
- },
- "minecraft:entity.sniffer.sniffing": {
- "protocol_id": 1321
- },
- "minecraft:entity.sniffer.step": {
- "protocol_id": 1314
- },
- "minecraft:entity.snow_golem.ambient": {
- "protocol_id": 1332
- },
- "minecraft:entity.snow_golem.death": {
- "protocol_id": 1333
- },
- "minecraft:entity.snow_golem.hurt": {
- "protocol_id": 1334
- },
- "minecraft:entity.snow_golem.shear": {
- "protocol_id": 1336
- },
- "minecraft:entity.snow_golem.shoot": {
- "protocol_id": 1335
- },
- "minecraft:entity.snowball.throw": {
- "protocol_id": 1329
- },
- "minecraft:entity.spider.ambient": {
- "protocol_id": 1340
- },
- "minecraft:entity.spider.death": {
- "protocol_id": 1341
- },
- "minecraft:entity.spider.hurt": {
- "protocol_id": 1342
- },
- "minecraft:entity.spider.step": {
- "protocol_id": 1343
- },
- "minecraft:entity.splash_potion.break": {
- "protocol_id": 1344
- },
- "minecraft:entity.splash_potion.throw": {
- "protocol_id": 1345
- },
- "minecraft:entity.squid.ambient": {
- "protocol_id": 1354
- },
- "minecraft:entity.squid.death": {
- "protocol_id": 1355
- },
- "minecraft:entity.squid.hurt": {
- "protocol_id": 1356
- },
- "minecraft:entity.squid.squirt": {
- "protocol_id": 1357
- },
- "minecraft:entity.stray.ambient": {
- "protocol_id": 1367
- },
- "minecraft:entity.stray.death": {
- "protocol_id": 1368
- },
- "minecraft:entity.stray.hurt": {
- "protocol_id": 1369
- },
- "minecraft:entity.stray.step": {
- "protocol_id": 1370
- },
- "minecraft:entity.strider.ambient": {
- "protocol_id": 1299
- },
- "minecraft:entity.strider.death": {
- "protocol_id": 1302
- },
- "minecraft:entity.strider.eat": {
- "protocol_id": 1306
- },
- "minecraft:entity.strider.happy": {
- "protocol_id": 1300
- },
- "minecraft:entity.strider.hurt": {
- "protocol_id": 1303
- },
- "minecraft:entity.strider.retreat": {
- "protocol_id": 1301
- },
- "minecraft:entity.strider.saddle": {
- "protocol_id": 1307
- },
- "minecraft:entity.strider.step": {
- "protocol_id": 1304
- },
- "minecraft:entity.strider.step_lava": {
- "protocol_id": 1305
- },
- "minecraft:entity.tadpole.death": {
- "protocol_id": 1374
- },
- "minecraft:entity.tadpole.flop": {
- "protocol_id": 1375
- },
- "minecraft:entity.tadpole.grow_up": {
- "protocol_id": 1376
- },
- "minecraft:entity.tadpole.hurt": {
- "protocol_id": 1377
- },
- "minecraft:entity.tnt.primed": {
- "protocol_id": 1379
- },
- "minecraft:entity.tropical_fish.ambient": {
- "protocol_id": 1393
- },
- "minecraft:entity.tropical_fish.death": {
- "protocol_id": 1394
- },
- "minecraft:entity.tropical_fish.flop": {
- "protocol_id": 1395
- },
- "minecraft:entity.tropical_fish.hurt": {
- "protocol_id": 1396
- },
- "minecraft:entity.turtle.ambient_land": {
- "protocol_id": 1412
- },
- "minecraft:entity.turtle.death": {
- "protocol_id": 1413
- },
- "minecraft:entity.turtle.death_baby": {
- "protocol_id": 1414
- },
- "minecraft:entity.turtle.egg_break": {
- "protocol_id": 1415
- },
- "minecraft:entity.turtle.egg_crack": {
- "protocol_id": 1416
- },
- "minecraft:entity.turtle.egg_hatch": {
- "protocol_id": 1417
- },
- "minecraft:entity.turtle.hurt": {
- "protocol_id": 1418
- },
- "minecraft:entity.turtle.hurt_baby": {
- "protocol_id": 1419
- },
- "minecraft:entity.turtle.lay_egg": {
- "protocol_id": 1420
- },
- "minecraft:entity.turtle.shamble": {
- "protocol_id": 1421
- },
- "minecraft:entity.turtle.shamble_baby": {
- "protocol_id": 1422
- },
- "minecraft:entity.turtle.swim": {
- "protocol_id": 1423
- },
- "minecraft:entity.vex.ambient": {
- "protocol_id": 1446
- },
- "minecraft:entity.vex.charge": {
- "protocol_id": 1447
- },
- "minecraft:entity.vex.death": {
- "protocol_id": 1448
- },
- "minecraft:entity.vex.hurt": {
- "protocol_id": 1449
- },
- "minecraft:entity.villager.ambient": {
- "protocol_id": 1450
- },
- "minecraft:entity.villager.celebrate": {
- "protocol_id": 1451
- },
- "minecraft:entity.villager.death": {
- "protocol_id": 1452
- },
- "minecraft:entity.villager.hurt": {
- "protocol_id": 1453
- },
- "minecraft:entity.villager.no": {
- "protocol_id": 1454
- },
- "minecraft:entity.villager.trade": {
- "protocol_id": 1455
- },
- "minecraft:entity.villager.work_armorer": {
- "protocol_id": 1457
- },
- "minecraft:entity.villager.work_butcher": {
- "protocol_id": 1458
- },
- "minecraft:entity.villager.work_cartographer": {
- "protocol_id": 1459
- },
- "minecraft:entity.villager.work_cleric": {
- "protocol_id": 1460
- },
- "minecraft:entity.villager.work_farmer": {
- "protocol_id": 1461
- },
- "minecraft:entity.villager.work_fisherman": {
- "protocol_id": 1462
- },
- "minecraft:entity.villager.work_fletcher": {
- "protocol_id": 1463
- },
- "minecraft:entity.villager.work_leatherworker": {
- "protocol_id": 1464
- },
- "minecraft:entity.villager.work_librarian": {
- "protocol_id": 1465
- },
- "minecraft:entity.villager.work_mason": {
- "protocol_id": 1466
- },
- "minecraft:entity.villager.work_shepherd": {
- "protocol_id": 1467
- },
- "minecraft:entity.villager.work_toolsmith": {
- "protocol_id": 1468
- },
- "minecraft:entity.villager.work_weaponsmith": {
- "protocol_id": 1469
- },
- "minecraft:entity.villager.yes": {
- "protocol_id": 1456
- },
- "minecraft:entity.vindicator.ambient": {
- "protocol_id": 1470
- },
- "minecraft:entity.vindicator.celebrate": {
- "protocol_id": 1471
- },
- "minecraft:entity.vindicator.death": {
- "protocol_id": 1472
- },
- "minecraft:entity.vindicator.hurt": {
- "protocol_id": 1473
- },
- "minecraft:entity.wandering_trader.ambient": {
- "protocol_id": 1480
- },
- "minecraft:entity.wandering_trader.death": {
- "protocol_id": 1481
- },
- "minecraft:entity.wandering_trader.disappeared": {
- "protocol_id": 1482
- },
- "minecraft:entity.wandering_trader.drink_milk": {
- "protocol_id": 1483
- },
- "minecraft:entity.wandering_trader.drink_potion": {
- "protocol_id": 1484
- },
- "minecraft:entity.wandering_trader.hurt": {
- "protocol_id": 1485
- },
- "minecraft:entity.wandering_trader.no": {
- "protocol_id": 1486
- },
- "minecraft:entity.wandering_trader.reappeared": {
- "protocol_id": 1487
- },
- "minecraft:entity.wandering_trader.trade": {
- "protocol_id": 1488
- },
- "minecraft:entity.wandering_trader.yes": {
- "protocol_id": 1489
- },
- "minecraft:entity.warden.agitated": {
- "protocol_id": 1490
- },
- "minecraft:entity.warden.ambient": {
- "protocol_id": 1491
- },
- "minecraft:entity.warden.angry": {
- "protocol_id": 1492
- },
- "minecraft:entity.warden.attack_impact": {
- "protocol_id": 1493
- },
- "minecraft:entity.warden.death": {
- "protocol_id": 1494
- },
- "minecraft:entity.warden.dig": {
- "protocol_id": 1495
- },
- "minecraft:entity.warden.emerge": {
- "protocol_id": 1496
- },
- "minecraft:entity.warden.heartbeat": {
- "protocol_id": 1497
- },
- "minecraft:entity.warden.hurt": {
- "protocol_id": 1498
- },
- "minecraft:entity.warden.listening": {
- "protocol_id": 1499
- },
- "minecraft:entity.warden.listening_angry": {
- "protocol_id": 1500
- },
- "minecraft:entity.warden.nearby_close": {
- "protocol_id": 1501
- },
- "minecraft:entity.warden.nearby_closer": {
- "protocol_id": 1502
- },
- "minecraft:entity.warden.nearby_closest": {
- "protocol_id": 1503
- },
- "minecraft:entity.warden.roar": {
- "protocol_id": 1504
- },
- "minecraft:entity.warden.sniff": {
- "protocol_id": 1505
- },
- "minecraft:entity.warden.sonic_boom": {
- "protocol_id": 1506
- },
- "minecraft:entity.warden.sonic_charge": {
- "protocol_id": 1507
- },
- "minecraft:entity.warden.step": {
- "protocol_id": 1508
- },
- "minecraft:entity.warden.tendril_clicks": {
- "protocol_id": 1509
- },
- "minecraft:entity.wind_charge.throw": {
- "protocol_id": 1527
- },
- "minecraft:entity.wind_charge.wind_burst": {
- "protocol_id": 1526
- },
- "minecraft:entity.witch.ambient": {
- "protocol_id": 1528
- },
- "minecraft:entity.witch.celebrate": {
- "protocol_id": 1529
- },
- "minecraft:entity.witch.death": {
- "protocol_id": 1530
- },
- "minecraft:entity.witch.drink": {
- "protocol_id": 1531
- },
- "minecraft:entity.witch.hurt": {
- "protocol_id": 1532
- },
- "minecraft:entity.witch.throw": {
- "protocol_id": 1533
- },
- "minecraft:entity.wither.ambient": {
- "protocol_id": 1534
- },
- "minecraft:entity.wither.break_block": {
- "protocol_id": 1535
- },
- "minecraft:entity.wither.death": {
- "protocol_id": 1536
- },
- "minecraft:entity.wither.hurt": {
- "protocol_id": 1537
- },
- "minecraft:entity.wither.shoot": {
- "protocol_id": 1538
- },
- "minecraft:entity.wither.spawn": {
- "protocol_id": 1543
- },
- "minecraft:entity.wither_skeleton.ambient": {
- "protocol_id": 1539
- },
- "minecraft:entity.wither_skeleton.death": {
- "protocol_id": 1540
- },
- "minecraft:entity.wither_skeleton.hurt": {
- "protocol_id": 1541
- },
- "minecraft:entity.wither_skeleton.step": {
- "protocol_id": 1542
- },
- "minecraft:entity.wolf.ambient": {
- "protocol_id": 1548
- },
- "minecraft:entity.wolf.death": {
- "protocol_id": 1549
- },
- "minecraft:entity.wolf.growl": {
- "protocol_id": 1550
- },
- "minecraft:entity.wolf.howl": {
- "protocol_id": 1551
- },
- "minecraft:entity.wolf.hurt": {
- "protocol_id": 1552
- },
- "minecraft:entity.wolf.pant": {
- "protocol_id": 1553
- },
- "minecraft:entity.wolf.shake": {
- "protocol_id": 1554
- },
- "minecraft:entity.wolf.step": {
- "protocol_id": 1555
- },
- "minecraft:entity.wolf.whine": {
- "protocol_id": 1556
- },
- "minecraft:entity.zoglin.ambient": {
- "protocol_id": 1575
- },
- "minecraft:entity.zoglin.angry": {
- "protocol_id": 1576
- },
- "minecraft:entity.zoglin.attack": {
- "protocol_id": 1577
- },
- "minecraft:entity.zoglin.death": {
- "protocol_id": 1578
- },
- "minecraft:entity.zoglin.hurt": {
- "protocol_id": 1579
- },
- "minecraft:entity.zoglin.step": {
- "protocol_id": 1580
- },
- "minecraft:entity.zombie.ambient": {
- "protocol_id": 1581
- },
- "minecraft:entity.zombie.attack_iron_door": {
- "protocol_id": 1583
- },
- "minecraft:entity.zombie.attack_wooden_door": {
- "protocol_id": 1582
- },
- "minecraft:entity.zombie.break_wooden_door": {
- "protocol_id": 1584
- },
- "minecraft:entity.zombie.converted_to_drowned": {
- "protocol_id": 1585
- },
- "minecraft:entity.zombie.death": {
- "protocol_id": 1586
- },
- "minecraft:entity.zombie.destroy_egg": {
- "protocol_id": 1587
- },
- "minecraft:entity.zombie.hurt": {
- "protocol_id": 1591
- },
- "minecraft:entity.zombie.infect": {
- "protocol_id": 1592
- },
- "minecraft:entity.zombie.step": {
- "protocol_id": 1597
- },
- "minecraft:entity.zombie_horse.ambient": {
- "protocol_id": 1588
- },
- "minecraft:entity.zombie_horse.death": {
- "protocol_id": 1589
- },
- "minecraft:entity.zombie_horse.hurt": {
- "protocol_id": 1590
- },
- "minecraft:entity.zombie_villager.ambient": {
- "protocol_id": 1598
- },
- "minecraft:entity.zombie_villager.converted": {
- "protocol_id": 1599
- },
- "minecraft:entity.zombie_villager.cure": {
- "protocol_id": 1600
- },
- "minecraft:entity.zombie_villager.death": {
- "protocol_id": 1601
- },
- "minecraft:entity.zombie_villager.hurt": {
- "protocol_id": 1602
- },
- "minecraft:entity.zombie_villager.step": {
- "protocol_id": 1603
- },
- "minecraft:entity.zombified_piglin.ambient": {
- "protocol_id": 1593
- },
- "minecraft:entity.zombified_piglin.angry": {
- "protocol_id": 1594
- },
- "minecraft:entity.zombified_piglin.death": {
- "protocol_id": 1595
- },
- "minecraft:entity.zombified_piglin.hurt": {
- "protocol_id": 1596
- },
- "minecraft:event.mob_effect.bad_omen": {
- "protocol_id": 1604
- },
- "minecraft:event.mob_effect.raid_omen": {
- "protocol_id": 1606
- },
- "minecraft:event.mob_effect.trial_omen": {
- "protocol_id": 1605
- },
- "minecraft:event.raid.horn": {
+ "minecraft:entity.rabbit.death": {
"protocol_id": 1149
},
+ "minecraft:entity.rabbit.hurt": {
+ "protocol_id": 1150
+ },
+ "minecraft:entity.rabbit.jump": {
+ "protocol_id": 1151
+ },
+ "minecraft:entity.ravager.ambient": {
+ "protocol_id": 1153
+ },
+ "minecraft:entity.ravager.attack": {
+ "protocol_id": 1154
+ },
+ "minecraft:entity.ravager.celebrate": {
+ "protocol_id": 1155
+ },
+ "minecraft:entity.ravager.death": {
+ "protocol_id": 1156
+ },
+ "minecraft:entity.ravager.hurt": {
+ "protocol_id": 1157
+ },
+ "minecraft:entity.ravager.roar": {
+ "protocol_id": 1160
+ },
+ "minecraft:entity.ravager.step": {
+ "protocol_id": 1158
+ },
+ "minecraft:entity.ravager.stunned": {
+ "protocol_id": 1159
+ },
+ "minecraft:entity.salmon.ambient": {
+ "protocol_id": 1181
+ },
+ "minecraft:entity.salmon.death": {
+ "protocol_id": 1182
+ },
+ "minecraft:entity.salmon.flop": {
+ "protocol_id": 1183
+ },
+ "minecraft:entity.salmon.hurt": {
+ "protocol_id": 1184
+ },
+ "minecraft:entity.sheep.ambient": {
+ "protocol_id": 1226
+ },
+ "minecraft:entity.sheep.death": {
+ "protocol_id": 1227
+ },
+ "minecraft:entity.sheep.hurt": {
+ "protocol_id": 1228
+ },
+ "minecraft:entity.sheep.shear": {
+ "protocol_id": 1229
+ },
+ "minecraft:entity.sheep.step": {
+ "protocol_id": 1230
+ },
+ "minecraft:entity.shulker.ambient": {
+ "protocol_id": 1239
+ },
+ "minecraft:entity.shulker.close": {
+ "protocol_id": 1244
+ },
+ "minecraft:entity.shulker.death": {
+ "protocol_id": 1245
+ },
+ "minecraft:entity.shulker.hurt": {
+ "protocol_id": 1246
+ },
+ "minecraft:entity.shulker.hurt_closed": {
+ "protocol_id": 1247
+ },
+ "minecraft:entity.shulker.open": {
+ "protocol_id": 1248
+ },
+ "minecraft:entity.shulker.shoot": {
+ "protocol_id": 1249
+ },
+ "minecraft:entity.shulker.teleport": {
+ "protocol_id": 1250
+ },
+ "minecraft:entity.shulker_bullet.hit": {
+ "protocol_id": 1242
+ },
+ "minecraft:entity.shulker_bullet.hurt": {
+ "protocol_id": 1243
+ },
+ "minecraft:entity.silverfish.ambient": {
+ "protocol_id": 1251
+ },
+ "minecraft:entity.silverfish.death": {
+ "protocol_id": 1252
+ },
+ "minecraft:entity.silverfish.hurt": {
+ "protocol_id": 1253
+ },
+ "minecraft:entity.silverfish.step": {
+ "protocol_id": 1254
+ },
+ "minecraft:entity.skeleton.ambient": {
+ "protocol_id": 1255
+ },
+ "minecraft:entity.skeleton.converted_to_stray": {
+ "protocol_id": 1256
+ },
+ "minecraft:entity.skeleton.death": {
+ "protocol_id": 1257
+ },
+ "minecraft:entity.skeleton.hurt": {
+ "protocol_id": 1266
+ },
+ "minecraft:entity.skeleton.shoot": {
+ "protocol_id": 1267
+ },
+ "minecraft:entity.skeleton.step": {
+ "protocol_id": 1268
+ },
+ "minecraft:entity.skeleton_horse.ambient": {
+ "protocol_id": 1258
+ },
+ "minecraft:entity.skeleton_horse.ambient_water": {
+ "protocol_id": 1262
+ },
+ "minecraft:entity.skeleton_horse.death": {
+ "protocol_id": 1259
+ },
+ "minecraft:entity.skeleton_horse.gallop_water": {
+ "protocol_id": 1263
+ },
+ "minecraft:entity.skeleton_horse.hurt": {
+ "protocol_id": 1260
+ },
+ "minecraft:entity.skeleton_horse.jump_water": {
+ "protocol_id": 1264
+ },
+ "minecraft:entity.skeleton_horse.step_water": {
+ "protocol_id": 1265
+ },
+ "minecraft:entity.skeleton_horse.swim": {
+ "protocol_id": 1261
+ },
+ "minecraft:entity.slime.attack": {
+ "protocol_id": 1269
+ },
+ "minecraft:entity.slime.death": {
+ "protocol_id": 1270
+ },
+ "minecraft:entity.slime.death_small": {
+ "protocol_id": 1311
+ },
+ "minecraft:entity.slime.hurt": {
+ "protocol_id": 1271
+ },
+ "minecraft:entity.slime.hurt_small": {
+ "protocol_id": 1312
+ },
+ "minecraft:entity.slime.jump": {
+ "protocol_id": 1272
+ },
+ "minecraft:entity.slime.jump_small": {
+ "protocol_id": 1313
+ },
+ "minecraft:entity.slime.squish": {
+ "protocol_id": 1273
+ },
+ "minecraft:entity.slime.squish_small": {
+ "protocol_id": 1314
+ },
+ "minecraft:entity.sniffer.death": {
+ "protocol_id": 1321
+ },
+ "minecraft:entity.sniffer.digging": {
+ "protocol_id": 1326
+ },
+ "minecraft:entity.sniffer.digging_stop": {
+ "protocol_id": 1327
+ },
+ "minecraft:entity.sniffer.drop_seed": {
+ "protocol_id": 1322
+ },
+ "minecraft:entity.sniffer.eat": {
+ "protocol_id": 1318
+ },
+ "minecraft:entity.sniffer.happy": {
+ "protocol_id": 1328
+ },
+ "minecraft:entity.sniffer.hurt": {
+ "protocol_id": 1320
+ },
+ "minecraft:entity.sniffer.idle": {
+ "protocol_id": 1319
+ },
+ "minecraft:entity.sniffer.scenting": {
+ "protocol_id": 1323
+ },
+ "minecraft:entity.sniffer.searching": {
+ "protocol_id": 1325
+ },
+ "minecraft:entity.sniffer.sniffing": {
+ "protocol_id": 1324
+ },
+ "minecraft:entity.sniffer.step": {
+ "protocol_id": 1317
+ },
+ "minecraft:entity.snow_golem.ambient": {
+ "protocol_id": 1335
+ },
+ "minecraft:entity.snow_golem.death": {
+ "protocol_id": 1336
+ },
+ "minecraft:entity.snow_golem.hurt": {
+ "protocol_id": 1337
+ },
+ "minecraft:entity.snow_golem.shear": {
+ "protocol_id": 1339
+ },
+ "minecraft:entity.snow_golem.shoot": {
+ "protocol_id": 1338
+ },
+ "minecraft:entity.snowball.throw": {
+ "protocol_id": 1332
+ },
+ "minecraft:entity.spider.ambient": {
+ "protocol_id": 1343
+ },
+ "minecraft:entity.spider.death": {
+ "protocol_id": 1344
+ },
+ "minecraft:entity.spider.hurt": {
+ "protocol_id": 1345
+ },
+ "minecraft:entity.spider.step": {
+ "protocol_id": 1346
+ },
+ "minecraft:entity.splash_potion.break": {
+ "protocol_id": 1347
+ },
+ "minecraft:entity.splash_potion.throw": {
+ "protocol_id": 1348
+ },
+ "minecraft:entity.squid.ambient": {
+ "protocol_id": 1357
+ },
+ "minecraft:entity.squid.death": {
+ "protocol_id": 1358
+ },
+ "minecraft:entity.squid.hurt": {
+ "protocol_id": 1359
+ },
+ "minecraft:entity.squid.squirt": {
+ "protocol_id": 1360
+ },
+ "minecraft:entity.stray.ambient": {
+ "protocol_id": 1370
+ },
+ "minecraft:entity.stray.death": {
+ "protocol_id": 1371
+ },
+ "minecraft:entity.stray.hurt": {
+ "protocol_id": 1372
+ },
+ "minecraft:entity.stray.step": {
+ "protocol_id": 1373
+ },
+ "minecraft:entity.strider.ambient": {
+ "protocol_id": 1302
+ },
+ "minecraft:entity.strider.death": {
+ "protocol_id": 1305
+ },
+ "minecraft:entity.strider.eat": {
+ "protocol_id": 1309
+ },
+ "minecraft:entity.strider.happy": {
+ "protocol_id": 1303
+ },
+ "minecraft:entity.strider.hurt": {
+ "protocol_id": 1306
+ },
+ "minecraft:entity.strider.retreat": {
+ "protocol_id": 1304
+ },
+ "minecraft:entity.strider.saddle": {
+ "protocol_id": 1310
+ },
+ "minecraft:entity.strider.step": {
+ "protocol_id": 1307
+ },
+ "minecraft:entity.strider.step_lava": {
+ "protocol_id": 1308
+ },
+ "minecraft:entity.tadpole.death": {
+ "protocol_id": 1377
+ },
+ "minecraft:entity.tadpole.flop": {
+ "protocol_id": 1378
+ },
+ "minecraft:entity.tadpole.grow_up": {
+ "protocol_id": 1379
+ },
+ "minecraft:entity.tadpole.hurt": {
+ "protocol_id": 1380
+ },
+ "minecraft:entity.tnt.primed": {
+ "protocol_id": 1382
+ },
+ "minecraft:entity.tropical_fish.ambient": {
+ "protocol_id": 1396
+ },
+ "minecraft:entity.tropical_fish.death": {
+ "protocol_id": 1397
+ },
+ "minecraft:entity.tropical_fish.flop": {
+ "protocol_id": 1398
+ },
+ "minecraft:entity.tropical_fish.hurt": {
+ "protocol_id": 1399
+ },
+ "minecraft:entity.turtle.ambient_land": {
+ "protocol_id": 1415
+ },
+ "minecraft:entity.turtle.death": {
+ "protocol_id": 1416
+ },
+ "minecraft:entity.turtle.death_baby": {
+ "protocol_id": 1417
+ },
+ "minecraft:entity.turtle.egg_break": {
+ "protocol_id": 1418
+ },
+ "minecraft:entity.turtle.egg_crack": {
+ "protocol_id": 1419
+ },
+ "minecraft:entity.turtle.egg_hatch": {
+ "protocol_id": 1420
+ },
+ "minecraft:entity.turtle.hurt": {
+ "protocol_id": 1421
+ },
+ "minecraft:entity.turtle.hurt_baby": {
+ "protocol_id": 1422
+ },
+ "minecraft:entity.turtle.lay_egg": {
+ "protocol_id": 1423
+ },
+ "minecraft:entity.turtle.shamble": {
+ "protocol_id": 1424
+ },
+ "minecraft:entity.turtle.shamble_baby": {
+ "protocol_id": 1425
+ },
+ "minecraft:entity.turtle.swim": {
+ "protocol_id": 1426
+ },
+ "minecraft:entity.vex.ambient": {
+ "protocol_id": 1450
+ },
+ "minecraft:entity.vex.charge": {
+ "protocol_id": 1451
+ },
+ "minecraft:entity.vex.death": {
+ "protocol_id": 1452
+ },
+ "minecraft:entity.vex.hurt": {
+ "protocol_id": 1453
+ },
+ "minecraft:entity.villager.ambient": {
+ "protocol_id": 1454
+ },
+ "minecraft:entity.villager.celebrate": {
+ "protocol_id": 1455
+ },
+ "minecraft:entity.villager.death": {
+ "protocol_id": 1456
+ },
+ "minecraft:entity.villager.hurt": {
+ "protocol_id": 1457
+ },
+ "minecraft:entity.villager.no": {
+ "protocol_id": 1458
+ },
+ "minecraft:entity.villager.trade": {
+ "protocol_id": 1459
+ },
+ "minecraft:entity.villager.work_armorer": {
+ "protocol_id": 1461
+ },
+ "minecraft:entity.villager.work_butcher": {
+ "protocol_id": 1462
+ },
+ "minecraft:entity.villager.work_cartographer": {
+ "protocol_id": 1463
+ },
+ "minecraft:entity.villager.work_cleric": {
+ "protocol_id": 1464
+ },
+ "minecraft:entity.villager.work_farmer": {
+ "protocol_id": 1465
+ },
+ "minecraft:entity.villager.work_fisherman": {
+ "protocol_id": 1466
+ },
+ "minecraft:entity.villager.work_fletcher": {
+ "protocol_id": 1467
+ },
+ "minecraft:entity.villager.work_leatherworker": {
+ "protocol_id": 1468
+ },
+ "minecraft:entity.villager.work_librarian": {
+ "protocol_id": 1469
+ },
+ "minecraft:entity.villager.work_mason": {
+ "protocol_id": 1470
+ },
+ "minecraft:entity.villager.work_shepherd": {
+ "protocol_id": 1471
+ },
+ "minecraft:entity.villager.work_toolsmith": {
+ "protocol_id": 1472
+ },
+ "minecraft:entity.villager.work_weaponsmith": {
+ "protocol_id": 1473
+ },
+ "minecraft:entity.villager.yes": {
+ "protocol_id": 1460
+ },
+ "minecraft:entity.vindicator.ambient": {
+ "protocol_id": 1474
+ },
+ "minecraft:entity.vindicator.celebrate": {
+ "protocol_id": 1475
+ },
+ "minecraft:entity.vindicator.death": {
+ "protocol_id": 1476
+ },
+ "minecraft:entity.vindicator.hurt": {
+ "protocol_id": 1477
+ },
+ "minecraft:entity.wandering_trader.ambient": {
+ "protocol_id": 1484
+ },
+ "minecraft:entity.wandering_trader.death": {
+ "protocol_id": 1485
+ },
+ "minecraft:entity.wandering_trader.disappeared": {
+ "protocol_id": 1486
+ },
+ "minecraft:entity.wandering_trader.drink_milk": {
+ "protocol_id": 1487
+ },
+ "minecraft:entity.wandering_trader.drink_potion": {
+ "protocol_id": 1488
+ },
+ "minecraft:entity.wandering_trader.hurt": {
+ "protocol_id": 1489
+ },
+ "minecraft:entity.wandering_trader.no": {
+ "protocol_id": 1490
+ },
+ "minecraft:entity.wandering_trader.reappeared": {
+ "protocol_id": 1491
+ },
+ "minecraft:entity.wandering_trader.trade": {
+ "protocol_id": 1492
+ },
+ "minecraft:entity.wandering_trader.yes": {
+ "protocol_id": 1493
+ },
+ "minecraft:entity.warden.agitated": {
+ "protocol_id": 1494
+ },
+ "minecraft:entity.warden.ambient": {
+ "protocol_id": 1495
+ },
+ "minecraft:entity.warden.angry": {
+ "protocol_id": 1496
+ },
+ "minecraft:entity.warden.attack_impact": {
+ "protocol_id": 1497
+ },
+ "minecraft:entity.warden.death": {
+ "protocol_id": 1498
+ },
+ "minecraft:entity.warden.dig": {
+ "protocol_id": 1499
+ },
+ "minecraft:entity.warden.emerge": {
+ "protocol_id": 1500
+ },
+ "minecraft:entity.warden.heartbeat": {
+ "protocol_id": 1501
+ },
+ "minecraft:entity.warden.hurt": {
+ "protocol_id": 1502
+ },
+ "minecraft:entity.warden.listening": {
+ "protocol_id": 1503
+ },
+ "minecraft:entity.warden.listening_angry": {
+ "protocol_id": 1504
+ },
+ "minecraft:entity.warden.nearby_close": {
+ "protocol_id": 1505
+ },
+ "minecraft:entity.warden.nearby_closer": {
+ "protocol_id": 1506
+ },
+ "minecraft:entity.warden.nearby_closest": {
+ "protocol_id": 1507
+ },
+ "minecraft:entity.warden.roar": {
+ "protocol_id": 1508
+ },
+ "minecraft:entity.warden.sniff": {
+ "protocol_id": 1509
+ },
+ "minecraft:entity.warden.sonic_boom": {
+ "protocol_id": 1510
+ },
+ "minecraft:entity.warden.sonic_charge": {
+ "protocol_id": 1511
+ },
+ "minecraft:entity.warden.step": {
+ "protocol_id": 1512
+ },
+ "minecraft:entity.warden.tendril_clicks": {
+ "protocol_id": 1513
+ },
+ "minecraft:entity.wind_charge.throw": {
+ "protocol_id": 1531
+ },
+ "minecraft:entity.wind_charge.wind_burst": {
+ "protocol_id": 1530
+ },
+ "minecraft:entity.witch.ambient": {
+ "protocol_id": 1532
+ },
+ "minecraft:entity.witch.celebrate": {
+ "protocol_id": 1533
+ },
+ "minecraft:entity.witch.death": {
+ "protocol_id": 1534
+ },
+ "minecraft:entity.witch.drink": {
+ "protocol_id": 1535
+ },
+ "minecraft:entity.witch.hurt": {
+ "protocol_id": 1536
+ },
+ "minecraft:entity.witch.throw": {
+ "protocol_id": 1537
+ },
+ "minecraft:entity.wither.ambient": {
+ "protocol_id": 1538
+ },
+ "minecraft:entity.wither.break_block": {
+ "protocol_id": 1539
+ },
+ "minecraft:entity.wither.death": {
+ "protocol_id": 1540
+ },
+ "minecraft:entity.wither.hurt": {
+ "protocol_id": 1541
+ },
+ "minecraft:entity.wither.shoot": {
+ "protocol_id": 1542
+ },
+ "minecraft:entity.wither.spawn": {
+ "protocol_id": 1547
+ },
+ "minecraft:entity.wither_skeleton.ambient": {
+ "protocol_id": 1543
+ },
+ "minecraft:entity.wither_skeleton.death": {
+ "protocol_id": 1544
+ },
+ "minecraft:entity.wither_skeleton.hurt": {
+ "protocol_id": 1545
+ },
+ "minecraft:entity.wither_skeleton.step": {
+ "protocol_id": 1546
+ },
+ "minecraft:entity.wolf.ambient": {
+ "protocol_id": 1552
+ },
+ "minecraft:entity.wolf.death": {
+ "protocol_id": 1553
+ },
+ "minecraft:entity.wolf.growl": {
+ "protocol_id": 1554
+ },
+ "minecraft:entity.wolf.howl": {
+ "protocol_id": 1555
+ },
+ "minecraft:entity.wolf.hurt": {
+ "protocol_id": 1556
+ },
+ "minecraft:entity.wolf.pant": {
+ "protocol_id": 1557
+ },
+ "minecraft:entity.wolf.shake": {
+ "protocol_id": 1558
+ },
+ "minecraft:entity.wolf.step": {
+ "protocol_id": 1559
+ },
+ "minecraft:entity.wolf.whine": {
+ "protocol_id": 1560
+ },
+ "minecraft:entity.zoglin.ambient": {
+ "protocol_id": 1579
+ },
+ "minecraft:entity.zoglin.angry": {
+ "protocol_id": 1580
+ },
+ "minecraft:entity.zoglin.attack": {
+ "protocol_id": 1581
+ },
+ "minecraft:entity.zoglin.death": {
+ "protocol_id": 1582
+ },
+ "minecraft:entity.zoglin.hurt": {
+ "protocol_id": 1583
+ },
+ "minecraft:entity.zoglin.step": {
+ "protocol_id": 1584
+ },
+ "minecraft:entity.zombie.ambient": {
+ "protocol_id": 1585
+ },
+ "minecraft:entity.zombie.attack_iron_door": {
+ "protocol_id": 1587
+ },
+ "minecraft:entity.zombie.attack_wooden_door": {
+ "protocol_id": 1586
+ },
+ "minecraft:entity.zombie.break_wooden_door": {
+ "protocol_id": 1588
+ },
+ "minecraft:entity.zombie.converted_to_drowned": {
+ "protocol_id": 1589
+ },
+ "minecraft:entity.zombie.death": {
+ "protocol_id": 1590
+ },
+ "minecraft:entity.zombie.destroy_egg": {
+ "protocol_id": 1591
+ },
+ "minecraft:entity.zombie.hurt": {
+ "protocol_id": 1595
+ },
+ "minecraft:entity.zombie.infect": {
+ "protocol_id": 1596
+ },
+ "minecraft:entity.zombie.step": {
+ "protocol_id": 1601
+ },
+ "minecraft:entity.zombie_horse.ambient": {
+ "protocol_id": 1592
+ },
+ "minecraft:entity.zombie_horse.death": {
+ "protocol_id": 1593
+ },
+ "minecraft:entity.zombie_horse.hurt": {
+ "protocol_id": 1594
+ },
+ "minecraft:entity.zombie_villager.ambient": {
+ "protocol_id": 1602
+ },
+ "minecraft:entity.zombie_villager.converted": {
+ "protocol_id": 1603
+ },
+ "minecraft:entity.zombie_villager.cure": {
+ "protocol_id": 1604
+ },
+ "minecraft:entity.zombie_villager.death": {
+ "protocol_id": 1605
+ },
+ "minecraft:entity.zombie_villager.hurt": {
+ "protocol_id": 1606
+ },
+ "minecraft:entity.zombie_villager.step": {
+ "protocol_id": 1607
+ },
+ "minecraft:entity.zombified_piglin.ambient": {
+ "protocol_id": 1597
+ },
+ "minecraft:entity.zombified_piglin.angry": {
+ "protocol_id": 1598
+ },
+ "minecraft:entity.zombified_piglin.death": {
+ "protocol_id": 1599
+ },
+ "minecraft:entity.zombified_piglin.hurt": {
+ "protocol_id": 1600
+ },
+ "minecraft:event.mob_effect.bad_omen": {
+ "protocol_id": 1608
+ },
+ "minecraft:event.mob_effect.raid_omen": {
+ "protocol_id": 1610
+ },
+ "minecraft:event.mob_effect.trial_omen": {
+ "protocol_id": 1609
+ },
+ "minecraft:event.raid.horn": {
+ "protocol_id": 1152
+ },
"minecraft:intentionally_empty": {
- "protocol_id": 937
+ "protocol_id": 940
},
"minecraft:item.armor.equip_chain": {
"protocol_id": 67
@@ -16387,64 +16451,64 @@
"protocol_id": 802
},
"minecraft:item.nether_wart.plant": {
- "protocol_id": 921
+ "protocol_id": 924
},
"minecraft:item.ominous_bottle.dispose": {
- "protocol_id": 1008
+ "protocol_id": 1011
},
"minecraft:item.shield.block": {
- "protocol_id": 1228
+ "protocol_id": 1231
},
"minecraft:item.shield.break": {
- "protocol_id": 1229
+ "protocol_id": 1232
},
"minecraft:item.shovel.flatten": {
- "protocol_id": 1235
+ "protocol_id": 1238
},
"minecraft:item.spyglass.stop_using": {
- "protocol_id": 1353
+ "protocol_id": 1356
},
"minecraft:item.spyglass.use": {
- "protocol_id": 1352
+ "protocol_id": 1355
},
"minecraft:item.totem.use": {
- "protocol_id": 1380
- },
- "minecraft:item.trident.hit": {
- "protocol_id": 1381
- },
- "minecraft:item.trident.hit_ground": {
- "protocol_id": 1382
- },
- "minecraft:item.trident.return": {
"protocol_id": 1383
},
- "minecraft:item.trident.riptide_1": {
+ "minecraft:item.trident.hit": {
"protocol_id": 1384
},
- "minecraft:item.trident.riptide_2": {
+ "minecraft:item.trident.hit_ground": {
"protocol_id": 1385
},
- "minecraft:item.trident.riptide_3": {
+ "minecraft:item.trident.return": {
"protocol_id": 1386
},
- "minecraft:item.trident.throw": {
+ "minecraft:item.trident.riptide_1": {
"protocol_id": 1387
},
- "minecraft:item.trident.thunder": {
+ "minecraft:item.trident.riptide_2": {
"protocol_id": 1388
},
+ "minecraft:item.trident.riptide_3": {
+ "protocol_id": 1389
+ },
+ "minecraft:item.trident.throw": {
+ "protocol_id": 1390
+ },
+ "minecraft:item.trident.thunder": {
+ "protocol_id": 1391
+ },
"minecraft:item.wolf_armor.break": {
- "protocol_id": 1544
+ "protocol_id": 1548
},
"minecraft:item.wolf_armor.crack": {
- "protocol_id": 1545
+ "protocol_id": 1549
},
"minecraft:item.wolf_armor.damage": {
- "protocol_id": 1546
+ "protocol_id": 1550
},
"minecraft:item.wolf_armor.repair": {
- "protocol_id": 1547
+ "protocol_id": 1551
},
"minecraft:music.creative": {
"protocol_id": 868
@@ -16453,92 +16517,92 @@
"protocol_id": 869
},
"minecraft:music.dragon": {
- "protocol_id": 886
- },
- "minecraft:music.end": {
- "protocol_id": 887
- },
- "minecraft:music.game": {
- "protocol_id": 888
- },
- "minecraft:music.menu": {
"protocol_id": 889
},
- "minecraft:music.nether.basalt_deltas": {
+ "minecraft:music.end": {
"protocol_id": 890
},
- "minecraft:music.nether.crimson_forest": {
+ "minecraft:music.game": {
"protocol_id": 891
},
- "minecraft:music.nether.nether_wastes": {
- "protocol_id": 902
- },
- "minecraft:music.nether.soul_sand_valley": {
- "protocol_id": 905
- },
- "minecraft:music.nether.warped_forest": {
- "protocol_id": 907
- },
- "minecraft:music.overworld.badlands": {
- "protocol_id": 910
- },
- "minecraft:music.overworld.bamboo_jungle": {
- "protocol_id": 913
- },
- "minecraft:music.overworld.cherry_grove": {
- "protocol_id": 901
- },
- "minecraft:music.overworld.deep_dark": {
+ "minecraft:music.menu": {
"protocol_id": 892
},
- "minecraft:music.overworld.desert": {
- "protocol_id": 909
- },
- "minecraft:music.overworld.dripstone_caves": {
+ "minecraft:music.nether.basalt_deltas": {
"protocol_id": 893
},
- "minecraft:music.overworld.flower_forest": {
- "protocol_id": 908
- },
- "minecraft:music.overworld.forest": {
- "protocol_id": 898
- },
- "minecraft:music.overworld.frozen_peaks": {
- "protocol_id": 903
- },
- "minecraft:music.overworld.grove": {
+ "minecraft:music.nether.crimson_forest": {
"protocol_id": 894
},
- "minecraft:music.overworld.jagged_peaks": {
- "protocol_id": 895
+ "minecraft:music.nether.nether_wastes": {
+ "protocol_id": 905
},
- "minecraft:music.overworld.jungle": {
- "protocol_id": 911
+ "minecraft:music.nether.soul_sand_valley": {
+ "protocol_id": 908
},
- "minecraft:music.overworld.lush_caves": {
- "protocol_id": 896
+ "minecraft:music.nether.warped_forest": {
+ "protocol_id": 910
},
- "minecraft:music.overworld.meadow": {
- "protocol_id": 900
+ "minecraft:music.overworld.badlands": {
+ "protocol_id": 913
},
- "minecraft:music.overworld.old_growth_taiga": {
- "protocol_id": 899
+ "minecraft:music.overworld.bamboo_jungle": {
+ "protocol_id": 916
},
- "minecraft:music.overworld.snowy_slopes": {
+ "minecraft:music.overworld.cherry_grove": {
"protocol_id": 904
},
- "minecraft:music.overworld.sparse_jungle": {
+ "minecraft:music.overworld.deep_dark": {
+ "protocol_id": 895
+ },
+ "minecraft:music.overworld.desert": {
"protocol_id": 912
},
- "minecraft:music.overworld.stony_peaks": {
+ "minecraft:music.overworld.dripstone_caves": {
+ "protocol_id": 896
+ },
+ "minecraft:music.overworld.flower_forest": {
+ "protocol_id": 911
+ },
+ "minecraft:music.overworld.forest": {
+ "protocol_id": 901
+ },
+ "minecraft:music.overworld.frozen_peaks": {
"protocol_id": 906
},
- "minecraft:music.overworld.swamp": {
+ "minecraft:music.overworld.grove": {
"protocol_id": 897
},
- "minecraft:music.under_water": {
+ "minecraft:music.overworld.jagged_peaks": {
+ "protocol_id": 898
+ },
+ "minecraft:music.overworld.jungle": {
"protocol_id": 914
},
+ "minecraft:music.overworld.lush_caves": {
+ "protocol_id": 899
+ },
+ "minecraft:music.overworld.meadow": {
+ "protocol_id": 903
+ },
+ "minecraft:music.overworld.old_growth_taiga": {
+ "protocol_id": 902
+ },
+ "minecraft:music.overworld.snowy_slopes": {
+ "protocol_id": 907
+ },
+ "minecraft:music.overworld.sparse_jungle": {
+ "protocol_id": 915
+ },
+ "minecraft:music.overworld.stony_peaks": {
+ "protocol_id": 909
+ },
+ "minecraft:music.overworld.swamp": {
+ "protocol_id": 900
+ },
+ "minecraft:music.under_water": {
+ "protocol_id": 917
+ },
"minecraft:music_disc.11": {
"protocol_id": 871
},
@@ -16557,6 +16621,12 @@
"minecraft:music_disc.chirp": {
"protocol_id": 875
},
+ "minecraft:music_disc.creator": {
+ "protocol_id": 886
+ },
+ "minecraft:music_disc.creator_music_box": {
+ "protocol_id": 887
+ },
"minecraft:music_disc.far": {
"protocol_id": 876
},
@@ -16572,6 +16642,9 @@
"minecraft:music_disc.pigstep": {
"protocol_id": 879
},
+ "minecraft:music_disc.precipice": {
+ "protocol_id": 888
+ },
"minecraft:music_disc.relic": {
"protocol_id": 885
},
@@ -16588,40 +16661,40 @@
"protocol_id": 883
},
"minecraft:particle.soul_escape": {
- "protocol_id": 1293
+ "protocol_id": 1296
},
"minecraft:ui.button.click": {
- "protocol_id": 1424
- },
- "minecraft:ui.cartography_table.take_result": {
"protocol_id": 1427
},
- "minecraft:ui.loom.select_pattern": {
- "protocol_id": 1425
- },
- "minecraft:ui.loom.take_result": {
- "protocol_id": 1426
- },
- "minecraft:ui.stonecutter.select_recipe": {
- "protocol_id": 1429
- },
- "minecraft:ui.stonecutter.take_result": {
- "protocol_id": 1428
- },
- "minecraft:ui.toast.challenge_complete": {
+ "minecraft:ui.cartography_table.take_result": {
"protocol_id": 1430
},
- "minecraft:ui.toast.in": {
- "protocol_id": 1431
+ "minecraft:ui.loom.select_pattern": {
+ "protocol_id": 1428
},
- "minecraft:ui.toast.out": {
+ "minecraft:ui.loom.take_result": {
+ "protocol_id": 1429
+ },
+ "minecraft:ui.stonecutter.select_recipe": {
"protocol_id": 1432
},
+ "minecraft:ui.stonecutter.take_result": {
+ "protocol_id": 1431
+ },
+ "minecraft:ui.toast.challenge_complete": {
+ "protocol_id": 1433
+ },
+ "minecraft:ui.toast.in": {
+ "protocol_id": 1434
+ },
+ "minecraft:ui.toast.out": {
+ "protocol_id": 1435
+ },
"minecraft:weather.rain": {
- "protocol_id": 1513
+ "protocol_id": 1517
},
"minecraft:weather.rain.above": {
- "protocol_id": 1514
+ "protocol_id": 1518
}
},
"protocol_id": 1
@@ -16656,7 +16729,7 @@
"protocol_id": 2
}
},
- "protocol_id": 23
+ "protocol_id": 21
},
"minecraft:trigger_type": {
"entries": {
@@ -16829,7 +16902,7 @@
"protocol_id": 34
}
},
- "protocol_id": 67
+ "protocol_id": 65
},
"minecraft:villager_profession": {
"default": "minecraft:none",
@@ -16880,7 +16953,7 @@
"protocol_id": 14
}
},
- "protocol_id": 25
+ "protocol_id": 23
},
"minecraft:villager_type": {
"default": "minecraft:plains",
@@ -16907,7 +16980,7 @@
"protocol_id": 6
}
},
- "protocol_id": 24
+ "protocol_id": 22
},
"minecraft:worldgen/biome_source": {
"entries": {
@@ -16924,7 +16997,7 @@
"protocol_id": 3
}
},
- "protocol_id": 53
+ "protocol_id": 51
},
"minecraft:worldgen/block_state_provider_type": {
"entries": {
@@ -16950,7 +17023,7 @@
"protocol_id": 1
}
},
- "protocol_id": 47
+ "protocol_id": 45
},
"minecraft:worldgen/carver": {
"entries": {
@@ -16964,7 +17037,7 @@
"protocol_id": 1
}
},
- "protocol_id": 41
+ "protocol_id": 39
},
"minecraft:worldgen/chunk_generator": {
"entries": {
@@ -16978,7 +17051,7 @@
"protocol_id": 0
}
},
- "protocol_id": 54
+ "protocol_id": 52
},
"minecraft:worldgen/density_function_type": {
"entries": {
@@ -17079,18 +17152,18 @@
"protocol_id": 31
}
},
- "protocol_id": 57
+ "protocol_id": 55
},
"minecraft:worldgen/feature": {
"entries": {
"minecraft:bamboo": {
- "protocol_id": 41
+ "protocol_id": 42
},
"minecraft:basalt_columns": {
- "protocol_id": 46
+ "protocol_id": 47
},
"minecraft:basalt_pillar": {
- "protocol_id": 51
+ "protocol_id": 52
},
"minecraft:block_column": {
"protocol_id": 18
@@ -17102,22 +17175,22 @@
"protocol_id": 25
},
"minecraft:bonus_chest": {
- "protocol_id": 50
+ "protocol_id": 51
},
"minecraft:chorus_plant": {
"protocol_id": 7
},
"minecraft:coral_claw": {
- "protocol_id": 38
+ "protocol_id": 39
},
"minecraft:coral_mushroom": {
- "protocol_id": 37
+ "protocol_id": 38
},
"minecraft:coral_tree": {
- "protocol_id": 36
+ "protocol_id": 37
},
"minecraft:delta_feature": {
- "protocol_id": 47
+ "protocol_id": 48
},
"minecraft:desert_well": {
"protocol_id": 10
@@ -17126,19 +17199,22 @@
"protocol_id": 28
},
"minecraft:dripstone_cluster": {
- "protocol_id": 57
+ "protocol_id": 58
},
"minecraft:end_gateway": {
- "protocol_id": 33
+ "protocol_id": 34
},
"minecraft:end_island": {
- "protocol_id": 32
+ "protocol_id": 33
},
- "minecraft:end_spike": {
+ "minecraft:end_platform": {
"protocol_id": 31
},
+ "minecraft:end_spike": {
+ "protocol_id": 32
+ },
"minecraft:fill_layer": {
- "protocol_id": 49
+ "protocol_id": 50
},
"minecraft:flower": {
"protocol_id": 2
@@ -17153,7 +17229,7 @@
"protocol_id": 16
},
"minecraft:geode": {
- "protocol_id": 56
+ "protocol_id": 57
},
"minecraft:glowstone_blob": {
"protocol_id": 15
@@ -17162,7 +17238,7 @@
"protocol_id": 13
},
"minecraft:huge_fungus": {
- "protocol_id": 42
+ "protocol_id": 43
},
"minecraft:huge_red_mushroom": {
"protocol_id": 12
@@ -17174,13 +17250,13 @@
"protocol_id": 26
},
"minecraft:kelp": {
- "protocol_id": 35
+ "protocol_id": 36
},
"minecraft:lake": {
"protocol_id": 29
},
"minecraft:large_dripstone": {
- "protocol_id": 58
+ "protocol_id": 59
},
"minecraft:monster_room": {
"protocol_id": 24
@@ -17189,10 +17265,10 @@
"protocol_id": 22
},
"minecraft:nether_forest_vegetation": {
- "protocol_id": 43
+ "protocol_id": 44
},
"minecraft:netherrack_replace_blobs": {
- "protocol_id": 48
+ "protocol_id": 49
},
"minecraft:no_bonemeal_flower": {
"protocol_id": 3
@@ -17204,16 +17280,16 @@
"protocol_id": 30
},
"minecraft:pointed_dripstone": {
- "protocol_id": 59
+ "protocol_id": 60
},
"minecraft:random_boolean_selector": {
- "protocol_id": 55
+ "protocol_id": 56
},
"minecraft:random_patch": {
"protocol_id": 4
},
"minecraft:random_selector": {
- "protocol_id": 53
+ "protocol_id": 54
},
"minecraft:replace_single_block": {
"protocol_id": 8
@@ -17222,22 +17298,22 @@
"protocol_id": 21
},
"minecraft:scattered_ore": {
- "protocol_id": 52
+ "protocol_id": 53
},
"minecraft:sculk_patch": {
- "protocol_id": 60
+ "protocol_id": 61
},
"minecraft:sea_pickle": {
- "protocol_id": 39
- },
- "minecraft:seagrass": {
- "protocol_id": 34
- },
- "minecraft:simple_block": {
"protocol_id": 40
},
+ "minecraft:seagrass": {
+ "protocol_id": 35
+ },
+ "minecraft:simple_block": {
+ "protocol_id": 41
+ },
"minecraft:simple_random_selector": {
- "protocol_id": 54
+ "protocol_id": 55
},
"minecraft:spring_feature": {
"protocol_id": 6
@@ -17246,7 +17322,7 @@
"protocol_id": 1
},
"minecraft:twisting_vines": {
- "protocol_id": 45
+ "protocol_id": 46
},
"minecraft:underwater_magma": {
"protocol_id": 23
@@ -17264,10 +17340,10 @@
"protocol_id": 20
},
"minecraft:weeping_vines": {
- "protocol_id": 44
+ "protocol_id": 45
}
},
- "protocol_id": 42
+ "protocol_id": 40
},
"minecraft:worldgen/feature_size_type": {
"entries": {
@@ -17278,7 +17354,7 @@
"protocol_id": 0
}
},
- "protocol_id": 52
+ "protocol_id": 50
},
"minecraft:worldgen/foliage_placer_type": {
"entries": {
@@ -17316,7 +17392,7 @@
"protocol_id": 1
}
},
- "protocol_id": 48
+ "protocol_id": 46
},
"minecraft:worldgen/material_condition": {
"entries": {
@@ -17354,7 +17430,7 @@
"protocol_id": 3
}
},
- "protocol_id": 55
+ "protocol_id": 53
},
"minecraft:worldgen/material_rule": {
"entries": {
@@ -17371,7 +17447,7 @@
"protocol_id": 2
}
},
- "protocol_id": 56
+ "protocol_id": 54
},
"minecraft:worldgen/placement_modifier_type": {
"entries": {
@@ -17393,6 +17469,9 @@
"minecraft:environment_scan": {
"protocol_id": 9
},
+ "minecraft:fixed_placement": {
+ "protocol_id": 15
+ },
"minecraft:height_range": {
"protocol_id": 11
},
@@ -17421,7 +17500,7 @@
"protocol_id": 3
}
},
- "protocol_id": 46
+ "protocol_id": 44
},
"minecraft:worldgen/pool_alias_binding": {
"entries": {
@@ -17435,7 +17514,7 @@
"protocol_id": 1
}
},
- "protocol_id": 61
+ "protocol_id": 59
},
"minecraft:worldgen/root_placer_type": {
"entries": {
@@ -17443,7 +17522,7 @@
"protocol_id": 0
}
},
- "protocol_id": 50
+ "protocol_id": 48
},
"minecraft:worldgen/structure_piece": {
"entries": {
@@ -17616,7 +17695,7 @@
"protocol_id": 51
}
},
- "protocol_id": 44
+ "protocol_id": 42
},
"minecraft:worldgen/structure_placement": {
"entries": {
@@ -17627,7 +17706,7 @@
"protocol_id": 0
}
},
- "protocol_id": 43
+ "protocol_id": 41
},
"minecraft:worldgen/structure_pool_element": {
"entries": {
@@ -17647,7 +17726,7 @@
"protocol_id": 0
}
},
- "protocol_id": 60
+ "protocol_id": 58
},
"minecraft:worldgen/structure_processor": {
"entries": {
@@ -17685,7 +17764,7 @@
"protocol_id": 4
}
},
- "protocol_id": 59
+ "protocol_id": 57
},
"minecraft:worldgen/structure_type": {
"entries": {
@@ -17738,7 +17817,7 @@
"protocol_id": 15
}
},
- "protocol_id": 45
+ "protocol_id": 43
},
"minecraft:worldgen/tree_decorator_type": {
"entries": {
@@ -17761,7 +17840,7 @@
"protocol_id": 0
}
},
- "protocol_id": 51
+ "protocol_id": 49
},
"minecraft:worldgen/trunk_placer_type": {
"entries": {
@@ -17793,6 +17872,6 @@
"protocol_id": 7
}
},
- "protocol_id": 49
+ "protocol_id": 47
}
}
\ No newline at end of file