@Override public void accept(Player player, List<String> args) { org.bukkit.inventory.ItemStack itemInMainHand = player.getInventory().getItemInMainHand(); if (itemInMainHand == null) { player.sendMessage(ChatColor.RED + "Put the result of the recipe in your main hand when executing this command."); return; } if (args.isEmpty()) { player.sendMessage(ChatColor.RED + "Usage: /addrecipe NBT <key> [<group>]"); return; } String keyString = args.get(0); String group = args.size() >= 2 ? args.get(1) : ""; NamespacedKey bukkitKey = plugin.getKey(keyString); ItemStack result = CraftItemStack.asNMSCopy(itemInMainHand); MinecraftKey key = CraftNamespacedKey.toMinecraft(bukkitKey); player.openInventory(new NBTRecipeHolder(plugin, result, key, group, player).getInventory()); }
@Override public void accept(Player player, List<String> args) { org.bukkit.inventory.ItemStack itemInMainHand = player.getInventory().getItemInMainHand(); if (itemInMainHand == null) { player.sendMessage(ChatColor.RED + "Put the result of the recipe in your main hand when executing this command."); return; } if (args.isEmpty()) { player.sendMessage(ChatColor.RED + "Usage: /addrecipe count <key> [<group>]"); return; } String keyString = args.get(0); String group = args.size() >= 2 ? args.get(1) : ""; NamespacedKey bukkitKey = plugin.getKey(keyString); ItemStack result = CraftItemStack.asNMSCopy(itemInMainHand); MinecraftKey key = CraftNamespacedKey.toMinecraft(bukkitKey); player.openInventory(new CountRecipeHolder(plugin, result, key, group, player).getInventory()); }
@Override public void accept(Player player, List<String> args) { org.bukkit.inventory.ItemStack itemInMainHand = player.getInventory().getItemInMainHand(); if (itemInMainHand == null) { player.sendMessage(ChatColor.RED + "Put the result of the recipe in your main hand when executing this command."); return; } if (args.size() < 2) { player.sendMessage(ChatColor.RED + "Usage: /addrecipe permission <key> <permission> [<group>]"); return; } String keyString = args.get(0); String permission = args.get(1); String group = args.size() >= 3 ? args.get(2) : ""; NamespacedKey bukkitKey = plugin.getKey(keyString); ItemStack result = CraftItemStack.asNMSCopy(itemInMainHand); MinecraftKey key = CraftNamespacedKey.toMinecraft(bukkitKey); player.openInventory(new PermissionRecipeHolder(plugin, result, key, group, player, permission).getInventory()); }
@Override public void accept(Player player, List<String> args) { org.bukkit.inventory.ItemStack itemInMainHand = player.getInventory().getItemInMainHand(); if (itemInMainHand == null) { player.sendMessage(ChatColor.RED + "Put the result of the recipe in your main hand when executing this command."); return; } if (args.isEmpty()) { player.sendMessage(ChatColor.RED + "Usage: /addrecipe shaped <key> [<group>]"); return; } String keyString = args.get(0); String group = args.size() >= 2 ? args.get(1) : ""; NamespacedKey bukkitKey = plugin.getKey(keyString); ItemStack result = CraftItemStack.asNMSCopy(itemInMainHand); MinecraftKey key = CraftNamespacedKey.toMinecraft(bukkitKey); player.openInventory(new ShapedRecipeHolder(player, plugin, result, key, group).getInventory()); }
@Override public void accept(Player player, List<String> args) { org.bukkit.inventory.ItemStack itemInMainHand = player.getInventory().getItemInMainHand(); if (itemInMainHand == null) { player.sendMessage(ChatColor.RED + "Put the result of the recipe in your main hand when executing this command."); return; } if (args.isEmpty()) { player.sendMessage(ChatColor.RED + "Usage: /addrecipe shapeless <key> [<group>]"); return; } String keyString = args.get(0); String group = args.size() >= 2 ? args.get(1) : ""; NamespacedKey bukkitKey = plugin.getKey(keyString); ItemStack result = CraftItemStack.asNMSCopy(itemInMainHand); MinecraftKey key = CraftNamespacedKey.toMinecraft(bukkitKey); player.openInventory(new ShapelessRecipeHolder(plugin, result, key, group, player).getInventory()); }
/** * Awards advancements created by Advanced Achievements. This method can be seen as a synchronisation to give * advancements which were generated after the corresponding achievement was received for a given player. * * @param player */ private void awardAdvancements(Player player) { Advancement advancement = Bukkit.getServer() .getAdvancement(new NamespacedKey(plugin, AdvancementManager.ADVANCED_ACHIEVEMENTS_PARENT)); // If no parent, user has not used /aach generate, do not do anything. if (advancement != null) { AdvancementProgress advancementProgress = player.getAdvancementProgress(advancement); if (!advancementProgress.isDone()) { advancementProgress.awardCriteria(AchievementAdvancement.CRITERIA_NAME); } for (String achName : plugin.getDatabaseManager().getPlayerAchievementNamesList(player.getUniqueId())) { advancement = Bukkit.getServer() .getAdvancement(new NamespacedKey(plugin, AdvancementManager.getKey(achName))); // Matching advancement might not exist if user has not called /aach generate. if (advancement != null) { advancementProgress = player.getAdvancementProgress(advancement); if (!advancementProgress.isDone()) { advancementProgress.awardCriteria(AchievementAdvancement.CRITERIA_NAME); } } } } }
@Override public void accept(Player player, List<String> args) { org.bukkit.inventory.ItemStack itemInMainHand = player.getInventory().getItemInMainHand(); if (InventoryUtils.isEmptyStack(itemInMainHand)) { player.sendMessage(ChatColor.RED + "Put the result of the recipe in your main hand when executing this command."); return; } if (args.isEmpty()) { player.sendMessage(ChatColor.RED + "Usage: /addrecipe furnace <key> [<xp>] [vanilla]"); return; } String keyString = args.get(0); NamespacedKey bukkitKey = plugin.getKey(keyString); float xp = 0; if (args.size() >= 2) { try { xp = Float.parseFloat(args.get(1)); } catch (NumberFormatException ignored) { //xp stays 0 } } boolean vanilla = args.size() >= 3 ? "vanilla".equalsIgnoreCase(args.get(2)) : false; ItemStack result = CraftItemStack.asNMSCopy(itemInMainHand); player.openInventory(new FurnaceRecipeHolder(plugin, player, result, bukkitKey, xp, vanilla).getInventory()); }
public FurnaceRecipeHolder(CustomRecipesPlugin plugin, Player player, ItemStack result, NamespacedKey key, float xp, boolean vanilla) { this.plugin = plugin; this.callbackPlayer = player; this.hopperInventory = plugin.getServer().createInventory(this, InventoryType.HOPPER, "Create a furnace recipe!"); this.key = CraftNamespacedKey.toMinecraft(key); this.result = result; this.vanilla = vanilla; this.xp = xp; plugin.getServer().getPluginManager().registerEvents(this, plugin); }
/** * {@inheritDoc} */ @Override public boolean addRecipe(NamespacedKey key, CraftingRecipe recipe) { if (key == null || recipe == null) return false; MinecraftKey minecraftKey = CraftNamespacedKey.toMinecraft(key); return putRecipe(minecraftKey, recipe); }
/** * {@inheritDoc} */ @Override public CraftingRecipe getRecipe(NamespacedKey key) { if (key == null) return null; MinecraftKey mcKey = CraftNamespacedKey.toMinecraft(key); IRecipe mcRecipe = getNMSRecipe(mcKey); if (mcRecipe == null) return null; return fromNMSRecipe(mcRecipe); }
/** * {@inheritDoc} */ @Override public CraftingRecipe removeRecipe(NamespacedKey key) { if (key == null) return null; MinecraftKey mcKey = CraftNamespacedKey.toMinecraft(key); IRecipe removed = removeRecipe(mcKey); if (removed == null) return null; CraftingRecipe recipe = fromNMSRecipe(removed); nms2cr.remove(removed); return recipe; }
/** * {@inheritDoc} */ @Override public NamespacedKey getKey(CraftingRecipe recipe) { if (recipe == null) return null; IRecipe nmsRecipe = toNMSRecipe(recipe); MinecraftKey key = getKey(nmsRecipe); return key == null ? null : CraftNamespacedKey.fromMinecraft(key); }
/** * {@inheritDoc} */ @Override public NamespacedKey removeRecipe(CraftingRecipe recipe) { if (recipe == null) return null; IRecipe nmsRecipe = toNMSRecipe(recipe); if (nmsRecipe == null) return null; MinecraftKey key = removeRecipe(nmsRecipe); if (key == null) return null; return CraftNamespacedKey.fromMinecraft(key); }
@Override public void accept(Player player, List<String> args) { org.bukkit.inventory.ItemStack itemInMainHand = player.getInventory().getItemInMainHand(); if (itemInMainHand == null) { player.sendMessage(ChatColor.RED + "Put the result of the recipe in your main hand when executing this command."); return; } if (args.isEmpty()) { player.sendMessage(ChatColor.RED + "Usage: /addrecipe world <key> [<world name>] [<group>]"); return; } UUID world = player.getWorld().getUID(); if (args.size() >= 2) { World bukkitWorld = plugin.getServer().getWorld(args.get(1)); if (bukkitWorld != null) world = bukkitWorld.getUID(); } String keyString = args.get(0); String group = args.size() >= 3 ? args.get(2) : ""; NamespacedKey bukkitKey = plugin.getKey(keyString); ItemStack result = CraftItemStack.asNMSCopy(itemInMainHand); MinecraftKey key = CraftNamespacedKey.toMinecraft(bukkitKey); player.openInventory(new WorldRecipeHolder(plugin, result, key, group, player, world).getInventory()); }
@Test void build() { NamespacedKey recipe = mock(NamespacedKey.class); builder.recipe(recipe); verify(meta).addRecipe(recipe); }
/** * Removes all advancements previously generated by the plugin. */ private void cleanupOldAchievementAdvancements() { int achievementsCleaned = 0; Iterator<Advancement> advancements = Bukkit.getServer().advancementIterator(); while (advancements.hasNext()) { NamespacedKey namespacedKey = advancements.next().getKey(); if ("advancedachievements".equals(namespacedKey.getNamespace()) && !ADVANCED_ACHIEVEMENTS_PARENT.equals(namespacedKey.getKey())) { ++achievementsCleaned; unsafeValues.removeAdvancement(namespacedKey); } } Bukkit.getServer().reloadData(); plugin.getLogger().info("Cleaned " + achievementsCleaned + " old advancements."); }
/** * Registers an "Advanced Achievements" advancement, which will be used as the parent of all advancements generated * by Advanced Achievements. */ private void registerParentAdvancement() { AchievementAdvancementBuilder achievementAdvancementBuilder = new AchievementAdvancementBuilder() .iconItem("minecraft:" + getInternalName(new ItemStack(Material.BOOK, 1, (short) 0))) .iconData(Integer.toString(0)).title("Advanced Achievements").description(""); NamespacedKey namespacedKey = new NamespacedKey(plugin, ADVANCED_ACHIEVEMENTS_PARENT); if (Bukkit.getServer().getAdvancement(namespacedKey) == null) { unsafeValues.loadAdvancement(namespacedKey, achievementAdvancementBuilder.buildGoal().toParentJson(configHideAdvancements)); } }
/** * Registers an individual advancement. * * @param categoryName * @param configAchievement * @param parentKey * @param lastAchievement * @return the key of the registered achievement */ private String registerAdvancement(String categoryName, String configAchievement, String parentKey, boolean lastAchievement) { String achName = plugin.getPluginConfig().getString(configAchievement + ".Name", ""); String achDisplayName = plugin.getPluginConfig().getString(configAchievement + ".DisplayName", ""); if (StringUtils.isEmpty(achDisplayName)) { achDisplayName = achName; } // Strip colours as the advancements interface does not support them. achDisplayName = REGEX_PATTERN_COLOURS.matcher(achDisplayName).replaceAll(""); String achKey = getKey(achName); NamespacedKey namespacedKey = new NamespacedKey(plugin, achKey); int metadata = plugin.getPluginGui().getInt(categoryName + ".Metadata", 0); String description = ""; if (configRegisterAdvancementDescriptions) { // Give priority to the goal to stick with Vanilla naming of advancements. description = plugin.getPluginConfig().getString(configAchievement + ".Goal", ""); if (!StringUtils.isNotBlank(description)) { description = plugin.getPluginConfig().getString(configAchievement + ".Message", ""); } description = REGEX_PATTERN_COLOURS.matcher(description).replaceAll(""); } AchievementAdvancementBuilder achievementAdvancementBuilder = new AchievementAdvancementBuilder() .iconItem("minecraft:" + getInternalName(new ItemStack(getMaterial(categoryName), 1, (short) metadata))) .iconData(Integer.toString(metadata)).title(achDisplayName).description(description).parent(parentKey); if (lastAchievement) { unsafeValues.loadAdvancement(namespacedKey, achievementAdvancementBuilder.buildChallenge().toJson()); } else { unsafeValues.loadAdvancement(namespacedKey, achievementAdvancementBuilder.buildTask().toJson()); } ++generatedAdvancements; return achKey; }
public static String craftingRecipeFileName(CRCraftingRecipe<? extends IRecipe> recipe) { NamespacedKey key = recipe.getKey(); return key.toString().replace(':', '_') + ".dat"; }
public static String furnaceRecipeFileName(CRFurnaceRecipe recipe) { NamespacedKey key = recipe.getKey(); return key.toString().replace(':', '_') + ".dat"; }
@SuppressWarnings("deprecation") public NamespacedKey getKey(String string) { String[] split = string.split(":"); return split.length == 1 ? new NamespacedKey(this, string) : new NamespacedKey(split[0], split[1]); }
public SimpleFurnaceRecipe(NamespacedKey key, CraftingIngredient ingredient, ItemStack result) { this.key = Objects.requireNonNull(key, "key cannot be null."); this.ingredient = Objects.requireNonNull(ingredient, "ingredient cannot be null."); this.result = Objects.requireNonNull(result, "result cannot be null."); }
public SimpleFurnaceRecipe(NamespacedKey key, CraftingIngredient ingredient, ItemStack result, float xp) { this(key, ingredient, result); this.xp = xp; }
@Override public NamespacedKey getKey() { return key; }
public SerializableKey(String namespace, String key) { this(new NamespacedKey(namespace, key)); }
public SerializableKey(NamespacedKey namespacedKey) { this.key = Objects.requireNonNull(namespacedKey); }
@Override public FurnaceRecipe removeRecipe(NamespacedKey key) { NMSFurnaceRecipe recipe = nmsManager.removeRecipe(CraftNamespacedKey.toMinecraft(key)); return recipe == null ? null : recipe.getBukkitRecipe(); }
@Override public FurnaceRecipe removeVanillaRecipe(NamespacedKey key) { NMSFurnaceRecipe recipe = nmsManager.removeVanillaRecipe(CraftNamespacedKey.toMinecraft(key)); return recipe == null ? null : recipe.getBukkitRecipe(); }
@Override public FurnaceRecipe removeCustomRecipe(NamespacedKey key) { NMSFurnaceRecipe recipe = nmsManager.removeCustomRecipe(CraftNamespacedKey.toMinecraft(key)); return recipe == null ? null : recipe.getBukkitRecipe(); }
@Override public FurnaceRecipe getRecipe(NamespacedKey key) { NMSFurnaceRecipe recipe = nmsManager.getRecipe(CraftNamespacedKey.toMinecraft(key)); return recipe == null ? null : recipe.getBukkitRecipe(); }
@Override public FurnaceRecipe getCustomRecipe(NamespacedKey key) { NMSFurnaceRecipe recipe = nmsManager.getCustomRecipe(CraftNamespacedKey.toMinecraft(key)); return recipe == null ? null : recipe.getBukkitRecipe(); }
@Override public FurnaceRecipe getVanillaRecipe(NamespacedKey key) { NMSFurnaceRecipe recipe = nmsManager.getVanillaRecipe(CraftNamespacedKey.toMinecraft(key)); return recipe == null ? null : recipe.getBukkitRecipe(); }
@Override public NamespacedKey getKey() { return CraftNamespacedKey.fromMinecraft(nmsRecipe.getKey()); }
private static NamespacedKey newNamespacedKey() { CustomRecipesPlugin plugin = CustomRecipesPlugin.getInstance(); return new NamespacedKey(plugin, CUSTOM_RECIPES_BUKKITRECIPE_KEY + keyCount.getAndIncrement() + UUID.randomUUID().toString()); }
public static AdvancementAPIBuilder builder(NamespacedKey id) { return AdvancementAPI.hiddenBuilder().id(id); }
public NamespacedKeyStorage(NamespacedKey key) { this.key = key; }
@Override public NamespacedKey getValue() { return key; }
@Override public void setValue(NamespacedKey value) { key = value; }
@Override public StorageObject delegate() { return new NamespacedKeyStorage(new NamespacedKey(key.getNamespace(), key.getKey())); }