Skip to content

Commit

Permalink
sigh
Browse files Browse the repository at this point in the history
  • Loading branch information
Simplicitee committed Jan 10, 2020
1 parent c9e4706 commit fe2c6aa
Show file tree
Hide file tree
Showing 9 changed files with 553 additions and 16 deletions.
59 changes: 52 additions & 7 deletions src/me/simplicitee/project/addons/MainListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.Map;

import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.LivingEntity;
Expand Down Expand Up @@ -47,7 +48,10 @@
import com.projectkorra.projectkorra.util.ActionBar;
import com.projectkorra.projectkorra.util.ClickType;

import me.simplicitee.project.addons.ability.air.Deafen;
import me.simplicitee.project.addons.ability.air.GaleGust;
import me.simplicitee.project.addons.ability.air.SonicWave;
import me.simplicitee.project.addons.ability.air.VocalMimicry;
import me.simplicitee.project.addons.ability.air.Zephyr;
import me.simplicitee.project.addons.ability.avatar.EnergyBeam;
import me.simplicitee.project.addons.ability.avatar.EnergyBeam.EnergyColor;
Expand Down Expand Up @@ -176,6 +180,8 @@ public void onLeftClick(final PlayerInteractEvent event) {
if (CoreAbility.hasAbility(player, Bulwark.class)) {
CoreAbility.getAbility(player, Bulwark.class).clickFunction();
}
} else if (canBend(player, "SonicWave")) {
new SonicWave(player);
}
}

Expand Down Expand Up @@ -247,6 +253,10 @@ public void onSneak(PlayerToggleSneakEvent event) {
new CombustBeam(player);
} else if (canBend(player, "Bulwark")) {
new Bulwark(player);
} else if (canBend(player, "VocalMimicry")) {
new VocalMimicry(player);
} else if (canBend(player, "Deafen")) {
new Deafen(player);
}
}

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

Player player = event.getPlayer();
String[] args = event.getMessage().split(" ");
if (args.length != 2) {
return;
}

if (args[0].equalsIgnoreCase("@energycolor")) {
if (player.hasPermission("bending.ability.energybeam")) {
if (!player.hasPermission("bending.ability.energybeam")) {
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " You do not have permission to change color");
} else if (args.length != 2) {
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Invalid format, try `@energycolor <color>`");
} else {
EnergyColor color = EnergyColor.valueOf(args[1].toUpperCase());

if (color != null) {
EnergyBeam.colors.put(player.getUniqueId(), color);
player.sendMessage(ChatColor.GREEN + "Successfully set EnergyBeam color to " + args[1].toLowerCase());
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.GREEN + " Successfully set EnergyBeam color to " + args[1].toLowerCase());
} else {
player.sendMessage(ChatColor.RED + "Unknown color! Try red, blue, yellow, green, purple, orange, indigo, brown, white, or black!");
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Unknown color! Try red, blue, yellow, green, purple, orange, indigo, brown, white, or black!");
}
}
event.setCancelled(true);
} else if (args[0].equalsIgnoreCase("@vocalsound")) {
if (!player.hasPermission("bending.ability.VocalMimicry")) {
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " You do not have permission to change vocal noise");
} else if (args.length != 2) {
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Invalid format, try `@vocalsound <sound>`");
} else {
Sound sound = Sound.valueOf(args[1].toUpperCase());

if (sound != null) {
if (plugin.getConfig().getStringList("Abilities.Air.VocalMimicry.SoundBlacklist").contains(sound.toString())) {
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Cannot use that sound!");
} else {
VocalMimicry.selectSound(player, sound);
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.GREEN + " Successfully set vocal sound to " + args[1].toLowerCase());
}
} else {
player.sendMessage(ProjectAddons.instance.prefix() + ChatColor.RED + " Unknown sound!");
}
event.setCancelled(true);
}
event.setCancelled(true);
}
}

@EventHandler
public void onReload(BendingReloadEvent event) {
ProjectAddons.instance.config().reload();
event.getSender().sendMessage(ProjectAddons.instance.prefix() + " Config reloaded");

new BukkitRunnable() {
@Override
public void run() {
CoreAbility.registerPluginAbilities(plugin, "me.simplicitee.project.addons.ability");
}
}.runTaskLater(plugin, 1);
}

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

if (abil == null) {
return false;
} else if (bPlayer.getBoundAbility() == null) {
return false;
} else if (!bPlayer.getBoundAbilityName().equals(ability)) {
return false;
} else if (canbend && !bPlayer.canBend(abil)) {
return false;
} else if (GeneralMethods.isRegionProtectedFromBuild(player, ability, player.getLocation())) {
return false;
} else if (GeneralMethods.isRegionProtectedFromBuild(player, ability, player.getEyeLocation())) {
return false;
}

return true;
Expand Down
34 changes: 34 additions & 0 deletions src/me/simplicitee/project/addons/ProjectAddons.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

