Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit fe2c6aa

Browse files
committed
sigh
1 parent c9e4706 commit fe2c6aa

File tree

9 files changed

+553
-16
lines changed

9 files changed

+553
-16
lines changed

src/me/simplicitee/project/addons/MainListener.java

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Map;
55

66
import org.bukkit.ChatColor;
7+
import org.bukkit.Sound;
78
import org.bukkit.entity.Entity;
89
import org.bukkit.entity.FallingBlock;
910
import org.bukkit.entity.LivingEntity;
@@ -47,7 +48,10 @@
4748
import com.projectkorra.projectkorra.util.ActionBar;
4849
import com.projectkorra.projectkorra.util.ClickType;
4950

51+
import me.simplicitee.project.addons.ability.air.Deafen;
5052
import me.simplicitee.project.addons.ability.air.GaleGust;
53+
import me.simplicitee.project.addons.ability.air.SonicWave;
54+
import me.simplicitee.project.addons.ability.air.VocalMimicry;
5155
import me.simplicitee.project.addons.ability.air.Zephyr;
5256
import me.simplicitee.project.addons.ability.avatar.EnergyBeam;
5357
import me.simplicitee.project.addons.ability.avatar.EnergyBeam.EnergyColor;
@@ -176,6 +180,8 @@ public void onLeftClick(final PlayerInteractEvent event) {
176180
if (CoreAbility.hasAbility(player, Bulwark.class)) {
177181
CoreAbility.getAbility(player, Bulwark.class).clickFunction();
178182
}
183+
} else if (canBend(player, "SonicWave")) {
184+
new SonicWave(player);
179185
}
180186
}
181187

@@ -247,6 +253,10 @@ public void onSneak(PlayerToggleSneakEvent event) {
247253
new CombustBeam(player);
248254
} else if (canBend(player, "Bulwark")) {
249255
new Bulwark(player);
256+
} else if (canBend(player, "VocalMimicry")) {
257+
new VocalMimicry(player);
258+
} else if (canBend(player, "Deafen")) {
259+
new Deafen(player);
250260
}
251261
}
252262

@@ -430,28 +440,57 @@ public void onChat(AsyncPlayerChatEvent event) {
430440

431441
Player player = event.getPlayer();
432442
String[] args = event.getMessage().split(" ");
433-
if (args.length != 2) {
434-
return;
435-
}
436443

437444
if (args[0].equalsIgnoreCase("@energycolor")) {
438-
if (player.hasPermission("bending.ability.energybeam")) {
445+
if (!player.hasPermission("bending.ability.energybeam")) {
446+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " You do not have permission to change color");
447+
} else if (args.length != 2) {
448+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Invalid format, try `@energycolor <color>`");
449+
} else {
439450
EnergyColor color = EnergyColor.valueOf(args[1].toUpperCase());
451+
440452
if (color != null) {
441453
EnergyBeam.colors.put(player.getUniqueId(), color);
442-
player.sendMessage(ChatColor.GREEN + "Successfully set EnergyBeam color to " + args[1].toLowerCase());
454+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.GREEN + " Successfully set EnergyBeam color to " + args[1].toLowerCase());
443455
} else {
444-
player.sendMessage(ChatColor.RED + "Unknown color! Try red, blue, yellow, green, purple, orange, indigo, brown, white, or black!");
456+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Unknown color! Try red, blue, yellow, green, purple, orange, indigo, brown, white, or black!");
457+
}
458+
}
459+
event.setCancelled(true);
460+
} else if (args[0].equalsIgnoreCase("@vocalsound")) {
461+
if (!player.hasPermission("bending.ability.VocalMimicry")) {
462+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " You do not have permission to change vocal noise");
463+
} else if (args.length != 2) {
464+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Invalid format, try `@vocalsound <sound>`");
465+
} else {
466+
Sound sound = Sound.valueOf(args[1].toUpperCase());
467+
468+
if (sound != null) {
469+
if (plugin.getConfig().getStringList("Abilities.Air.VocalMimicry.SoundBlacklist").contains(sound.toString())) {
470+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Cannot use that sound!");
471+
} else {
472+
VocalMimicry.selectSound(player, sound);
473+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.GREEN + " Successfully set vocal sound to " + args[1].toLowerCase());
474+
}
475+
} else {
476+
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Unknown sound!");
445477
}
446-
event.setCancelled(true);
447478
}
479+
event.setCancelled(true);
448480
}
449481
}
450482

