Skip to content
This repository was archived by the owner on Nov 2, 2021. It is now read-only.

Commit

Permalink
Added support for Minecraft 1.9
Browse files Browse the repository at this point in the history
Added workaround for Spigot bug with fireworks.
Fixed sounds not working.
Fixed titles and clickable command.
Fixed Null Pointer in HoeFertiliseFirework listener.
Prepared for release 2.4.
  • Loading branch information
DarkPyves committed Mar 1, 2016
1 parent 7dee000 commit 3d1370c
Show file tree
Hide file tree
Showing 9 changed files with 77 additions and 46 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.hm.achievement</groupId>
<artifactId>AdvancedAchievements</artifactId>
<version>2.3.3</version>
<version>2.4</version>
<url>https://github.com/PyvesB/AdvancedAchievements</url>
<name>AdvancedAchievements</name>
<description>A Minecraft plugin that brings unique and challenging achievements on your server! Books, GUI, rankings, rewards, effects and more!</description>
Expand Down Expand Up @@ -39,7 +39,7 @@
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.8.8-R0.1-SNAPSHOT</version>
<version>1.9-SNAPSHOT</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
Expand Down
52 changes: 32 additions & 20 deletions src/main/java/com/hm/achievement/AchievementDisplay.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.FireworkMeta;

import com.hm.achievement.language.Lang;
import com.hm.achievement.particle.PacketSender;
import com.hm.achievement.particle.ParticleEffect;

