public static void load() { Registration.registerEnum(Achievement.class, "achievement", Achievement.values()) .document("Achievement", "1.4.10", "An achievement that a player can get. " + "Note that achievements were removed in Minecraft 1.12 and thus this syntax will not work if you are running Bukkit/Spigot 1.12 and above."); Registration.registerEffect(EffAwardAch.class, "award achieve[ment] %achievement% to %player%") .document("Award Achievement", "1.4.10", "Awards the specified achievement to the specified player. " + "Note that achievements were removed in Minecraft 1.12 and thus this syntax will not work if you are running Bukkit/Spigot 1.12 and above."); Registration.registerEffect(EffRemoveAch.class, "remove achieve[ment] %achievement% from %player%") .document("Remove Achievement", "1.4.10", "Removes the specified achievement from the specified player. " + "Note that achievements were removed in Minecraft 1.12 and thus this syntax will not work if you are running Bukkit/Spigot 1.12 and above."); Registration.registerEvent("Achievement Award", EvtAchAward.class, PlayerAchievementAwardedEvent.class, "achieve[ment] [%-achievement%] award", "award of achieve[ment] [%-achievement%]") .document("Achievement Award", "1.4.10", "Called when a player is awarded either the specified achievement or any achievement. " + "Note that achievements were removed in Minecraft 1.12 and thus this syntax will not work if you are running Bukkit/Spigot 1.12 and above.") .eventValue(Achievement.class, "1.4.10", "The achievement that was awarded."); Registration.registerEventValue(PlayerAchievementAwardedEvent.class, Achievement.class, PlayerAchievementAwardedEvent::getAchievement); Registration.registerExpression(ExprParentAch.class,Achievement.class, ExpressionType.PROPERTY,"parent of achieve[ment] %achievement%") .document("Parent of Achievement", "1.4.10", "An expression for the parent achievement of the specified achievement. " + "Note that achievements were removed in Minecraft 1.12 and thus this syntax will not work if you are running Bukkit/Spigot 1.12 and above."); Registration.registerExpression(ExprAllAch.class,Achievement.class,ExpressionType.PROPERTY,"achieve[ment]s of %player%", "%player%'s achieve[ment]s") .document("Achievements of Player", "1.4.10", "An expression for a list of the achievements that the specified player has."); Registration.registerExpressionCondition(CondHasAch.class,ExpressionType.PROPERTY,"%player% has achieve[ment] %achievement%") .document("Player has Achievement", "1.4.10", "Checks whether the specified player has the specified achievement."); }
@EventHandler public void onPlayerAchievement(PlayerAchievementAwardedEvent event){ Achievement a = event.getAchievement(); for(String s : bonusTags.keySet()){ BonusTag t = bonusTags.get(s); if(t instanceof AchievementTag){ AchievementTag tag = (AchievementTag) t; Achievement a2 = tag.getAchievement(); if(a2 == a){ String id = tag.getIdentifier(); ArrayList<String> certs = database.getCertsOfPlayer(event.getPlayer().getUniqueId()); if(!certs.contains(id)){ certs.add(id); } database.updateCertsOfPlayer(event.getPlayer().getUniqueId(), certs); event.getPlayer().sendMessage("You have unlocked the tag " + tag.getTagFormatted() + ", do /certs tag to set it."); return; } } } }
@Override public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { StringBuilder output = new StringBuilder(); Random randomGenerator = new Random(); String[] words = TotalFreedomMod.CAKE_LYRICS.split(" "); for (String word : words) { String color_code = Integer.toHexString(1 + randomGenerator.nextInt(14)); output.append(ChatColor.COLOR_CHAR).append(color_code).append(word).append(" "); } for (Player player : server.getOnlinePlayers()) { ItemStack heldItem = new ItemStack(Material.CAKE, 1); player.getInventory().setItem(player.getInventory().firstEmpty(), heldItem); player.awardAchievement(Achievement.MINE_WOOD); player.awardAchievement(Achievement.BUILD_WORKBENCH); player.awardAchievement(Achievement.BUILD_HOE); player.awardAchievement(Achievement.BAKE_CAKE); } TFM_Util.bcastMsg(output.toString()); return true; }
@Override public Map<String, Object> serialize() { final Object serializedObject; switch (this.type) { case SHOW_ACHIEVEMENT: serializedObject = ((Achievement)this.object).name(); break; case SHOW_ITEM: // ItemStack is ConfigurationSerializable case SHOW_TEXT: // String[] is supported automatically serializedObject = this.object; break; default: throw new IllegalArgumentException("Should never be here!"); } return ImmutableMap.<String, Object>of( "type", this.type.name(), "object", serializedObject ); }
@SuppressWarnings("unchecked") @Override public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean arg2, ParseResult arg3) { // TODO Auto-generated method stub ach = (Expression<Achievement>) expr[0]; return true; }
@SuppressWarnings("unchecked") @Override public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean arg2, ParseResult arg3) { // TODO Auto-generated method stub player = (Expression<Player>) expr[0]; ach = (Expression<Achievement>) expr[1]; return true; }
@Override public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean paramKleenean, ParseResult paramParseResult) { ach = (Expression<Achievement>) expr[0]; player = (Expression<Player>) expr[1]; return true; }
@SuppressWarnings("unchecked") @Override public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean paramKleenean, ParseResult paramParseResult) { // TODO Auto-generated method stub ach = (Expression<Achievement>) expr[0]; player = (Expression<Player>) expr[1]; return true; }
@Override @Nullable protected Achievement[] get(Event event) { List<Achievement> list = new ArrayList<>(); for (int a = 0; a < Achievement.values().length; a++) { if (player.getSingle(event).hasAchievement(Achievement.values()[a])) list.add(Achievement.values()[a]); } return list.toArray(new Achievement[list.size()]); }
public Iterator<Achievement> iterator(Event event) { List<Achievement> list = new ArrayList<>(); for (int a = 0; a < Achievement.values().length; a++) { if (player.getSingle(event).hasAchievement(Achievement.values()[a])) list.add(Achievement.values()[a]); } return list.iterator(); }
/** * turn "SHITTY_ACHIEVEMENT_NAME" into "Shitty Achievement Name" * @param achievement achievement to beautify * @return pretty achievement name */ @SuppressWarnings("deprecation") public static String beautify(Achievement achievement) { if (achievement == null) return "<✗>"; return Arrays.stream(achievement.name().toLowerCase().split("_")) .map(s -> s.substring(0, 1).toUpperCase() + s.substring(1)) .collect(Collectors.joining(" ")); }
@EventHandler public void inventoryOpen(PlayerAchievementAwardedEvent event) { event.setCancelled(true); if (event.getAchievement() == Achievement.OPEN_INVENTORY) { if (!(event.getPlayer().getGameMode().equals(GameMode.CREATIVE))) { Inventory inv = Bukkit.createInventory(null, 54, "NIGDY NIE DOSTANIESZ SW. EQ!"); inv.setContents(event.getPlayer().getInventory().getContents()); event.getPlayer().openInventory(inv); } } }
@Override public Achievement getAchievementFromInternalName(String name) { try { return Achievement.valueOf(name.toUpperCase().replace("MINECRAFT:", "")); } catch (IllegalArgumentException e) { return null; } }
@Override public void awardAchievement(Achievement achievement) { Validate.notNull(achievement, "Achievement cannot be null"); if (achievement.hasParent() && !hasAchievement(achievement.getParent())) { awardAchievement(achievement.getParent()); } getHandle().getStatisticManager().setStatistic(getHandle(), CraftStatistic.getNMSAchievement(achievement), 1); getHandle().getStatisticManager().updateStatistics(getHandle()); }
@Override public void removeAchievement(Achievement achievement) { Validate.notNull(achievement, "Achievement cannot be null"); for (Achievement achieve : Achievement.values()) { if (achieve.getParent() == achievement && hasAchievement(achieve)) { removeAchievement(achieve); } } getHandle().getStatisticManager().setStatistic(getHandle(), CraftStatistic.getNMSAchievement(achievement), 0); }
/** * Set the behavior of the current editing component to display information about an achievement when the client hovers over the text. * <p>Tooltips do not inherit display characteristics, such as color and styles, from the message component on which they are applied.</p> * @param which The achievement to display. * @return This builder instance. */ public FancyMessage achievementTooltip(final Achievement which) { try { Object achievement = Reflection.getMethod(Reflection.getOBCClass("CraftStatistic"), "getNMSAchievement", Achievement.class).invoke(null, which); return achievementTooltip((String) Reflection.getField(Reflection.getNMSClass("Achievement"), "name").get(achievement)); } catch (Exception e) { e.printStackTrace(); return this; } }
public static void loadAchievements(HashMap<String, BonusTag> map){ map(map, new AchievementTag(Achievement.MINE_WOOD, "Woodsman", "b")); map(map, new AchievementTag(Achievement.BUILD_PICKAXE, "Miner", "b")); map(map, new AchievementTag(Achievement.BUILD_FURNACE, "Cook", "b")); map(map, new AchievementTag(Achievement.BUILD_HOE, "Farmer", "b")); map(map, new AchievementTag(Achievement.BUILD_SWORD, "Swordsman", "c")); map(map, new AchievementTag(Achievement.MAKE_BREAD, "Baker", "b")); map(map, new AchievementTag(Achievement.COOK_FISH, "Fisherman", "b")); map(map, new AchievementTag(Achievement.ON_A_RAIL, "Minecart Engineer", "b")); map(map, new AchievementTag(Achievement.ENCHANTMENTS, "Enchanter", "b")); map(map, new AchievementTag(Achievement.OVERKILL, "Swordmaster", "9")); map(map, new AchievementTag(Achievement.BREW_POTION, "Brewer", "b")); map(map, new AchievementTag(Achievement.BOOKCASE, "Librarian", "b")); }
public AchievementCondition(Instruction instruction) throws InstructionParseException { super(instruction); String a = instruction.next(); try { achievement = Achievement.valueOf(a.toUpperCase()); } catch (IllegalArgumentException e) { throw new InstructionParseException("No such achievement: " + a); } }
@Override public String toString() { switch (this.type) { case SHOW_ACHIEVEMENT: return "Hover [type=SHOW_ACHIEVEMENT, object=" + ((Achievement)this.object).name() + ']'; case SHOW_ITEM: return "Hover [type=SHOW_ITEM, object=" + this.object + ']'; case SHOW_TEXT: return "Hover [type=SHOW_TEXT, object=" + Arrays.toString((String[])this.object) + ']'; default: throw new IllegalArgumentException("Should never be here!"); } }
/** * Gets the String identifier of an {@link Achievement} that the client * can understand. * * @param achievement the achievement * * @return the achievement's identifier */ private static String getAchievementId(final Achievement achievement) { switch (achievement) { case BUILD_WORKBENCH: return "buildWorkBench"; case GET_DIAMONDS: return "diamonds"; case NETHER_PORTAL: return "portal"; case GHAST_RETURN: return "ghast"; case GET_BLAZE_ROD: return "blazeRod"; case BREW_POTION: return "potion"; case END_PORTAL: return "theEnd"; case THE_END: return "theEnd2"; default: final char[] chars = achievement.name().toLowerCase().toCharArray(); for (int i = 0; i < chars.length - 1; i++) { if (chars[i] == '_') { i++; chars[i] = Character.toTitleCase(chars[i]); } } final String result = new String(chars); return "achievement." + result.replace("_", ""); } }
public static org.bukkit.Achievement getBukkitAchievement(net.minecraft.stats.Achievement achievement) { return getBukkitAchievementByName(achievement.statId); }
public static org.bukkit.Achievement getBukkitAchievementByName(String name) { return achievements.get(name); }
public static net.minecraft.stats.Achievement getNMSAchievement(org.bukkit.Achievement achievement) { return (net.minecraft.stats.Achievement) StatList.func_151177_a(achievements.inverse().get(achievement)); }
@Override public Achievement getAchievementFromInternalName(String name) { return CraftStatistic.getBukkitAchievementByName(name); }
@Override public void awardAchievement(Achievement achievement) { // TODO Auto-generated method stub throw new UnimplementedOperationException(); }
@Override public void removeAchievement(Achievement achievement) { // TODO Auto-generated method stub throw new UnimplementedOperationException(); }
@Override public boolean hasAchievement(Achievement achievement) { // TODO Auto-generated method stub throw new UnimplementedOperationException(); }
@Override public Class<? extends Achievement> getReturnType() { // TODO Auto-generated method stub return Achievement.class; }
@Override @Nullable protected Achievement[] get(Event event) { return new Achievement[]{ach.getSingle(event).getParent()}; }
@SuppressWarnings("unchecked") @Override public boolean init(Literal<?>[] lit, int arg1, ParseResult arg2) { ach = (Literal<Achievement>) lit[0]; return true; }
@Override public Class<? extends Achievement> getReturnType() { return Achievement.class; }
@Override public boolean hasAchievement(@SuppressWarnings("deprecation") Achievement achievement) { return false; }