451483
@EventHandler
452484
public void onReload(BendingReloadEvent event) {
453485
ProjectAddons.instance.config().reload();
454486
event.getSender().sendMessage(ProjectAddons.instance.prefix() + " Config reloaded");
487+
488+
new BukkitRunnable() {
489+
@Override
490+
public void run() {
491+
CoreAbility.registerPluginAbilities(plugin, "me.simplicitee.project.addons.ability");
492+
}
493+
}.runTaskLater(plugin, 1);
455494
}
456495

457496
@EventHandler
@@ -630,10 +669,16 @@ private boolean canBend(Player player, String ability, boolean canbend) {
630669

631670
if (abil == null) {
632671
return false;
672+
} else if (bPlayer.getBoundAbility() == null) {
673+
return false;
633674
} else if (!bPlayer.getBoundAbilityName().equals(ability)) {
634675
return false;
635676
} else if (canbend && !bPlayer.canBend(abil)) {
636677
return false;
678+
} else if (GeneralMethods.isRegionProtectedFromBuild(player, ability, player.getLocation())) {
679+
return false;
680+
} else if (GeneralMethods.isRegionProtectedFromBuild(player, ability, player.getEyeLocation())) {
681+
return false;
637682
}
638683

639684
return true;

src/me/simplicitee/project/addons/ProjectAddons.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
import org.bukkit.configuration.file.FileConfiguration;
88
import org.bukkit.plugin.java.JavaPlugin;
99

10+
import com.projectkorra.projectkorra.Element;
11+
import com.projectkorra.projectkorra.Element.ElementType;
12+
import com.projectkorra.projectkorra.Element.SubElement;
1013
import com.projectkorra.projectkorra.ProjectKorra;
1114
import com.projectkorra.projectkorra.ability.CoreAbility;
1215
import com.projectkorra.projectkorra.ability.util.Collision;
@@ -28,13 +31,20 @@ public class ProjectAddons extends JavaPlugin {
2831
private BoardManager boards;
2932
private CustomMethods methods;
3033
private MainListener listener;
34+
private Element soundElement;
3135

3236
@Override
3337
public void onEnable() {
3438
instance = this;
3539

3640
this.config = new Config(new File("project_addons.yml"));
3741
this.setupConfig();
42+
soundElement = new SubElement("Sound", Element.AIR, ElementType.BENDING, this) {
43+
@Override
44+
public ChatColor getColor() {
45+
return Element.AIR.getSubColor();
46+
}
47+
};
3848

3949
CoreAbility.registerPluginAbilities(this, "me.simplicitee.project.addons.ability");
4050

@@ -75,6 +85,10 @@ public String version() {
7585
return prefix() + " v." + this.getDescription().getVersion();
7686
}
7787

88+
public Element getSoundElement() {
89+
return soundElement;
90+
}
91+
7892
@Override
7993
public FileConfiguration getConfig() {
8094
return config.get();
@@ -115,6 +129,12 @@ private void setupConfig() {
115129
c.addDefault("Abilities.Avatar.EnergyBeam.EasterEgg", true);
116130

117131
// ---- Airbending ----
132+
133+
// Deafen
134+
c.addDefault("Abilities.Air.Deafen.Enabled", true);
135+
c.addDefault("Abilities.Air.Deafen.Cooldown", 10000);
136+
c.addDefault("Abilities.Air.Deafen.Duration", 6000);
137+
118138
// GaleGust
119139
c.addDefault("Abilities.Air.GaleGust.Enabled", true);
120140
c.addDefault("Abilities.Air.GaleGust.Cooldown", 9000);
@@ -123,6 +143,20 @@ private void setupConfig() {
123143
c.addDefault("Abilities.Air.GaleGust.Range", 18);
124144
c.addDefault("Abilities.Air.GaleGust.Knockback", 0.67);
125145

146+
// SonicWave
147+
c.addDefault("Abilities.Air.SonicWave.Enabled", true);
148+
c.addDefault("Abilities.Air.SonicWave.Cooldown", 4000);
149+
c.addDefault("Abilities.Air.SonicWave.Range", 25);
150+
c.addDefault("Abilities.Air.SonicWave.Width", 10);
151+
c.addDefault("Abilities.Air.SonicWave.Nausea.Duration", 120);
152+
c.addDefault("Abilities.Air.SonicWave.Nausea.Power", 2);
153+
154+
// VocalManipulation
155+
c.addDefault("Abilities.Air.VocalMimicry.Enabled", true);
156+
c.addDefault("Abilities.Air.VocalMimicry.Volume", 0.7);
157+
c.addDefault("Abilities.Air.VocalMimicry.Pitch", 1);
158+
c.addDefault("Abilities.Air.VocalMimicry.SoundBlacklist", Arrays.asList("SOUND_NAME_HERE"));
159+
126160
// Zephyr
127161
c.addDefault("Abilities.Air.Zephyr.Enabled", true);
128162
c.addDefault("Abilities.Air.Zephyr.Cooldown", 1000);
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package me.simplicitee.project.addons.ability.air;
2+
3+
import org.bukkit.Instrument;
4+
import org.bukkit.Location;
5+
import org.bukkit.Note;
6+
import org.bukkit.Sound;
7+
import org.bukkit.Note.Tone;
8+
import org.bukkit.entity.Entity;
9+
import org.bukkit.entity.Player;
10+
import org.bukkit.util.Vector;
11+
12+
import com.projectkorra.projectkorra.GeneralMethods;
13+
import com.projectkorra.projectkorra.ability.AddonAbility;
14+
import com.projectkorra.projectkorra.attribute.Attribute;
15+
16+
import me.simplicitee.project.addons.ProjectAddons;
17+
import me.simplicitee.project.addons.util.SoundAbility;
18+
19+
public class Deafen extends SoundAbility implements AddonAbility {
20+
21+
@Attribute(Attribute.DURATION)
22+
private long duration;
23+
@Attribute(Attribute.COOLDOWN)
24+
private long cooldown;
25+
26+
private Player target;
27+
28+
public Deafen(Player player) {
29+
super(player);
30+
31+
Entity e = GeneralMethods.getTargetedEntity(player, 10);
32+
if (e == null || !(e instanceof Player)) {
33+
return;
34+
}
35+
36+
this.target = (Player) e;
37+
this.duration = ProjectAddons.instance.getConfig().getLong("Abilities.Air.Deafen.Duration");
38+
this.cooldown = ProjectAddons.instance.getConfig().getLong("Abilities.Air.Deafen.Cooldown");
39+
40+
bPlayer.addCooldown(this);
41+
start();
42+
}
43+
44+
@Override
45+
public void progress() {
46+
if (!player.isOnline() || player.isDead()) {
47+
remove();
48+
return;
49+
}
50+
51+
if (getStartTime() + duration < System.currentTimeMillis()) {
52+
remove();
53+
return;
54+
}
55+
56+
if (!player.isSneaking()) {
57+
remove();
58+
return;
59+
}
60+
61+
Entity e = GeneralMethods.getTargetedEntity(player, 10);
62+
if (e == null || (e.getEntityId() != target.getEntityId())) {
63+
remove();
64+
return;
65+
}
66+
67+
target.playNote(target.getEyeLocation().add(new Vector(Math.random(), Math.random(), Math.random())), Instrument.BASS_GUITAR, Note.sharp(0, Tone.F));
68+
69+
for (Sound sound : Sound.values()) {
70+
if (sound.equals(Sound.BLOCK_NOTE_BLOCK_BASS)) {
71+
continue;
72+
}
73+
74+
target.stopSound(sound);
75+
}
76+
}
77+
78+
@Override
79+
public boolean isSneakAbility() {
80+
return false;
81+
}
82+
83+
@Override
84+
public boolean isHarmlessAbility() {
85+
return false;
86+
}
87+
88+
@Override
89+
public long getCooldown() {
90+
return cooldown;
91+
}
92+
93+
@Override
94+
public String getName() {
95+
return "Deafen";
96+
}
97+
98+
@Override
99+
public Location getLocation() {
100+
return null;
101+
}
102+
103+
@Override
104+
public void load() {
105+
}
106+
107+
@Override
108+
public void stop() {
109+
}
110+
111+
@Override
112+
public String getAuthor() {
113+
return "Simplicitee";
114+
}
115+
116+
@Override
117+
public String getVersion() {
118+
return ProjectAddons.instance.version();
119+
}
120+
121+
@Override
122+
public String getDescription() {
123+
return "Temporarily cause another player to go deaf by cancelling the sound waves around them!";
124+
}
125+
126+
@Override
127+
public String getInstructions() {
128+
return "Sneak while looking at a player";
129+
}
130+
131+
@Override
132+
public boolean isEnabled() {
133+
return ProjectAddons.instance.getConfig().getBoolean("Abilities.Air.Deafen.Enabled");
134+
}
135+
}

0 commit comments

Comments
 (0)