public class AchievementDisplay {

Expand Down Expand Up @@ -62,32 +64,42 @@ public void displayAchievement(Player player, String configAchievement) {
if (firework) {

Location location = player.getLocation();
location.setY(location.getY() - 1);

Firework firework = player.getWorld().spawn(location, Firework.class);
FireworkMeta fireworkMeta = firework.getFireworkMeta();
FireworkEffect effect;
// Firework style must be one of the following: BALL_LARGE, BALL,
// BURST, CREEPER or STAR.
try {
effect = FireworkEffect.builder().flicker(false).trail(false)
.withColor(Color.WHITE.mixColors(Color.BLUE.mixColors(Color.NAVY)))
.with(Type.valueOf(fireworkStyle.toUpperCase())).withFade(Color.PURPLE).build();
} catch (Exception ex) {
effect = FireworkEffect.builder().flicker(false).trail(false)
.withColor(Color.WHITE.mixColors(Color.BLUE.mixColors(Color.NAVY))).with(Type.BALL_LARGE)
.withFade(Color.PURPLE).build();
plugin.getLogger()
.severe("Error while loading FireworkStyle. Please check your config. Loading default style.");
}
fireworkMeta.addEffects(effect);
firework.setVelocity(player.getLocation().getDirection().multiply(0));
firework.setFireworkMeta(fireworkMeta);
location.setY(location.getY() - 1);

Firework firework = player.getWorld().spawn(location, Firework.class);
FireworkMeta fireworkMeta = firework.getFireworkMeta();
FireworkEffect effect;
// Firework style must be one of the following: BALL_LARGE,
// BALL,
// BURST, CREEPER or STAR.
try {
effect = FireworkEffect.builder().flicker(false).trail(false)
.withColor(Color.WHITE.mixColors(Color.BLUE.mixColors(Color.NAVY)))
.with(Type.valueOf(fireworkStyle.toUpperCase())).withFade(Color.PURPLE).build();
} catch (Exception ex) {
effect = FireworkEffect.builder().flicker(false).trail(false)
.withColor(Color.WHITE.mixColors(Color.BLUE.mixColors(Color.NAVY))).with(Type.BALL_LARGE)
.withFade(Color.PURPLE).build();
plugin.getLogger().severe(
"Error while loading FireworkStyle. Please check your config. Loading default style.");
}
fireworkMeta.addEffects(effect);
firework.setVelocity(player.getLocation().getDirection().multiply(0));
firework.setFireworkMeta(fireworkMeta);

} catch (IllegalArgumentException e) {

player.getWorld().playSound(location, Sound.ENTITY_FIREWORK_LAUNCH, 1, 0.6f);
ParticleEffect.FIREWORKS_SPARK.display(0, 3, 0, 0.1f, 500, location, 1);
player.getWorld().playSound(location, Sound.ENTITY_FIREWORK_BLAST, 1, 0.6f);
player.getWorld().playSound(location, Sound.ENTITY_FIREWORK_TWINKLE, 1, 0.6f);
}
}
if (titleScreen) {
try {
PacketSender.sendTitlePacket(player, "{text:\"" + name + "\"}", "{text:\"" + msg + "\"}");
PacketSender.sendTitlePacket(player, "{\"text\":\"" + name + "\"}", "{\"text\":\"" + msg + "\"}");
} catch (Exception ex) {

plugin.getLogger()
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/hm/achievement/AdvancedAchievements.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
* Spigot project page: spigotmc.org/resources/advanced-achievements.6239
*
* @since April 2015
* @version 2.3.3
* @version 2.4
* @author DarkPyves
*/

Expand Down
16 changes: 13 additions & 3 deletions src/main/java/com/hm/achievement/command/BookCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
Expand Down Expand Up @@ -69,10 +70,19 @@ public void giveBook(Player player) {
} catch (Exception ex) {
plugin.getLogger().severe("Error while displaying additional particle effects.");
}

// Play special sound when receiving the book.
if (sound)
player.getWorld().playSound(player.getLocation(), Sound.LEVEL_UP, 1, 0);
if (sound) {
// Simple and fast check to compare versions. Might need to be
// updated in the future depending on how the Minecraft versions
// change in the future.
int version = Integer.valueOf(Bukkit.getBukkitVersion().charAt(2) + "");
if (version < 9) // Old enum for versions prior to Minecraft
// 1.9.
player.getWorld().playSound(player.getLocation(), Sound.valueOf("LEVEL_UP"), 1, 0);
else
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 0);
}

ArrayList<String> achievements = plugin.getDb().getPlayerAchievementsList(player);

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/hm/achievement/command/HelpCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,7 @@ public void getHelp(CommandSender sender) {
public void sendJsonClickableMessage(CommandSender sender, String message, String command) {

// Build the json format string.
String json = "{text:\"" + message + "\",clickEvent:{action:suggest_command,value:\"" + command + "\"}}";

String json = "{\"text\":\"" + message + "\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"" + command + "\"}}";
if (sender instanceof Player)
try {
PacketSender.sendChatPacket((Player) sender, json);
Expand Down
17 changes: 13 additions & 4 deletions src/main/java/com/hm/achievement/command/TopCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,19 @@ public void getTop(CommandSender sender) {
plugin.getLogger().severe("Error while displaying additional particle effects.");
}

if (sound)
// Play special sound when in top list.
((Player) sender).getWorld().playSound(((Player) sender).getLocation(), Sound.FIREWORK_BLAST, 1,
0.6f);
// Play special sound when in top list.
if (sound) {
// Simple and fast check to compare versions. Might need to be
// updated in the future depending on how the Minecraft versions
// change in the future.
int version = Integer.valueOf(Bukkit.getBukkitVersion().charAt(2) + "");
if (version < 9) // Old enum for versions prior to Minecraft 1.9.
((Player) sender).getWorld().playSound(((Player) sender).getLocation(),
Sound.valueOf("FIREWORK_BLAST"), 1, 0.6f);
else
((Player) sender).getWorld().playSound(((Player) sender).getLocation(),
Sound.ENTITY_FIREWORK_BLAST, 1, 0.6f);
}
}

int totalPlayers = plugin.getDb().getTotalPlayers();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,20 @@ public AchieveHoeFertiliseFireworkListener(AdvancedAchievements plugin) {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerInteract(PlayerInteractEvent event) {

if (event.getAction() != Action.RIGHT_CLICK_BLOCK)
if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getItem() == null)
return;

Player player = event.getPlayer();

if (plugin.isRestrictCreative() && player.getGameMode() == GameMode.CREATIVE || plugin.isInExludedWorld(player))
return;

String configAchievement;
if (player.hasPermission("achievement.count.hoeplowings")
&& (player.getItemInHand().getType() == Material.DIAMOND_HOE
|| player.getItemInHand().getType() == Material.IRON_HOE
|| player.getItemInHand().getType() == Material.STONE_HOE
|| player.getItemInHand().getType() == Material.WOOD_HOE
|| player.getItemInHand().getType() == Material.GOLD_HOE)
&& (event.getItem().getType() == Material.DIAMOND_HOE || event.getItem().getType() == Material.IRON_HOE
|| event.getItem().getType() == Material.STONE_HOE
|| event.getItem().getType() == Material.WOOD_HOE
|| event.getItem().getType() == Material.GOLD_HOE)
&& (event.getClickedBlock().getType() == Material.GRASS
|| event.getClickedBlock().getType() == Material.DIRT)) {
int plowings;
Expand All @@ -51,7 +52,7 @@ public void onPlayerInteract(PlayerInteractEvent event) {
configAchievement = "HoePlowings." + plowings;

} else if (player.hasPermission("achievement.count.fertilising")
&& player.getItemInHand().isSimilar(new ItemStack(Material.INK_SACK, 1, (short) 15))
&& event.getItem().isSimilar(new ItemStack(Material.INK_SACK, 1, (short) 15))
&& (event.getClickedBlock().getType() == Material.GRASS
|| event.getClickedBlock().getType() == Material.SAPLING
|| event.getClickedBlock().getType() == Material.DOUBLE_PLANT
Expand All @@ -74,7 +75,7 @@ public void onPlayerInteract(PlayerInteractEvent event) {

configAchievement = "Fertilising." + fertilising;
} else if (player.hasPermission("achievement.count.fireworks")
&& player.getItemInHand().getType() == Material.FIREWORK) {
&& event.getItem().getType() == Material.FIREWORK) {
int fireworks;
if (!DatabasePools.getFireworkHashMap().containsKey(player.getUniqueId().toString()))
fireworks = plugin.getDb().getNormalAchievementAmount(player, "fireworks") + 1;
Expand Down
8 changes: 4 additions & 4 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#==============================O==============================#
# I---------------------------------------------------------I #
# | Advanced Achievements 2.3.3 configuration - Readme | #
# | Advanced Achievements 2.4 configuration - Readme | #
# 1---------------------------------------------------------1 #
#==============================o==============================#

Expand Down Expand Up @@ -109,7 +109,7 @@ DistanceTaskInterval: 5
# Frequency of some statistics writes to the database.
PooledRequestsTaskInterval: 60

# Enable multithreading for most database write operations.
# Enable multithreading for database write operations.
AsyncPooledRequestsSender: true

#============================OOOOO============================#
Expand Down Expand Up @@ -142,9 +142,9 @@ Breaks:
Name: Cobble!
Reward:
Command: give PLAYER 158 10; give PLAYER 126 5
log:
log_2:1:
'100':
Message: '&2You have cut 100 logs!'
Message: '&2You have cut dark oak 100 logs!'
Name: Wood Cutter

# When a specific mob is killed (specify mob name or 'player', lower case).
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: AdvancedAchievements
main: com.hm.achievement.AdvancedAchievements
version: 2.3.3
version: 2.4
author: DarkPyves
softdepend: [Vault]
load: POSTWORLD
Expand Down

0 comments on commit 3d1370c

Please sign in to comment.