Added Advancement manager and advancement scoring

This commit is contained in:
tastybento 2021-02-03 19:28:55 -08:00
parent 6e69cfbc0d
commit df58768b2c
9 changed files with 1256 additions and 85 deletions

View File

@ -0,0 +1,168 @@
package world.bentobox.boxed;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import org.bukkit.advancement.Advancement;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.database.Database;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.util.Util;
import world.bentobox.boxed.objects.IslandAdvancements;
/**
* Manages Island advancements
* @author tastybento
*
*/
public class AdvancementsManager {
private final Boxed addon;
// Database handler for level data
private final Database<IslandAdvancements> handler;
// A cache of island levels.
private final Map<String, IslandAdvancements> cache;
private final YamlConfiguration advConfig;
/**
* @param addon
*/
public AdvancementsManager(Boxed addon) {
this.addon = addon;
// Get the BentoBox database
// Set up the database handler to store and retrieve data
// Note that these are saved by the BentoBox database
handler = new Database<>(addon, IslandAdvancements.class);
// Initialize the cache
cache = new HashMap<>();
// Advancement score sheet
addon.saveResource("advancements.yml", false);
advConfig = new YamlConfiguration();
File advFile = new File(addon.getDataFolder(), "advancements.yml");
if (!advFile.exists()) {
addon.logError("advancements.yml cannot be found!");
} else {
try {
advConfig.load(advFile);
} catch (IOException | InvalidConfigurationException e) {
addon.logError("advancements.yml cannot be found! " + e.getLocalizedMessage());
}
}
}
/**
* Get advancements for the island, loading from database if required
* @param island
* @return the island's advancement list object
*/
@NonNull
protected IslandAdvancements getIsland(Island island) {
return cache.computeIfAbsent(island.getUniqueId(), k -> getFromDb(k));
}
@NonNull
private IslandAdvancements getFromDb(String k) {
if (!handler.objectExists(k)) {
return new IslandAdvancements(k);
}
@Nullable
IslandAdvancements ia = handler.loadObject(k);
return ia == null ? new IslandAdvancements(k) : ia;
}
/**
* Save the island
* @param island - island
* @return CompletableFuture true if saved successfully
*/
protected CompletableFuture<Boolean> saveIsland(Island island) {
return cache.containsKey(island.getUniqueId()) ? handler.saveObjectAsync(cache.get(island.getUniqueId())): CompletableFuture.completedFuture(true);
}
/**
* Save all values in the cache
*/
protected void save() {
cache.values().forEach(handler::saveObjectAsync);
}
/**
* Remove island from cache
* @param island - island
*/
protected void removeFromCache(Island island) {
cache.remove(island.getUniqueId());
}
/**
* Add advancement to island
* @param island - island
* @param advancement - advancement string
* @return true if added, false if already added
*/
public boolean addAdvancement(Island island, String advancement) {
if (hasAdvancement(island, advancement)) {
return false;
}
getIsland(island).getAdvancements().add(advancement);
this.saveIsland(island);
return true;
}
/**
* Remove advancement from island
* @param island - island
* @param advancement - advancement string
*/
public void removeAdvancement(Island island, String advancement) {
getIsland(island).getAdvancements().remove(advancement);
this.saveIsland(island);
}
/**
* Check if island has advancement
* @param island - island
* @param advancement - advancement
* @return true if island has advancement, false if not
*/
public boolean hasAdvancement(Island island, String advancement) {
return getIsland(island).getAdvancements().contains(advancement);
}
/**
* Add advancement to island and adjusts the island's protection size accordingly
* @param p - player who just advanced
* @param advancement - advancement
* @return score for advancement. 0 if the advancement was not added.
*/
public int addAvancement(Player p, Advancement advancement) {
if (!addon.getOverWorld().equals(Util.getWorld(p.getWorld()))) {
// Wrong world
return 0;
}
// Check score of advancement
int score = advConfig.getInt("advancements." + advancement.getKey().toString());
if (score == 0) {
return 0;
}
// Get island
Island island = addon.getIslands().getIsland(addon.getOverWorld(), p.getUniqueId());
if (island != null && addAdvancement(island, advancement.getKey().toString())) {
int newSize = Math.max(1, island.getProtectionRange() + score);
island.setProtectionRange(newSize);
return score;
}
return 0;
}
}

View File