import com.projectkorra.projectkorra.Element;
import com.projectkorra.projectkorra.Element.ElementType;
import com.projectkorra.projectkorra.Element.SubElement;
import com.projectkorra.projectkorra.ProjectKorra;
import com.projectkorra.projectkorra.ability.CoreAbility;
import com.projectkorra.projectkorra.ability.util.Collision;
Expand All @@ -28,13 +31,20 @@ public class ProjectAddons extends JavaPlugin {
private BoardManager boards;
private CustomMethods methods;
private MainListener listener;
private Element soundElement;

@Override
public void onEnable() {
instance = this;

this.config = new Config(new File("project_addons.yml"));
this.setupConfig();
soundElement = new SubElement("Sound", Element.AIR, ElementType.BENDING, this) {
@Override
public ChatColor getColor() {
return Element.AIR.getSubColor();
}
};

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

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

public Element getSoundElement() {
return soundElement;
}

@Override
public FileConfiguration getConfig() {
return config.get();
Expand Down Expand Up @@ -115,6 +129,12 @@ private void setupConfig() {
c.addDefault("Abilities.Avatar.EnergyBeam.EasterEgg", true);

// ---- Airbending ----

// Deafen
c.addDefault("Abilities.Air.Deafen.Enabled", true);
c.addDefault("Abilities.Air.Deafen.Cooldown", 10000);
c.addDefault("Abilities.Air.Deafen.Duration", 6000);

// GaleGust
c.addDefault("Abilities.Air.GaleGust.Enabled", true);
c.addDefault("Abilities.Air.GaleGust.Cooldown", 9000);
Expand All @@ -123,6 +143,20 @@ private void setupConfig() {
c.addDefault("Abilities.Air.GaleGust.Range", 18);
c.addDefault("Abilities.Air.GaleGust.Knockback", 0.67);

// SonicWave
c.addDefault("Abilities.Air.SonicWave.Enabled", true);
c.addDefault("Abilities.Air.SonicWave.Cooldown", 4000);
c.addDefault("Abilities.Air.SonicWave.Range", 25);
c.addDefault("Abilities.Air.SonicWave.Width", 10);
c.addDefault("Abilities.Air.SonicWave.Nausea.Duration", 120);
c.addDefault("Abilities.Air.SonicWave.Nausea.Power", 2);

// VocalManipulation
c.addDefault("Abilities.Air.VocalMimicry.Enabled", true);
c.addDefault("Abilities.Air.VocalMimicry.Volume", 0.7);
c.addDefault("Abilities.Air.VocalMimicry.Pitch", 1);
c.addDefault("Abilities.Air.VocalMimicry.SoundBlacklist", Arrays.asList("SOUND_NAME_HERE"));

// Zephyr
c.addDefault("Abilities.Air.Zephyr.Enabled", true);
c.addDefault("Abilities.Air.Zephyr.Cooldown", 1000);
Expand Down
135 changes: 135 additions & 0 deletions src/me/simplicitee/project/addons/ability/air/Deafen.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
package me.simplicitee.project.addons.ability.air;

import org.bukkit.Instrument;
import org.bukkit.Location;
import org.bukkit.Note;
import org.bukkit.Sound;
import org.bukkit.Note.Tone;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;

import com.projectkorra.projectkorra.GeneralMethods;
import com.projectkorra.projectkorra.ability.AddonAbility;
import com.projectkorra.projectkorra.attribute.Attribute;

import me.simplicitee.project.addons.ProjectAddons;
import me.simplicitee.project.addons.util.SoundAbility;

public class Deafen extends SoundAbility implements AddonAbility {

@Attribute(Attribute.DURATION)
private long duration;
@Attribute(Attribute.COOLDOWN)
private long cooldown;

private Player target;

public Deafen(Player player) {
super(player);

Entity e = GeneralMethods.getTargetedEntity(player, 10);
if (e == null || !(e instanceof Player)) {
return;
}

this.target = (Player) e;
this.duration = ProjectAddons.instance.getConfig().getLong("Abilities.Air.Deafen.Duration");
this.cooldown = ProjectAddons.instance.getConfig().getLong("Abilities.Air.Deafen.Cooldown");

bPlayer.addCooldown(this);
start();
}

@Override
public void progress() {
if (!player.isOnline() || player.isDead()) {
remove();
return;
}

if (getStartTime() + duration < System.currentTimeMillis()) {
remove();
return;
}

if (!player.isSneaking()) {
remove();
return;
}

Entity e = GeneralMethods.getTargetedEntity(player, 10);
if (e == null || (e.getEntityId() != target.getEntityId())) {
remove();
return;
}

target.playNote(target.getEyeLocation().add(new Vector(Math.random(), Math.random(), Math.random())), Instrument.BASS_GUITAR, Note.sharp(0, Tone.F));

for (Sound sound : Sound.values()) {
if (sound.equals(Sound.BLOCK_NOTE_BLOCK_BASS)) {
continue;
}

target.stopSound(sound);
}
}

@Override
public boolean isSneakAbility() {
return false;
}

@Override
public boolean isHarmlessAbility() {
return false;
}

@Override
public long getCooldown() {
return cooldown;
}

@Override
public String getName() {
return "Deafen";
}

@Override
public Location getLocation() {
return null;
}

@Override
public void load() {
}

@Override
public void stop() {
}

@Override
public String getAuthor() {
return "Simplicitee";
}

@Override
public String getVersion() {
return ProjectAddons.instance.version();
}

@Override
public String getDescription() {
return "Temporarily cause another player to go deaf by cancelling the sound waves around them!";
}

@Override
public String getInstructions() {
return "Sneak while looking at a player";
}

@Override
public boolean isEnabled() {
return ProjectAddons.instance.getConfig().getBoolean("Abilities.Air.Deafen.Enabled");
}
}
Loading

0 comments on commit fe2c6aa

Please sign in to comment.