@ -4,7 +4,6 @@ import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.WorldCreator;
import org.bukkit.WorldType;
import org.bukkit.event.Listener;
import org.bukkit.generator.ChunkGenerator;
import org.eclipse.jdt.annotation.Nullable;
@ -24,7 +23,7 @@ import world.bentobox.boxed.listeners.AdvancementListener;
* @author tastybento
* @author Poslovitch
*/
public class Boxed extends GameModeAddon implements Listener {
public class Boxed extends GameModeAddon {
private static final String NETHER = "_nether";
private static final String THE_END = "_the_end";
@ -33,6 +32,7 @@ public class Boxed extends GameModeAddon implements Listener {
private Settings settings;
private ChunkGenerator chunkGenerator;
private Config<Settings> configObject = new Config<>(this, Settings.class);
private AdvancementsManager advManager;
@Override
public void onLoad() {
@ -73,7 +73,7 @@ public class Boxed extends GameModeAddon implements Listener {
settings = configObject.loadConfigObject();
if (settings == null) {
// Disable
logError("Brix settings could not load! Addon disabled.");
logError("Boxed settings could not load! Addon disabled.");
setState(State.DISABLED);
return false;
}
@ -83,18 +83,21 @@ public class Boxed extends GameModeAddon implements Listener {
@Override
public void onEnable(){
// Register this
registerListener(this);
//registerListener(new JoinListener(this));
// Advancements manager
advManager = new AdvancementsManager(this);
}
@Override
public void onDisable() {
// Nothing to do here
// Save the advancements cache
getAdvManager().save();
}
@Override
public void onReload() {
if (loadSettings()) {
log("Reloaded Brix settings");
log("Reloaded Boxed settings");
}
}
@ -109,7 +112,7 @@ public class Boxed extends GameModeAddon implements Listener {
public void createWorlds() {
String worldName = settings.getWorldName().toLowerCase();
if (getServer().getWorld(worldName) == null) {
log("Creating Brix world ...");
log("Creating Boxed world ...");
}
// Create the world if it does not exist
@ -117,14 +120,14 @@ public class Boxed extends GameModeAddon implements Listener {
// Make the nether if it does not exist
if (settings.isNetherGenerate()) {
if (getServer().getWorld(worldName + NETHER) == null) {
log("Creating Brix's Nether...");
log("Creating Boxed's Nether...");
}
netherWorld = settings.isNetherIslands() ? getWorld(worldName, World.Environment.NETHER, chunkGenerator) : getWorld(worldName, World.Environment.NETHER, null);
}
// Make the end if it does not exist
if (settings.isEndGenerate()) {
if (getServer().getWorld(worldName + THE_END) == null) {
log("Creating Brix's End World...");
log("Creating Boxed's End World...");
}
endWorld = settings.isEndIslands() ? getWorld(worldName, World.Environment.THE_END, chunkGenerator) : getWorld(worldName, World.Environment.THE_END, null);
}
@ -195,4 +198,11 @@ public class Boxed extends GameModeAddon implements Listener {
this.saveWorldSettings();
}
/**
* @return the advManager
*/
public AdvancementsManager getAdvManager() {
return advManager;
}
}

View File

@ -35,7 +35,7 @@ public class Settings implements WorldSettings {
@ConfigComment("Player Command. What command users will run to access their area.")
@ConfigComment("To define alias, just separate commands with white space.")
@ConfigEntry(path = "boxed.command.player")
private String playerCommandAliases = "boxed br";
private String playerCommandAliases = "box bx boxed";
@ConfigComment("The admin command.")
@ConfigComment("To define alias, just separate commands with white space.")

View File

@ -1,9 +1,13 @@
package world.bentobox.boxed.listeners;
import org.bukkit.Sound;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.util.Util;
import world.bentobox.boxed.Boxed;
/**
@ -25,13 +29,15 @@ public class AdvancementListener implements Listener {
@EventHandler
public void onAdvancement(PlayerAdvancementDoneEvent e) {
if (e.getPlayer().getWorld().equals(addon.getOverWorld())
&& e.getAdvancement().getKey().getNamespace().equals("minecraft")
&& !e.getAdvancement().getKey().getKey().startsWith("recipes")) {
addon.getIslands().getIslandAt(e.getPlayer().getLocation()).ifPresent(i -> {
i.setProtectionRange(i.getProtectionRange() + 1);
i.getPlayersOnIsland().forEach(p -> p.sendRawMessage("Area expanded! " + e.getAdvancement().getKey() + " " + e.getAdvancement().getCriteria()));
});
if (e.getPlayer().getWorld().equals(addon.getOverWorld())) {
int score = addon.getAdvManager().addAvancement(e.getPlayer(), e.getAdvancement());
if (score != 0) {
User user = User.getInstance(e.getPlayer());
e.getPlayer().playSound(e.getPlayer().getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1F, 2F);
String adv = Util.prettifyText(e.getAdvancement().getKey().getKey().substring(e.getAdvancement().getKey().getKey().lastIndexOf("/"), e.getAdvancement().getKey().getKey().length()));
user.sendMessage("boxed.completed", TextVariables.NAME, adv);
user.sendMessage("boxed.size-changed", TextVariables.NUMBER, String.valueOf(score));
}
}
}

View File

@ -13,6 +13,7 @@ import world.bentobox.bentobox.BentoBox;
import world.bentobox.boxed.Boxed;
/**
* Just used for development right now
* @author tastybento
*
*/
@ -29,15 +30,16 @@ public class JoinListener implements Listener {
Iterator<Advancement> it = Bukkit.advancementIterator();
while (it.hasNext()) {
Advancement a = it.next();
if (!a.getKey().getKey().startsWith("recipe")) {
AdvancementProgress progress = e.getPlayer().getAdvancementProgress(a);
BentoBox.getInstance().logDebug(a.getKey() + " " + progress.isDone());
BentoBox.getInstance().logDebug("Awarded criteria");
progress.getAwardedCriteria().forEach(s -> BentoBox.getInstance().logDebug(s + " " + progress.getDateAwarded(s)));
//if (!a.getKey().getKey().startsWith("recipe")) {
AdvancementProgress progress = e.getPlayer().getAdvancementProgress(a);
BentoBox.getInstance().logDebug(a.getKey().toString());
//BentoBox.getInstance().logDebug(a.getKey() + " " + progress.isDone());
//BentoBox.getInstance().logDebug("Awarded criteria");
//progress.getAwardedCriteria().forEach(s -> BentoBox.getInstance().logDebug(s + " " + progress.getDateAwarded(s)));
BentoBox.getInstance().logDebug("Remaining criteria " + progress.getRemainingCriteria());
progress.getAwardedCriteria().forEach(progress::revokeCriteria);
}
//BentoBox.getInstance().logDebug("Remaining criteria " + progress.getRemainingCriteria());
//progress.getAwardedCriteria().forEach(progress::revokeCriteria);
//}
}
}

View File

@ -0,0 +1,55 @@
package world.bentobox.boxed.objects;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.annotations.Expose;
import world.bentobox.bentobox.database.objects.DataObject;
import world.bentobox.bentobox.database.objects.Table;
/**
* Stores the advancements for the island
* @author tastybento
*
*/
@Table(name = "IslandAdvancements")
public class IslandAdvancements implements DataObject {
@Expose
String uniqueId;
@Expose
List<String> advancements = new ArrayList<>();
/**
* @param uniqueId
*/
public IslandAdvancements(String uniqueId) {
this.uniqueId = uniqueId;
}
@Override
public String getUniqueId() {
return uniqueId;
}
@Override
public void setUniqueId(String uniqueId) {
this.uniqueId = uniqueId;
}
/**
* @return the advancements
*/
public List<String> getAdvancements() {
return advancements;
}
/**
* @param advancements the advancements to set
*/
public void setAdvancements(List<String> advancements) {
this.advancements = advancements;
}
}

View File

@ -0,0 +1,928 @@
advancements:
'minecraft:adventure/adventuring_time': 1
'minecraft:adventure/arbalistic': 1
'minecraft:adventure/bullseye': 1
'minecraft:adventure/hero_of_the_village': 1
'minecraft:adventure/honey_block_slide': 1
'minecraft:adventure/kill_a_mob': 1
'minecraft:adventure/kill_all_mobs': 1
'minecraft:adventure/ol_betsy': 1
'minecraft:adventure/root': 1
'minecraft:adventure/shoot_arrow': 1
'minecraft:adventure/sleep_in_bed': 1
'minecraft:adventure/sniper_duel': 1
'minecraft:adventure/summon_iron_golem': 1
'minecraft:adventure/throw_trident': 1
'minecraft:adventure/totem_of_undying': 1
'minecraft:adventure/trade': 1
'minecraft:adventure/two_birds_one_arrow': 1
'minecraft:adventure/very_very_frightening': 1
'minecraft:adventure/voluntary_exile': 1
'minecraft:adventure/whos_the_pillager_now': 1
'minecraft:end/dragon_breath': 1
'minecraft:end/dragon_egg': 1
'minecraft:end/elytra': 1
'minecraft:end/enter_end_gateway': 1
'minecraft:end/find_end_city': 1
'minecraft:end/kill_dragon': 1
'minecraft:end/levitate': 1
'minecraft:end/respawn_dragon': 1
'minecraft:end/root': 1
'minecraft:husbandry/balanced_diet': 1
'minecraft:husbandry/bred_all_animals': 1
'minecraft:husbandry/breed_an_animal': 1
'minecraft:husbandry/complete_catalogue': 1
'minecraft:husbandry/fishy_business': 1
'minecraft:husbandry/obtain_netherite_hoe': 1
'minecraft:husbandry/plant_seed': 1
'minecraft:husbandry/root': 1
'minecraft:husbandry/safely_harvest_honey': 1
'minecraft:husbandry/silk_touch_nest': 1
'minecraft:husbandry/tactical_fishing': 1
'minecraft:husbandry/tame_an_animal': 1
'minecraft:nether/all_effects': 1
'minecraft:nether/all_potions': 1
'minecraft:nether/brew_potion': 1
'minecraft:nether/charge_respawn_anchor': 1
'minecraft:nether/create_beacon': 1
'minecraft:nether/create_full_beacon': 1
'minecraft:nether/distract_piglin': 1
'minecraft:nether/explore_nether': 1
'minecraft:nether/fast_travel': 1
'minecraft:nether/find_bastion': 1
'minecraft:nether/find_fortress': 1
'minecraft:nether/get_wither_skull': 1
'minecraft:nether/loot_bastion': 1
'minecraft:nether/netherite_armor': 1
'minecraft:nether/obtain_ancient_debris': 1
'minecraft:nether/obtain_blaze_rod': 1
'minecraft:nether/obtain_crying_obsidian': 1
'minecraft:nether/return_to_sender': 1
'minecraft:nether/ride_strider': 1
'minecraft:nether/root': 1
'minecraft:nether/summon_wither': 1
'minecraft:nether/uneasy_alliance': 1
'minecraft:nether/use_lodestone': 1
'minecraft:recipes/brewing/blaze_powder': 0
'minecraft:recipes/brewing/brewing_stand': 0
'minecraft:recipes/brewing/cauldron': 0
'minecraft:recipes/brewing/fermented_spider_eye': 0
'minecraft:recipes/brewing/glass_bottle': 0
'minecraft:recipes/brewing/glistering_melon_slice': 0
'minecraft:recipes/brewing/golden_carrot': 0
'minecraft:recipes/brewing/magma_cream': 0
'minecraft:recipes/building_blocks/acacia_planks': 0
'minecraft:recipes/building_blocks/acacia_slab': 0
'minecraft:recipes/building_blocks/acacia_stairs': 0
'minecraft:recipes/building_blocks/acacia_wood': 0
'minecraft:recipes/building_blocks/andesite': 0
'minecraft:recipes/building_blocks/andesite_slab': 0
'minecraft:recipes/building_blocks/andesite_slab_from_andesite_stonecutting': 0
'minecraft:recipes/building_blocks/andesite_stairs': 0
'minecraft:recipes/building_blocks/andesite_stairs_from_andesite_stonecutting': 0
'minecraft:recipes/building_blocks/birch_planks': 0
'minecraft:recipes/building_blocks/birch_slab': 0
'minecraft:recipes/building_blocks/birch_stairs': 0
'minecraft:recipes/building_blocks/birch_wood': 0
'minecraft:recipes/building_blocks/black_concrete_powder': 0
'minecraft:recipes/building_blocks/black_stained_glass': 0
'minecraft:recipes/building_blocks/black_terracotta': 0
'minecraft:recipes/building_blocks/black_wool': 0
'minecraft:recipes/building_blocks/blackstone_slab': 0
'minecraft:recipes/building_blocks/blackstone_slab_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/blackstone_stairs': 0
'minecraft:recipes/building_blocks/blackstone_stairs_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/blue_concrete_powder': 0
'minecraft:recipes/building_blocks/blue_ice': 0
'minecraft:recipes/building_blocks/blue_stained_glass': 0
'minecraft:recipes/building_blocks/blue_terracotta': 0
'minecraft:recipes/building_blocks/blue_wool': 0
'minecraft:recipes/building_blocks/bone_block': 0
'minecraft:recipes/building_blocks/bookshelf': 0
'minecraft:recipes/building_blocks/brick_slab': 0
'minecraft:recipes/building_blocks/brick_slab_from_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/brick_stairs': 0
'minecraft:recipes/building_blocks/brick_stairs_from_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/bricks': 0
'minecraft:recipes/building_blocks/brown_concrete_powder': 0
'minecraft:recipes/building_blocks/brown_stained_glass': 0
'minecraft:recipes/building_blocks/brown_terracotta': 0
'minecraft:recipes/building_blocks/brown_wool': 0
'minecraft:recipes/building_blocks/chiseled_nether_bricks': 0
'minecraft:recipes/building_blocks/chiseled_nether_bricks_from_nether_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/chiseled_polished_blackstone': 0
'minecraft:recipes/building_blocks/chiseled_polished_blackstone_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/chiseled_polished_blackstone_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/chiseled_quartz_block': 0
'minecraft:recipes/building_blocks/chiseled_quartz_block_from_quartz_block_stonecutting': 0
'minecraft:recipes/building_blocks/chiseled_red_sandstone': 0
'minecraft:recipes/building_blocks/chiseled_red_sandstone_from_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/chiseled_sandstone': 0
'minecraft:recipes/building_blocks/chiseled_sandstone_from_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/chiseled_stone_bricks': 0
'minecraft:recipes/building_blocks/chiseled_stone_bricks_from_stone_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/chiseled_stone_bricks_stone_from_stonecutting': 0
'minecraft:recipes/building_blocks/clay': 0
'minecraft:recipes/building_blocks/coal_block': 0
'minecraft:recipes/building_blocks/coarse_dirt': 0
'minecraft:recipes/building_blocks/cobblestone_slab': 0
'minecraft:recipes/building_blocks/cobblestone_slab_from_cobblestone_stonecutting': 0
'minecraft:recipes/building_blocks/cobblestone_stairs': 0
'minecraft:recipes/building_blocks/cobblestone_stairs_from_cobblestone_stonecutting': 0
'minecraft:recipes/building_blocks/cracked_nether_bricks': 0
'minecraft:recipes/building_blocks/cracked_polished_blackstone_bricks': 0
'minecraft:recipes/building_blocks/cracked_stone_bricks': 0
'minecraft:recipes/building_blocks/crimson_hyphae': 0
'minecraft:recipes/building_blocks/crimson_planks': 0
'minecraft:recipes/building_blocks/crimson_slab': 0
'minecraft:recipes/building_blocks/crimson_stairs': 0
'minecraft:recipes/building_blocks/cut_red_sandstone': 0
'minecraft:recipes/building_blocks/cut_red_sandstone_from_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/cut_red_sandstone_slab': 0
'minecraft:recipes/building_blocks/cut_red_sandstone_slab_from_cut_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/cut_red_sandstone_slab_from_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/cut_sandstone': 0
'minecraft:recipes/building_blocks/cut_sandstone_from_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/cut_sandstone_slab': 0
'minecraft:recipes/building_blocks/cut_sandstone_slab_from_cut_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/cut_sandstone_slab_from_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/cyan_concrete_powder': 0
'minecraft:recipes/building_blocks/cyan_stained_glass': 0
'minecraft:recipes/building_blocks/cyan_terracotta': 0
'minecraft:recipes/building_blocks/cyan_wool': 0
'minecraft:recipes/building_blocks/dark_oak_planks': 0
'minecraft:recipes/building_blocks/dark_oak_slab': 0
'minecraft:recipes/building_blocks/dark_oak_stairs': 0
'minecraft:recipes/building_blocks/dark_oak_wood': 0
'minecraft:recipes/building_blocks/dark_prismarine': 0
'minecraft:recipes/building_blocks/dark_prismarine_slab': 0
'minecraft:recipes/building_blocks/dark_prismarine_slab_from_dark_prismarine_stonecutting': 0
'minecraft:recipes/building_blocks/dark_prismarine_stairs': 0
'minecraft:recipes/building_blocks/dark_prismarine_stairs_from_dark_prismarine_stonecutting': 0
'minecraft:recipes/building_blocks/diamond_block': 0
'minecraft:recipes/building_blocks/diorite': 0
'minecraft:recipes/building_blocks/diorite_slab': 0
'minecraft:recipes/building_blocks/diorite_slab_from_diorite_stonecutting': 0
'minecraft:recipes/building_blocks/diorite_stairs': 0
'minecraft:recipes/building_blocks/diorite_stairs_from_diorite_stonecutting': 0
'minecraft:recipes/building_blocks/dried_kelp_block': 0
'minecraft:recipes/building_blocks/emerald_block': 0
'minecraft:recipes/building_blocks/end_stone_brick_slab': 0
'minecraft:recipes/building_blocks/end_stone_brick_slab_from_end_stone_brick_stonecutting': 0
'minecraft:recipes/building_blocks/end_stone_brick_slab_from_end_stone_stonecutting': 0
'minecraft:recipes/building_blocks/end_stone_brick_stairs': 0
'minecraft:recipes/building_blocks/end_stone_brick_stairs_from_end_stone_brick_stonecutting': 0
'minecraft:recipes/building_blocks/end_stone_brick_stairs_from_end_stone_stonecutting': 0
'minecraft:recipes/building_blocks/end_stone_bricks': 0
'minecraft:recipes/building_blocks/end_stone_bricks_from_end_stone_stonecutting': 0
'minecraft:recipes/building_blocks/glass': 0
'minecraft:recipes/building_blocks/glowstone': 0
'minecraft:recipes/building_blocks/gold_block': 0
'minecraft:recipes/building_blocks/granite': 0
'minecraft:recipes/building_blocks/granite_slab': 0
'minecraft:recipes/building_blocks/granite_slab_from_granite_stonecutting': 0
'minecraft:recipes/building_blocks/granite_stairs': 0
'minecraft:recipes/building_blocks/granite_stairs_from_granite_stonecutting': 0
'minecraft:recipes/building_blocks/gray_concrete_powder': 0
'minecraft:recipes/building_blocks/gray_stained_glass': 0
'minecraft:recipes/building_blocks/gray_terracotta': 0
'minecraft:recipes/building_blocks/gray_wool': 0
'minecraft:recipes/building_blocks/green_concrete_powder': 0
'minecraft:recipes/building_blocks/green_stained_glass': 0
'minecraft:recipes/building_blocks/green_terracotta': 0
'minecraft:recipes/building_blocks/green_wool': 0
'minecraft:recipes/building_blocks/hay_block': 0
'minecraft:recipes/building_blocks/iron_block': 0
'minecraft:recipes/building_blocks/jack_o_lantern': 0
'minecraft:recipes/building_blocks/jungle_planks': 0
'minecraft:recipes/building_blocks/jungle_slab': 0
'minecraft:recipes/building_blocks/jungle_stairs': 0
'minecraft:recipes/building_blocks/jungle_wood': 0
'minecraft:recipes/building_blocks/lapis_block': 0
'minecraft:recipes/building_blocks/light_blue_concrete_powder': 0
'minecraft:recipes/building_blocks/light_blue_stained_glass': 0
'minecraft:recipes/building_blocks/light_blue_terracotta': 0
'minecraft:recipes/building_blocks/light_blue_wool': 0
'minecraft:recipes/building_blocks/light_gray_concrete_powder': 0
'minecraft:recipes/building_blocks/light_gray_stained_glass': 0
'minecraft:recipes/building_blocks/light_gray_terracotta': 0
'minecraft:recipes/building_blocks/light_gray_wool': 0
'minecraft:recipes/building_blocks/lime_concrete_powder': 0
'minecraft:recipes/building_blocks/lime_stained_glass': 0
'minecraft:recipes/building_blocks/lime_terracotta': 0
'minecraft:recipes/building_blocks/lime_wool': 0
'minecraft:recipes/building_blocks/magenta_concrete_powder': 0
'minecraft:recipes/building_blocks/magenta_stained_glass': 0
'minecraft:recipes/building_blocks/magenta_terracotta': 0
'minecraft:recipes/building_blocks/magenta_wool': 0
'minecraft:recipes/building_blocks/magma_block': 0
'minecraft:recipes/building_blocks/melon': 0
'minecraft:recipes/building_blocks/mossy_cobblestone': 0
'minecraft:recipes/building_blocks/mossy_cobblestone_slab': 0
'minecraft:recipes/building_blocks/mossy_cobblestone_slab_from_mossy_cobblestone_stonecutting': 0
'minecraft:recipes/building_blocks/mossy_cobblestone_stairs': 0
'minecraft:recipes/building_blocks/mossy_cobblestone_stairs_from_mossy_cobblestone_stonecutting': 0
'minecraft:recipes/building_blocks/mossy_stone_brick_slab': 0
'minecraft:recipes/building_blocks/mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting': 0
'minecraft:recipes/building_blocks/mossy_stone_brick_stairs': 0
'minecraft:recipes/building_blocks/mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting': 0
'minecraft:recipes/building_blocks/mossy_stone_bricks': 0
'minecraft:recipes/building_blocks/nether_brick_slab': 0
'minecraft:recipes/building_blocks/nether_brick_slab_from_nether_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/nether_brick_stairs': 0
'minecraft:recipes/building_blocks/nether_brick_stairs_from_nether_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/nether_bricks': 0
'minecraft:recipes/building_blocks/nether_wart_block': 0
'minecraft:recipes/building_blocks/netherite_block': 0
'minecraft:recipes/building_blocks/oak_planks': 0
'minecraft:recipes/building_blocks/oak_slab': 0
'minecraft:recipes/building_blocks/oak_stairs': 0
'minecraft:recipes/building_blocks/oak_wood': 0
'minecraft:recipes/building_blocks/orange_concrete_powder': 0
'minecraft:recipes/building_blocks/orange_stained_glass': 0
'minecraft:recipes/building_blocks/orange_terracotta': 0
'minecraft:recipes/building_blocks/orange_wool': 0
'minecraft:recipes/building_blocks/packed_ice': 0
'minecraft:recipes/building_blocks/pink_concrete_powder': 0
'minecraft:recipes/building_blocks/pink_stained_glass': 0
'minecraft:recipes/building_blocks/pink_terracotta': 0
'minecraft:recipes/building_blocks/pink_wool': 0
'minecraft:recipes/building_blocks/polished_andesite': 0
'minecraft:recipes/building_blocks/polished_andesite_from_andesite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_andesite_slab': 0
'minecraft:recipes/building_blocks/polished_andesite_slab_from_andesite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_andesite_slab_from_polished_andesite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_andesite_stairs': 0
'minecraft:recipes/building_blocks/polished_andesite_stairs_from_andesite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_andesite_stairs_from_polished_andesite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_basalt': 0
'minecraft:recipes/building_blocks/polished_basalt_from_basalt_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_slab': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_slab_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_slab_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_stairs': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_stairs_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_brick_stairs_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_bricks': 0
'minecraft:recipes/building_blocks/polished_blackstone_bricks_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_bricks_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_slab': 0
'minecraft:recipes/building_blocks/polished_blackstone_slab_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_slab_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_stairs': 0
'minecraft:recipes/building_blocks/polished_blackstone_stairs_from_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_blackstone_stairs_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/building_blocks/polished_diorite': 0
'minecraft:recipes/building_blocks/polished_diorite_from_diorite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_diorite_slab': 0
'minecraft:recipes/building_blocks/polished_diorite_slab_from_diorite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_diorite_slab_from_polished_diorite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_diorite_stairs': 0
'minecraft:recipes/building_blocks/polished_diorite_stairs_from_diorite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_diorite_stairs_from_polished_diorite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_granite': 0
'minecraft:recipes/building_blocks/polished_granite_from_granite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_granite_slab': 0
'minecraft:recipes/building_blocks/polished_granite_slab_from_granite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_granite_slab_from_polished_granite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_granite_stairs': 0
'minecraft:recipes/building_blocks/polished_granite_stairs_from_granite_stonecutting': 0
'minecraft:recipes/building_blocks/polished_granite_stairs_from_polished_granite_stonecutting': 0
'minecraft:recipes/building_blocks/prismarine': 0
'minecraft:recipes/building_blocks/prismarine_brick_slab': 0
'minecraft:recipes/building_blocks/prismarine_brick_slab_from_prismarine_stonecutting': 0
'minecraft:recipes/building_blocks/prismarine_brick_stairs': 0
'minecraft:recipes/building_blocks/prismarine_brick_stairs_from_prismarine_stonecutting': 0
'minecraft:recipes/building_blocks/prismarine_bricks': 0
'minecraft:recipes/building_blocks/prismarine_slab': 0
'minecraft:recipes/building_blocks/prismarine_slab_from_prismarine_stonecutting': 0
'minecraft:recipes/building_blocks/prismarine_stairs': 0
'minecraft:recipes/building_blocks/prismarine_stairs_from_prismarine_stonecutting': 0
'minecraft:recipes/building_blocks/purple_concrete_powder': 0
'minecraft:recipes/building_blocks/purple_stained_glass': 0
'minecraft:recipes/building_blocks/purple_terracotta': 0
'minecraft:recipes/building_blocks/purple_wool': 0
'minecraft:recipes/building_blocks/purpur_block': 0
'minecraft:recipes/building_blocks/purpur_pillar': 0
'minecraft:recipes/building_blocks/purpur_pillar_from_purpur_block_stonecutting': 0
'minecraft:recipes/building_blocks/purpur_slab': 0
'minecraft:recipes/building_blocks/purpur_slab_from_purpur_block_stonecutting': 0
'minecraft:recipes/building_blocks/purpur_stairs': 0
'minecraft:recipes/building_blocks/purpur_stairs_from_purpur_block_stonecutting': 0
'minecraft:recipes/building_blocks/quartz_block': 0
'minecraft:recipes/building_blocks/quartz_bricks': 0
'minecraft:recipes/building_blocks/quartz_bricks_from_quartz_block_stonecutting': 0
'minecraft:recipes/building_blocks/quartz_pillar': 0
'minecraft:recipes/building_blocks/quartz_pillar_from_quartz_block_stonecutting': 0
'minecraft:recipes/building_blocks/quartz_slab': 0
'minecraft:recipes/building_blocks/quartz_slab_from_stonecutting': 0
'minecraft:recipes/building_blocks/quartz_stairs': 0
'minecraft:recipes/building_blocks/quartz_stairs_from_quartz_block_stonecutting': 0
'minecraft:recipes/building_blocks/red_concrete_powder': 0
'minecraft:recipes/building_blocks/red_nether_brick_slab': 0
'minecraft:recipes/building_blocks/red_nether_brick_slab_from_red_nether_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/red_nether_brick_stairs': 0
'minecraft:recipes/building_blocks/red_nether_brick_stairs_from_red_nether_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/red_nether_bricks': 0
'minecraft:recipes/building_blocks/red_sandstone': 0
'minecraft:recipes/building_blocks/red_sandstone_slab': 0
'minecraft:recipes/building_blocks/red_sandstone_slab_from_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/red_sandstone_stairs': 0
'minecraft:recipes/building_blocks/red_sandstone_stairs_from_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/red_stained_glass': 0
'minecraft:recipes/building_blocks/red_terracotta': 0
'minecraft:recipes/building_blocks/red_wool': 0
'minecraft:recipes/building_blocks/sandstone': 0
'minecraft:recipes/building_blocks/sandstone_slab': 0
'minecraft:recipes/building_blocks/sandstone_slab_from_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/sandstone_stairs': 0
'minecraft:recipes/building_blocks/sandstone_stairs_from_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/sea_lantern': 0
'minecraft:recipes/building_blocks/smooth_quartz': 0
'minecraft:recipes/building_blocks/smooth_quartz_slab': 0
'minecraft:recipes/building_blocks/smooth_quartz_slab_from_smooth_quartz_stonecutting': 0
'minecraft:recipes/building_blocks/smooth_quartz_stairs': 0
'minecraft:recipes/building_blocks/smooth_quartz_stairs_from_smooth_quartz_stonecutting': 0
'minecraft:recipes/building_blocks/smooth_red_sandstone': 0
'minecraft:recipes/building_blocks/smooth_red_sandstone_slab': 0
'minecraft:recipes/building_blocks/smooth_red_sandstone_slab_from_smooth_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/smooth_red_sandstone_stairs': 0
'minecraft:recipes/building_blocks/smooth_red_sandstone_stairs_from_smooth_red_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/smooth_sandstone': 0
'minecraft:recipes/building_blocks/smooth_sandstone_slab': 0
'minecraft:recipes/building_blocks/smooth_sandstone_slab_from_smooth_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/smooth_sandstone_stairs': 0
'minecraft:recipes/building_blocks/smooth_sandstone_stairs_from_smooth_sandstone_stonecutting': 0
'minecraft:recipes/building_blocks/smooth_stone': 0
'minecraft:recipes/building_blocks/smooth_stone_slab': 0
'minecraft:recipes/building_blocks/smooth_stone_slab_from_smooth_stone_stonecutting': 0
'minecraft:recipes/building_blocks/snow_block': 0
'minecraft:recipes/building_blocks/sponge': 0
'minecraft:recipes/building_blocks/spruce_planks': 0
'minecraft:recipes/building_blocks/spruce_slab': 0
'minecraft:recipes/building_blocks/spruce_stairs': 0
'minecraft:recipes/building_blocks/spruce_wood': 0
'minecraft:recipes/building_blocks/stone': 0
'minecraft:recipes/building_blocks/stone_brick_slab': 0
'minecraft:recipes/building_blocks/stone_brick_slab_from_stone_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/stone_brick_slab_from_stone_stonecutting': 0
'minecraft:recipes/building_blocks/stone_brick_stairs': 0
'minecraft:recipes/building_blocks/stone_brick_stairs_from_stone_bricks_stonecutting': 0
'minecraft:recipes/building_blocks/stone_brick_stairs_from_stone_stonecutting': 0
'minecraft:recipes/building_blocks/stone_bricks': 0
'minecraft:recipes/building_blocks/stone_bricks_from_stone_stonecutting': 0
'minecraft:recipes/building_blocks/stone_slab': 0
'minecraft:recipes/building_blocks/stone_slab_from_stone_stonecutting': 0
'minecraft:recipes/building_blocks/stone_stairs': 0
'minecraft:recipes/building_blocks/stone_stairs_from_stone_stonecutting': 0
'minecraft:recipes/building_blocks/stripped_acacia_wood': 0
'minecraft:recipes/building_blocks/stripped_birch_wood': 0
'minecraft:recipes/building_blocks/stripped_crimson_hyphae': 0
'minecraft:recipes/building_blocks/stripped_dark_oak_wood': 0
'minecraft:recipes/building_blocks/stripped_jungle_wood': 0
'minecraft:recipes/building_blocks/stripped_oak_wood': 0
'minecraft:recipes/building_blocks/stripped_spruce_wood': 0
'minecraft:recipes/building_blocks/stripped_warped_hyphae': 0
'minecraft:recipes/building_blocks/terracotta': 0
'minecraft:recipes/building_blocks/warped_hyphae': 0
'minecraft:recipes/building_blocks/warped_planks': 0
'minecraft:recipes/building_blocks/warped_slab': 0
'minecraft:recipes/building_blocks/warped_stairs': 0
'minecraft:recipes/building_blocks/white_concrete_powder': 0
'minecraft:recipes/building_blocks/white_stained_glass': 0
'minecraft:recipes/building_blocks/white_terracotta': 0
'minecraft:recipes/building_blocks/white_wool_from_string': 0
'minecraft:recipes/building_blocks/yellow_concrete_powder': 0
'minecraft:recipes/building_blocks/yellow_stained_glass': 0
'minecraft:recipes/building_blocks/yellow_terracotta': 0
'minecraft:recipes/building_blocks/yellow_wool': 0
'minecraft:recipes/combat/arrow': 0
'minecraft:recipes/combat/bow': 0
'minecraft:recipes/combat/crossbow': 0
'minecraft:recipes/combat/diamond_boots': 0
'minecraft:recipes/combat/diamond_chestplate': 0
'minecraft:recipes/combat/diamond_helmet': 0
'minecraft:recipes/combat/diamond_leggings': 0
'minecraft:recipes/combat/diamond_sword': 0
'minecraft:recipes/combat/golden_boots': 0
'minecraft:recipes/combat/golden_chestplate': 0
'minecraft:recipes/combat/golden_helmet': 0
'minecraft:recipes/combat/golden_leggings': 0
'minecraft:recipes/combat/golden_sword': 0
'minecraft:recipes/combat/iron_boots': 0
'minecraft:recipes/combat/iron_chestplate': 0
'minecraft:recipes/combat/iron_helmet': 0
'minecraft:recipes/combat/iron_leggings': 0
'minecraft:recipes/combat/iron_sword': 0
'minecraft:recipes/combat/leather_boots': 0
'minecraft:recipes/combat/leather_chestplate': 0
'minecraft:recipes/combat/leather_helmet': 0
'minecraft:recipes/combat/leather_leggings': 0
'minecraft:recipes/combat/netherite_boots_smithing': 0
'minecraft:recipes/combat/netherite_chestplate_smithing': 0
'minecraft:recipes/combat/netherite_helmet_smithing': 0
'minecraft:recipes/combat/netherite_leggings_smithing': 0
'minecraft:recipes/combat/netherite_sword_smithing': 0
'minecraft:recipes/combat/shield': 0
'minecraft:recipes/combat/spectral_arrow': 0
'minecraft:recipes/combat/stone_sword': 0
'minecraft:recipes/combat/turtle_helmet': 0
'minecraft:recipes/combat/wooden_sword': 0
'minecraft:recipes/decorations/acacia_fence': 0
'minecraft:recipes/decorations/acacia_sign': 0
'minecraft:recipes/decorations/andesite_wall': 0
'minecraft:recipes/decorations/andesite_wall_from_andesite_stonecutting': 0
'minecraft:recipes/decorations/anvil': 0
'minecraft:recipes/decorations/armor_stand': 0
'minecraft:recipes/decorations/barrel': 0
'minecraft:recipes/decorations/beehive': 0
'minecraft:recipes/decorations/birch_fence': 0
'minecraft:recipes/decorations/birch_sign': 0
'minecraft:recipes/decorations/black_banner': 0
'minecraft:recipes/decorations/black_bed': 0
'minecraft:recipes/decorations/black_bed_from_white_bed': 0
'minecraft:recipes/decorations/black_carpet': 0
'minecraft:recipes/decorations/black_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/black_glazed_terracotta': 0
'minecraft:recipes/decorations/black_stained_glass_pane': 0
'minecraft:recipes/decorations/black_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/blackstone_wall': 0
'minecraft:recipes/decorations/blackstone_wall_from_blackstone_stonecutting': 0
'minecraft:recipes/decorations/blast_furnace': 0
'minecraft:recipes/decorations/blue_banner': 0
'minecraft:recipes/decorations/blue_bed': 0
'minecraft:recipes/decorations/blue_bed_from_white_bed': 0
'minecraft:recipes/decorations/blue_carpet': 0
'minecraft:recipes/decorations/blue_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/blue_glazed_terracotta': 0
'minecraft:recipes/decorations/blue_stained_glass_pane': 0
'minecraft:recipes/decorations/blue_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/brick_wall': 0
'minecraft:recipes/decorations/brick_wall_from_bricks_stonecutting': 0
'minecraft:recipes/decorations/brown_banner': 0
'minecraft:recipes/decorations/brown_bed': 0
'minecraft:recipes/decorations/brown_bed_from_white_bed': 0
'minecraft:recipes/decorations/brown_carpet': 0
'minecraft:recipes/decorations/brown_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/brown_glazed_terracotta': 0
'minecraft:recipes/decorations/brown_stained_glass_pane': 0
'minecraft:recipes/decorations/brown_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/campfire': 0
'minecraft:recipes/decorations/cartography_table': 0
'minecraft:recipes/decorations/chain': 0
'minecraft:recipes/decorations/chest': 0
'minecraft:recipes/decorations/cobblestone_wall': 0
'minecraft:recipes/decorations/cobblestone_wall_from_cobblestone_stonecutting': 0
'minecraft:recipes/decorations/composter': 0
'minecraft:recipes/decorations/crafting_table': 0
'minecraft:recipes/decorations/crimson_fence': 0
'minecraft:recipes/decorations/crimson_sign': 0
'minecraft:recipes/decorations/cyan_banner': 0
'minecraft:recipes/decorations/cyan_bed': 0
'minecraft:recipes/decorations/cyan_bed_from_white_bed': 0
'minecraft:recipes/decorations/cyan_carpet': 0
'minecraft:recipes/decorations/cyan_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/cyan_glazed_terracotta': 0
'minecraft:recipes/decorations/cyan_stained_glass_pane': 0
'minecraft:recipes/decorations/cyan_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/dark_oak_fence': 0
'minecraft:recipes/decorations/dark_oak_sign': 0
'minecraft:recipes/decorations/diorite_wall': 0
'minecraft:recipes/decorations/diorite_wall_from_diorite_stonecutting': 0
'minecraft:recipes/decorations/enchanting_table': 0
'minecraft:recipes/decorations/end_crystal': 0
'minecraft:recipes/decorations/end_rod': 0
'minecraft:recipes/decorations/end_stone_brick_wall': 0
'minecraft:recipes/decorations/end_stone_brick_wall_from_end_stone_brick_stonecutting': 0
'minecraft:recipes/decorations/end_stone_brick_wall_from_end_stone_stonecutting': 0
'minecraft:recipes/decorations/ender_chest': 0
'minecraft:recipes/decorations/fletching_table': 0
'minecraft:recipes/decorations/flower_pot': 0
'minecraft:recipes/decorations/furnace': 0
'minecraft:recipes/decorations/glass_pane': 0
'minecraft:recipes/decorations/granite_wall': 0
'minecraft:recipes/decorations/granite_wall_from_granite_stonecutting': 0
'minecraft:recipes/decorations/gray_banner': 0
'minecraft:recipes/decorations/gray_bed': 0
'minecraft:recipes/decorations/gray_bed_from_white_bed': 0
'minecraft:recipes/decorations/gray_carpet': 0
'minecraft:recipes/decorations/gray_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/gray_glazed_terracotta': 0
'minecraft:recipes/decorations/gray_stained_glass_pane': 0
'minecraft:recipes/decorations/gray_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/green_banner': 0
'minecraft:recipes/decorations/green_bed': 0
'minecraft:recipes/decorations/green_bed_from_white_bed': 0
'minecraft:recipes/decorations/green_carpet': 0
'minecraft:recipes/decorations/green_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/green_glazed_terracotta': 0
'minecraft:recipes/decorations/green_stained_glass_pane': 0
'minecraft:recipes/decorations/green_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/grindstone': 0
'minecraft:recipes/decorations/honey_block': 0
'minecraft:recipes/decorations/honeycomb_block': 0
'minecraft:recipes/decorations/iron_bars': 0
'minecraft:recipes/decorations/item_frame': 0
'minecraft:recipes/decorations/jukebox': 0
'minecraft:recipes/decorations/jungle_fence': 0
'minecraft:recipes/decorations/jungle_sign': 0
'minecraft:recipes/decorations/ladder': 0
'minecraft:recipes/decorations/lantern': 0
'minecraft:recipes/decorations/light_blue_banner': 0
'minecraft:recipes/decorations/light_blue_bed': 0
'minecraft:recipes/decorations/light_blue_bed_from_white_bed': 0
'minecraft:recipes/decorations/light_blue_carpet': 0
'minecraft:recipes/decorations/light_blue_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/light_blue_glazed_terracotta': 0
'minecraft:recipes/decorations/light_blue_stained_glass_pane': 0
'minecraft:recipes/decorations/light_blue_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/light_gray_banner': 0
'minecraft:recipes/decorations/light_gray_bed': 0
'minecraft:recipes/decorations/light_gray_bed_from_white_bed': 0
'minecraft:recipes/decorations/light_gray_carpet': 0
'minecraft:recipes/decorations/light_gray_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/light_gray_glazed_terracotta': 0
'minecraft:recipes/decorations/light_gray_stained_glass_pane': 0
'minecraft:recipes/decorations/light_gray_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/lime_banner': 0
'minecraft:recipes/decorations/lime_bed': 0
'minecraft:recipes/decorations/lime_bed_from_white_bed': 0
'minecraft:recipes/decorations/lime_carpet': 0
'minecraft:recipes/decorations/lime_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/lime_glazed_terracotta': 0
'minecraft:recipes/decorations/lime_stained_glass_pane': 0
'minecraft:recipes/decorations/lime_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/lodestone': 0
'minecraft:recipes/decorations/loom': 0
'minecraft:recipes/decorations/magenta_banner': 0
'minecraft:recipes/decorations/magenta_bed': 0
'minecraft:recipes/decorations/magenta_bed_from_white_bed': 0
'minecraft:recipes/decorations/magenta_carpet': 0
'minecraft:recipes/decorations/magenta_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/magenta_glazed_terracotta': 0
'minecraft:recipes/decorations/magenta_stained_glass_pane': 0
'minecraft:recipes/decorations/magenta_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/mossy_cobblestone_wall': 0
'minecraft:recipes/decorations/mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting': 0
'minecraft:recipes/decorations/mossy_stone_brick_wall': 0
'minecraft:recipes/decorations/mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting': 0
'minecraft:recipes/decorations/nether_brick_fence': 0
'minecraft:recipes/decorations/nether_brick_wall': 0
'minecraft:recipes/decorations/nether_brick_wall_from_nether_bricks_stonecutting': 0
'minecraft:recipes/decorations/oak_fence': 0
'minecraft:recipes/decorations/oak_sign': 0
'minecraft:recipes/decorations/orange_banner': 0
'minecraft:recipes/decorations/orange_bed': 0
'minecraft:recipes/decorations/orange_bed_from_white_bed': 0
'minecraft:recipes/decorations/orange_carpet': 0
'minecraft:recipes/decorations/orange_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/orange_glazed_terracotta': 0
'minecraft:recipes/decorations/orange_stained_glass_pane': 0
'minecraft:recipes/decorations/orange_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/painting': 0
'minecraft:recipes/decorations/pink_banner': 0
'minecraft:recipes/decorations/pink_bed': 0
'minecraft:recipes/decorations/pink_bed_from_white_bed': 0
'minecraft:recipes/decorations/pink_carpet': 0
'minecraft:recipes/decorations/pink_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/pink_glazed_terracotta': 0
'minecraft:recipes/decorations/pink_stained_glass_pane': 0
'minecraft:recipes/decorations/pink_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/polished_blackstone_brick_wall': 0
'minecraft:recipes/decorations/polished_blackstone_brick_wall_from_blackstone_stonecutting': 0
'minecraft:recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_bricks_stonecutting': 0
'minecraft:recipes/decorations/polished_blackstone_brick_wall_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/decorations/polished_blackstone_wall': 0
'minecraft:recipes/decorations/polished_blackstone_wall_from_blackstone_stonecutting': 0
'minecraft:recipes/decorations/polished_blackstone_wall_from_polished_blackstone_stonecutting': 0
'minecraft:recipes/decorations/prismarine_wall': 0
'minecraft:recipes/decorations/prismarine_wall_from_prismarine_stonecutting': 0
'minecraft:recipes/decorations/purple_banner': 0
'minecraft:recipes/decorations/purple_bed': 0
'minecraft:recipes/decorations/purple_bed_from_white_bed': 0
'minecraft:recipes/decorations/purple_carpet': 0
'minecraft:recipes/decorations/purple_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/purple_glazed_terracotta': 0
'minecraft:recipes/decorations/purple_stained_glass_pane': 0
'minecraft:recipes/decorations/purple_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/red_banner': 0
'minecraft:recipes/decorations/red_bed': 0
'minecraft:recipes/decorations/red_bed_from_white_bed': 0
'minecraft:recipes/decorations/red_carpet': 0
'minecraft:recipes/decorations/red_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/red_glazed_terracotta': 0
'minecraft:recipes/decorations/red_nether_brick_wall': 0
'minecraft:recipes/decorations/red_nether_brick_wall_from_red_nether_bricks_stonecutting': 0
'minecraft:recipes/decorations/red_sandstone_wall': 0
'minecraft:recipes/decorations/red_sandstone_wall_from_red_sandstone_stonecutting': 0
'minecraft:recipes/decorations/red_stained_glass_pane': 0
'minecraft:recipes/decorations/red_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/respawn_anchor': 0
'minecraft:recipes/decorations/sandstone_wall': 0
'minecraft:recipes/decorations/sandstone_wall_from_sandstone_stonecutting': 0
'minecraft:recipes/decorations/scaffolding': 0
'minecraft:recipes/decorations/shulker_box': 0
'minecraft:recipes/decorations/slime_block': 0
'minecraft:recipes/decorations/smithing_table': 0
'minecraft:recipes/decorations/smoker': 0
'minecraft:recipes/decorations/snow': 0
'minecraft:recipes/decorations/soul_campfire': 0
'minecraft:recipes/decorations/soul_lantern': 0
'minecraft:recipes/decorations/soul_torch': 0
'minecraft:recipes/decorations/spruce_fence': 0
'minecraft:recipes/decorations/spruce_sign': 0
'minecraft:recipes/decorations/stone_brick_wall': 0
'minecraft:recipes/decorations/stone_brick_wall_from_stone_bricks_stonecutting': 0
'minecraft:recipes/decorations/stone_brick_walls_from_stone_stonecutting': 0
'minecraft:recipes/decorations/stonecutter': 0
'minecraft:recipes/decorations/torch': 0
'minecraft:recipes/decorations/warped_fence': 0
'minecraft:recipes/decorations/warped_sign': 0
'minecraft:recipes/decorations/white_banner': 0
'minecraft:recipes/decorations/white_bed': 0
'minecraft:recipes/decorations/white_carpet': 0
'minecraft:recipes/decorations/white_glazed_terracotta': 0
'minecraft:recipes/decorations/white_stained_glass_pane': 0
'minecraft:recipes/decorations/white_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/decorations/yellow_banner': 0
'minecraft:recipes/decorations/yellow_bed': 0
'minecraft:recipes/decorations/yellow_bed_from_white_bed': 0
'minecraft:recipes/decorations/yellow_carpet': 0
'minecraft:recipes/decorations/yellow_carpet_from_white_carpet': 0
'minecraft:recipes/decorations/yellow_glazed_terracotta': 0
'minecraft:recipes/decorations/yellow_stained_glass_pane': 0
'minecraft:recipes/decorations/yellow_stained_glass_pane_from_glass_pane': 0
'minecraft:recipes/food/baked_potato': 0
'minecraft:recipes/food/baked_potato_from_campfire_cooking': 0
'minecraft:recipes/food/baked_potato_from_smoking': 0
'minecraft:recipes/food/beetroot_soup': 0
'minecraft:recipes/food/bread': 0
'minecraft:recipes/food/cake': 0
'minecraft:recipes/food/cooked_beef': 0
'minecraft:recipes/food/cooked_beef_from_campfire_cooking': 0
'minecraft:recipes/food/cooked_beef_from_smoking': 0
'minecraft:recipes/food/cooked_chicken': 0
'minecraft:recipes/food/cooked_chicken_from_campfire_cooking': 0
'minecraft:recipes/food/cooked_chicken_from_smoking': 0
'minecraft:recipes/food/cooked_cod': 0
'minecraft:recipes/food/cooked_cod_from_campfire_cooking': 0
'minecraft:recipes/food/cooked_cod_from_smoking': 0
'minecraft:recipes/food/cooked_mutton': 0
'minecraft:recipes/food/cooked_mutton_from_campfire_cooking': 0
'minecraft:recipes/food/cooked_mutton_from_smoking': 0
'minecraft:recipes/food/cooked_porkchop': 0
'minecraft:recipes/food/cooked_porkchop_from_campfire_cooking': 0
'minecraft:recipes/food/cooked_porkchop_from_smoking': 0
'minecraft:recipes/food/cooked_rabbit': 0
'minecraft:recipes/food/cooked_rabbit_from_campfire_cooking': 0
'minecraft:recipes/food/cooked_rabbit_from_smoking': 0
'minecraft:recipes/food/cooked_salmon': 0
'minecraft:recipes/food/cooked_salmon_from_campfire_cooking': 0
'minecraft:recipes/food/cooked_salmon_from_smoking': 0
'minecraft:recipes/food/cookie': 0
'minecraft:recipes/food/dried_kelp': 0
'minecraft:recipes/food/dried_kelp_from_campfire_cooking': 0
'minecraft:recipes/food/dried_kelp_from_smelting': 0
'minecraft:recipes/food/dried_kelp_from_smoking': 0
'minecraft:recipes/food/golden_apple': 0
'minecraft:recipes/food/honey_bottle': 0
'minecraft:recipes/food/mushroom_stew': 0
'minecraft:recipes/food/pumpkin_pie': 0
'minecraft:recipes/food/rabbit_stew_from_brown_mushroom': 0
'minecraft:recipes/food/rabbit_stew_from_red_mushroom': 0
'minecraft:recipes/misc/beacon': 0
'minecraft:recipes/misc/black_dye': 0
'minecraft:recipes/misc/black_dye_from_wither_rose': 0
'minecraft:recipes/misc/blue_dye': 0
'minecraft:recipes/misc/blue_dye_from_cornflower': 0
'minecraft:recipes/misc/bone_meal': 0
'minecraft:recipes/misc/bone_meal_from_bone_block': 0
'minecraft:recipes/misc/book': 0
'minecraft:recipes/misc/bowl': 0
'minecraft:recipes/misc/brick': 0
'minecraft:recipes/misc/brown_dye': 0
'minecraft:recipes/misc/bucket': 0
'minecraft:recipes/misc/charcoal': 0
'minecraft:recipes/misc/coal': 0
'minecraft:recipes/misc/coal_from_blasting': 0
'minecraft:recipes/misc/coal_from_smelting': 0
'minecraft:recipes/misc/conduit': 0
'minecraft:recipes/misc/creeper_banner_pattern': 0
'minecraft:recipes/misc/cyan_dye': 0
'minecraft:recipes/misc/diamond': 0
'minecraft:recipes/misc/diamond_from_blasting': 0
'minecraft:recipes/misc/diamond_from_smelting': 0
'minecraft:recipes/misc/emerald': 0
'minecraft:recipes/misc/emerald_from_blasting': 0
'minecraft:recipes/misc/emerald_from_smelting': 0
'minecraft:recipes/misc/ender_eye': 0
'minecraft:recipes/misc/fire_charge': 0
'minecraft:recipes/misc/flower_banner_pattern': 0
'minecraft:recipes/misc/gold_ingot': 0
'minecraft:recipes/misc/gold_ingot_from_blasting': 0
'minecraft:recipes/misc/gold_ingot_from_gold_block': 0
'minecraft:recipes/misc/gold_ingot_from_nuggets': 0
'minecraft:recipes/misc/gold_nugget': 0
'minecraft:recipes/misc/gold_nugget_from_blasting': 0
'minecraft:recipes/misc/gold_nugget_from_smelting': 0
'minecraft:recipes/misc/gray_dye': 0
'minecraft:recipes/misc/green_dye': 0
'minecraft:recipes/misc/iron_ingot': 0
'minecraft:recipes/misc/iron_ingot_from_blasting': 0
'minecraft:recipes/misc/iron_ingot_from_iron_block': 0
'minecraft:recipes/misc/iron_ingot_from_nuggets': 0
'minecraft:recipes/misc/iron_nugget': 0
'minecraft:recipes/misc/iron_nugget_from_blasting': 0
'minecraft:recipes/misc/iron_nugget_from_smelting': 0
'minecraft:recipes/misc/lapis_from_blasting': 0
'minecraft:recipes/misc/lapis_from_smelting': 0
'minecraft:recipes/misc/lapis_lazuli': 0
'minecraft:recipes/misc/leather': 0
'minecraft:recipes/misc/leather_horse_armor': 0
'minecraft:recipes/misc/light_blue_dye_from_blue_orchid': 0
'minecraft:recipes/misc/light_blue_dye_from_blue_white_dye': 0
'minecraft:recipes/misc/light_gray_dye_from_azure_bluet': 0
'minecraft:recipes/misc/light_gray_dye_from_black_white_dye': 0
'minecraft:recipes/misc/light_gray_dye_from_gray_white_dye': 0
'minecraft:recipes/misc/light_gray_dye_from_oxeye_daisy': 0
'minecraft:recipes/misc/light_gray_dye_from_white_tulip': 0
'minecraft:recipes/misc/lime_dye': 0
'minecraft:recipes/misc/lime_dye_from_smelting': 0
'minecraft:recipes/misc/magenta_dye_from_allium': 0
'minecraft:recipes/misc/magenta_dye_from_blue_red_pink': 0
'minecraft:recipes/misc/magenta_dye_from_blue_red_white_dye': 0
'minecraft:recipes/misc/magenta_dye_from_lilac': 0
'minecraft:recipes/misc/magenta_dye_from_purple_and_pink': 0
'minecraft:recipes/misc/map': 0
'minecraft:recipes/misc/melon_seeds': 0
'minecraft:recipes/misc/mojang_banner_pattern': 0
'minecraft:recipes/misc/nether_brick': 0
'minecraft:recipes/misc/netherite_ingot': 0
'minecraft:recipes/misc/netherite_ingot_from_netherite_block': 0
'minecraft:recipes/misc/netherite_scrap': 0
'minecraft:recipes/misc/netherite_scrap_from_blasting': 0
'minecraft:recipes/misc/orange_dye_from_orange_tulip': 0
'minecraft:recipes/misc/orange_dye_from_red_yellow': 0
'minecraft:recipes/misc/paper': 0
'minecraft:recipes/misc/pink_dye_from_peony': 0
'minecraft:recipes/misc/pink_dye_from_pink_tulip': 0
'minecraft:recipes/misc/pink_dye_from_red_white_dye': 0
'minecraft:recipes/misc/popped_chorus_fruit': 0
'minecraft:recipes/misc/pumpkin_seeds': 0
'minecraft:recipes/misc/purple_dye': 0
'minecraft:recipes/misc/quartz': 0
'minecraft:recipes/misc/quartz_from_blasting': 0
'minecraft:recipes/misc/red_dye_from_beetroot': 0
'minecraft:recipes/misc/red_dye_from_poppy': 0
'minecraft:recipes/misc/red_dye_from_rose_bush': 0
'minecraft:recipes/misc/red_dye_from_tulip': 0
'minecraft:recipes/misc/skull_banner_pattern': 0
'minecraft:recipes/misc/slime_ball': 0
'minecraft:recipes/misc/stick': 0
'minecraft:recipes/misc/stick_from_bamboo_item': 0
'minecraft:recipes/misc/sugar_from_honey_bottle': 0
'minecraft:recipes/misc/sugar_from_sugar_cane': 0
'minecraft:recipes/misc/wheat': 0
'minecraft:recipes/misc/white_dye': 0
'minecraft:recipes/misc/white_dye_from_lily_of_the_valley': 0
'minecraft:recipes/misc/writable_book': 0
'minecraft:recipes/misc/yellow_dye_from_dandelion': 0
'minecraft:recipes/misc/yellow_dye_from_sunflower': 0
'minecraft:recipes/redstone/acacia_button': 0
'minecraft:recipes/redstone/acacia_door': 0
'minecraft:recipes/redstone/acacia_fence_gate': 0
'minecraft:recipes/redstone/acacia_pressure_plate': 0
'minecraft:recipes/redstone/acacia_trapdoor': 0
'minecraft:recipes/redstone/birch_button': 0
'minecraft:recipes/redstone/birch_door': 0
'minecraft:recipes/redstone/birch_fence_gate': 0
'minecraft:recipes/redstone/birch_pressure_plate': 0
'minecraft:recipes/redstone/birch_trapdoor': 0
'minecraft:recipes/redstone/comparator': 0
'minecraft:recipes/redstone/crimson_button': 0
'minecraft:recipes/redstone/crimson_door': 0
'minecraft:recipes/redstone/crimson_fence_gate': 0
'minecraft:recipes/redstone/crimson_pressure_plate': 0
'minecraft:recipes/redstone/crimson_trapdoor': 0
'minecraft:recipes/redstone/dark_oak_button': 0
'minecraft:recipes/redstone/dark_oak_door': 0
'minecraft:recipes/redstone/dark_oak_fence_gate': 0
'minecraft:recipes/redstone/dark_oak_pressure_plate': 0
'minecraft:recipes/redstone/dark_oak_trapdoor': 0
'minecraft:recipes/redstone/daylight_detector': 0
'minecraft:recipes/redstone/dispenser': 0
'minecraft:recipes/redstone/dropper': 0
'minecraft:recipes/redstone/heavy_weighted_pressure_plate': 0
'minecraft:recipes/redstone/hopper': 0
'minecraft:recipes/redstone/iron_door': 0
'minecraft:recipes/redstone/iron_trapdoor': 0
'minecraft:recipes/redstone/jungle_button': 0
'minecraft:recipes/redstone/jungle_door': 0
'minecraft:recipes/redstone/jungle_fence_gate': 0
'minecraft:recipes/redstone/jungle_pressure_plate': 0
'minecraft:recipes/redstone/jungle_trapdoor': 0
'minecraft:recipes/redstone/lectern': 0
'minecraft:recipes/redstone/lever': 0
'minecraft:recipes/redstone/light_weighted_pressure_plate': 0
'minecraft:recipes/redstone/note_block': 0
'minecraft:recipes/redstone/oak_button': 0
'minecraft:recipes/redstone/oak_door': 0
'minecraft:recipes/redstone/oak_fence_gate': 0
'minecraft:recipes/redstone/oak_pressure_plate': 0
'minecraft:recipes/redstone/oak_trapdoor': 0
'minecraft:recipes/redstone/observer': 0
'minecraft:recipes/redstone/piston': 0
'minecraft:recipes/redstone/polished_blackstone_button': 0
'minecraft:recipes/redstone/polished_blackstone_pressure_plate': 0
'minecraft:recipes/redstone/redstone': 0
'minecraft:recipes/redstone/redstone_block': 0
'minecraft:recipes/redstone/redstone_from_blasting': 0
'minecraft:recipes/redstone/redstone_from_smelting': 0
'minecraft:recipes/redstone/redstone_lamp': 0
'minecraft:recipes/redstone/redstone_torch': 0
'minecraft:recipes/redstone/repeater': 0
'minecraft:recipes/redstone/spruce_button': 0
'minecraft:recipes/redstone/spruce_door': 0
'minecraft:recipes/redstone/spruce_fence_gate': 0
'minecraft:recipes/redstone/spruce_pressure_plate': 0
'minecraft:recipes/redstone/spruce_trapdoor': 0
'minecraft:recipes/redstone/sticky_piston': 0
'minecraft:recipes/redstone/stone_button': 0
'minecraft:recipes/redstone/stone_pressure_plate': 0
'minecraft:recipes/redstone/target': 0
'minecraft:recipes/redstone/tnt': 0
'minecraft:recipes/redstone/trapped_chest': 0
'minecraft:recipes/redstone/tripwire_hook': 0
'minecraft:recipes/redstone/warped_button': 0
'minecraft:recipes/redstone/warped_door': 0
'minecraft:recipes/redstone/warped_fence_gate': 0
'minecraft:recipes/redstone/warped_pressure_plate': 0
'minecraft:recipes/redstone/warped_trapdoor': 0
'minecraft:recipes/root': 0
'minecraft:recipes/tools/clock': 0
'minecraft:recipes/tools/compass': 0
'minecraft:recipes/tools/diamond_axe': 0
'minecraft:recipes/tools/diamond_hoe': 0
'minecraft:recipes/tools/diamond_pickaxe': 0
'minecraft:recipes/tools/diamond_shovel': 0
'minecraft:recipes/tools/fishing_rod': 0
'minecraft:recipes/tools/flint_and_steel': 0
'minecraft:recipes/tools/golden_axe': 0
'minecraft:recipes/tools/golden_hoe': 0
'minecraft:recipes/tools/golden_pickaxe': 0
'minecraft:recipes/tools/golden_shovel': 0
'minecraft:recipes/tools/iron_axe': 0
'minecraft:recipes/tools/iron_hoe': 0
'minecraft:recipes/tools/iron_pickaxe': 0
'minecraft:recipes/tools/iron_shovel': 0
'minecraft:recipes/tools/lead': 0
'minecraft:recipes/tools/netherite_axe_smithing': 0
'minecraft:recipes/tools/netherite_hoe_smithing': 0
'minecraft:recipes/tools/netherite_pickaxe_smithing': 0
'minecraft:recipes/tools/netherite_shovel_smithing': 0
'minecraft:recipes/tools/shears': 0
'minecraft:recipes/tools/stone_axe': 0
'minecraft:recipes/tools/stone_hoe': 0
'minecraft:recipes/tools/stone_pickaxe': 0
'minecraft:recipes/tools/stone_shovel': 0
'minecraft:recipes/tools/wooden_axe': 0
'minecraft:recipes/tools/wooden_hoe': 0
'minecraft:recipes/tools/wooden_pickaxe': 0
'minecraft:recipes/tools/wooden_shovel': 0
'minecraft:recipes/transportation/acacia_boat': 0
'minecraft:recipes/transportation/activator_rail': 0
'minecraft:recipes/transportation/birch_boat': 0
'minecraft:recipes/transportation/carrot_on_a_stick': 0
'minecraft:recipes/transportation/chest_minecart': 0
'minecraft:recipes/transportation/dark_oak_boat': 0
'minecraft:recipes/transportation/detector_rail': 0
'minecraft:recipes/transportation/furnace_minecart': 0
'minecraft:recipes/transportation/hopper_minecart': 0
'minecraft:recipes/transportation/jungle_boat': 0
'minecraft:recipes/transportation/minecart': 0
'minecraft:recipes/transportation/oak_boat': 0
'minecraft:recipes/transportation/powered_rail': 0
'minecraft:recipes/transportation/rail': 0
'minecraft:recipes/transportation/spruce_boat': 0
'minecraft:recipes/transportation/tnt_minecart': 0
'minecraft:recipes/transportation/warped_fungus_on_a_stick': 0
'minecraft:story/cure_zombie_villager': 1
'minecraft:story/deflect_arrow': 1
'minecraft:story/enchant_item': 1
'minecraft:story/enter_the_end': 1
'minecraft:story/enter_the_nether': 1
'minecraft:story/follow_ender_eye': 1
'minecraft:story/form_obsidian': 1
'minecraft:story/iron_tools': 1
'minecraft:story/lava_bucket': 1
'minecraft:story/mine_diamond': 1
'minecraft:story/mine_stone': 1
'minecraft:story/obtain_armor': 1
'minecraft:story/root': 0
'minecraft:story/shiny_gear': 1
'minecraft:story/smelt_iron': 1
'minecraft:story/upgrade_tools': 1

View File

@ -3,7 +3,7 @@ boxed:
command:
# Player Command. What command users will run to access their area.
# To define alias, just separate commands with white space.
island: boxed bx
island: boxed bx box
# The admin command.
# To define alias, just separate commands with white space.
admin: boxadmin

View File

@ -5,20 +5,22 @@
# These strings are deltas to the strings in BentoBox. Any BentoBox string can be
# overridden by placing it under the boxed key.
boxed:
completed: "&a [name] completed!"
size-changed: "&a Box size increased by [number]!"
# General strings
general:
errors:
no-island: "&c You do not have an area!"
player-has-island: "&c Player already has an area!"
player-has-no-island: "&c That player has no area!"
already-have-island: "&c You already have an area!"
no-safe-location: "&c No safe location found in area!"
no-island: "&c You do not have a box!"
player-has-island: "&c Player already has a box!"
player-has-no-island: "&c That player has no box!"
already-have-island: "&c You already have a box!"
no-safe-location: "&c No safe location found in box!"
not-owner: "&c You are not the owner of your team!"
commands:
#Main Boxed command
boxed:
help:
description: "Start a Boxed game or teleport to your Boxed home"
description: "Start a Boxed game or teleport to your box"
go:
description: "Go home"
tip: "&c You cannot teleport when falling!"
@ -26,31 +28,31 @@ boxed:
# Override BentoBox default island command strings
island:
info:
description: "display info about your area or the player's area"
description: "display info about your box or the player's box"
reset:
description: "restart in another area"
description: "restart in another box"
parameters: ""
must-remove-members: "&c You must remove all team players before you can restart (/[label] team kick <player>)."
sethome:
must-be-on-your-island: "&c You must be in your area to set home!"
must-be-on-your-island: "&c You must be in your box to set home!"
home-set: "&6 Your home has been set to your current location."
setname:
description: "set a name for your area"
description: "set a name for your box"
resetname:
description: "reset your area name"
description: "reset your box name"
team:
coop:
description: "make a player coop rank"
uncoop:
you-are-no-longer-a-coop-member: "&c You are no longer a coop member of [name]'s area"
all-members-logged-off: "&c All team members logged off so you are no longer a coop member of [name]'s area"
you-are-no-longer-a-coop-member: "&c You are no longer a coop member of [name]'s box"
all-members-logged-off: "&c All team members logged off so you are no longer a coop member of [name]'s box"
trust:
description: "give a player trusted rank"
invite:
description: "invite a player to join your team"
name-has-invited-you: "&a [name] has invited you to join their team."
to-accept-or-reject: "&a Do /[label] team accept to accept, or /[label] team reject to reject"
you-will-lose-your-island: "&c WARNING! You will lose your our area if you accept!"
you-will-lose-your-island: "&c WARNING! You will lose your our box if you accept!"
errors:
island-is-full: "&c Your team is full, you can't invite anyone else."
accept:
@ -58,7 +60,7 @@ boxed:
name-joined-your-island: "&a [name] joined your team!"
confirmation: |-
&c Are you sure you want to accept this invite?
&c&l This will &n WIPE &r&c&l your current area!
&c&l This will &n WIPE &r&c&l your current box!
reject:
you-rejected-invite: "&a You rejected the invitation to join a team."
name-rejected-your-invite: "&c [name] rejected your invite!"
@ -78,73 +80,73 @@ boxed:
description: "transfer team ownership to a member"
errors:
target-is-not-member: "&c That player is not part of your team!"
name-is-the-owner: "&a [name] is now the area owner!"
you-are-the-owner: "&a You are now the area owner!"
name-is-the-owner: "&a [name] is now the box owner!"
you-are-the-owner: "&a You are now the box owner!"
ban:
description: "ban a player from your area"
description: "ban a player from your box"
cannot-ban-more-players: "&c You reached the ban limit, you cannot ban any more players."
owner-banned-you: "&b [name]&c banned you from their area!"
you-are-banned: "&b You are banned from this area!"
owner-banned-you: "&b [name]&c banned you from their box!"
you-are-banned: "&b You are banned from this box!"
unban:
description: "unban a player from your area"
you-are-unbanned: "&b [name]&a unbanned you from their area!"
description: "unban a player from your box"
you-are-unbanned: "&b [name]&a unbanned you from their box!"
banlist:
noone: "&a No one is banned on this area"
noone: "&a No one is banned on this box"
settings:
description: "display area settings"
description: "display box settings"
# Admin command /sgadmin
admin:
team:
add:
name-has-island: "&c [name] has an area. Unregister or delete them first!"
name-has-island: "&c [name] has a box. Unregister or delete them first!"
setowner:
description: "transfers area ownership to the player"
already-owner: "&c Player is already the owner of this area!"
description: "transfers box ownership to the player"
already-owner: "&c Player is already the owner of this box!"
range:
description: "Admin area range command"
description: "Admin box range command"
display:
description: "Show/hide area range indicators"
description: "Show/hide box range indicators"
hint: |-
&c Red Barrier icons &f show the current protected range limit.
&7 Gray Particles &f show the max limit.
&a Green Particles &f show the default protected range if the protection range differs from it.
set:
description: "Sets the area protected range"
description: "Sets the box protected range"
reset:
description: "Resets the protected range to the world default"
register:
parameters: "<player>"
description: "register player to unowned area you are in"
registered-island: "&a Registered player to area at [xyz]."
description: "register player to unowned box you are in"
registered-island: "&a Registered player to box at [xyz]."
already-owned: "&c Area is already owned by another player!"
no-island-here: "&c There is no player area here. Confirm to make one."
no-island-here: "&c There is no player box here. Confirm to make one."
in-deletion: "&c This space is currently being regenerated. Try later."
unregister:
description: "unregister owner from an area, but keep area blocks as-is"
unregistered-island: "&a Unregistered player from area at [xyz]."
description: "unregister owner from a box, but keep box blocks as-is"
unregistered-island: "&a Unregistered player from box at [xyz]."
info:
description: "get info on where you are or on player"
no-island: "&c You are not in a registered area right now..."
no-island: "&c You are not in a registered box right now..."
island-location: "Area location: [xyz]"
island-coords: "Area coordinates: [xz1] to [xz2]"
is-spawn: "Area is a spawn island"
setrange:
description: "set the range of player's area"
description: "set the range of player's box"
range-updated: "Area range updated to [number]"
tp:
description: "teleport to a player's area"
description: "teleport to a player's box"
getrank:
description: "get a player's rank in their area"
rank-is: "&a Rank is [rank] in their area."
description: "get a player's rank in their box"
rank-is: "&a Rank is [rank] in their box."
setrank:
description: "set a player's rank in their area"
description: "set a player's rank in their box"
setspawn:
description: "set an area as spawn for this world"
already-spawn: "&c This area is already a spawn!"
no-island-here: "&c There is no registered area here."
confirmation: "&c Are you sure you want to set this area as the spawn for this world?"
description: "set a box as spawn for this world"
already-spawn: "&c This box is already a spawn!"
no-island-here: "&c There is no registered box here."
confirmation: "&c Are you sure you want to set this box as the spawn for this world?"
delete:
description: "deletes a player and regenerates their area"
description: "deletes a player and regenerates their box"
deleted-island: "&a Area at &e [xyz] &a has been successfully regenerated."
protection:
@ -157,49 +159,49 @@ boxed:
&a blocks
ENTER_EXIT_MESSAGES:
description: "Display entry and exit messages"
island: "[name]'s protected area"
island: "[name]'s protected box"
name: "Enter/Exit messages"
now-entering: '&a Now entering &b [name]&a .'
now-entering-your-island: '&a Now entering your area.'
now-entering-your-island: '&a Now entering your box.'
now-leaving: '&a Now leaving &b [name]&a .'
now-leaving-your-island: '&a Now leaving your area.'
now-leaving-your-island: '&a Now leaving your box.'
GEO_LIMIT_MOBS:
description: |-
&a Remove mobs that go
&a outside protected
&a player space
name: "&e Limit mobs to player area"
name: "&e Limit mobs to player box"
ISLAND_RESPAWN:
description: |-
&a Players respawn
&a in their area
&a in their box
name: "Area respawn"
LOCK:
name: "Lock player area"
name: "Lock player box"
OFFLINE_REDSTONE:
description: |-
&a When disabled, redstone
&a will not operate in areas
&a will not operate in boxs
&a where all members are offline.
&a May help reduce lag.
PISTON_PUSH:
description: |-
&a Allow pistons to push
&a blocks outside a player's area
&a blocks outside a player's box
PVP_OVERWORLD:
description: |-
&c Enable/Disable PVP
&c in protected area.
&c in protected box.
REMOVE_MOBS:
description: |-
&a Remove monsters when
&a teleporting to an area
&a teleporting to a box
PREVENT_TELEPORT_WHEN_FALLING:
description: |-
&a Prevent players from teleporting
&a if they are falling.
hint: "&c You cannot teleport while you are falling!"
locked: "&c This area is locked!"
locked: "&c This box is locked!"
protected: "&c Area protected: [description]"
panel:
@ -207,9 +209,9 @@ boxed:
title: "&6 Protection"
description: |-
&a Protection settings
&a for this area
&a for this box
SETTING:
description: |-
&a General settings
&a for this area
&a for this box