More sound stuff and a hearsound command available to everyone.
This commit is contained in:
parent
b679c94892
commit
0fd2fc5bf5
@ -1,6 +1,6 @@
|
||||
main: com.massivecraft.mcore.MCore
|
||||
name: mcore
|
||||
version: 6.6.0
|
||||
version: 6.6.1_dev
|
||||
website: http://massivecraft.com/mcore
|
||||
authors: [Cayorion]
|
||||
description: §eMCore stands for MassiveCraft Core and is a plugin that contains libraries and features that other plugins make use of. §aCayorion §efrom the minecraft server §aMassiveCraft §eis the lead programmer. Feel free to visit us at §bhttp://massivecraft.com
|
||||
@ -13,6 +13,7 @@ permissions:
|
||||
mcore.cmd.mcore: {description: use the mcore command, default: false}
|
||||
mcore.cmd.mcore.id: {description: see the server id, default: false}
|
||||
mcore.cmd.mcore.version: {description: diplay plugin version, default: false}
|
||||
mcore.cmd.mcore.hearsound: {description: hear a sound, default: false}
|
||||
mcore.cmd.mcore.mstore: {description: use the mstore command, default: false}
|
||||
mcore.cmd.mcore.mstore.stats: {description: show mstore statistics, default: false}
|
||||
mcore.cmd.mcore.mstore.listcolls: {description: list collections in a database, default: false}
|
||||
@ -43,6 +44,7 @@ permissions:
|
||||
mcore.cmd.mcore: true
|
||||
mcore.cmd.mcore.id: true
|
||||
mcore.cmd.mcore.version: true
|
||||
mcore.cmd.mcore.hearsound: true
|
||||
mcore.cmd.mcore.mstore: true
|
||||
mcore.cmd.mcore.mstore.stats: true
|
||||
mcore.cmd.mcore.mstore.listcolls: true
|
||||
@ -82,9 +84,7 @@ permissions:
|
||||
default: false
|
||||
children:
|
||||
mcore.kit.rank0: true
|
||||
mcore.cmd.mcore: true
|
||||
mcore.cmd.mcore.id: true
|
||||
mcore.cmd.mcore.version: true
|
||||
mcore.cmd.mcore.mstore: true
|
||||
mcore.cmd.mcore.mstore.stats: true
|
||||
mcore.cmd.mcore.mstore.listcolls: true
|
||||
@ -99,6 +99,9 @@ permissions:
|
||||
mcore.kit.rank0:
|
||||
default: false
|
||||
children:
|
||||
mcore.cmd.mcore: true
|
||||
mcore.cmd.mcore.hearsound: true
|
||||
mcore.cmd.mcore.version: true
|
||||
mcore.kit.default:
|
||||
default: true
|
||||
children:
|
||||
|
@ -13,6 +13,7 @@ public enum MCorePerm
|
||||
CMD_MCORE("cmd.mcore"),
|
||||
CMD_MCORE_ID("cmd.mcore.id"),
|
||||
CMD_MCORE_VERSION("cmd.mcore.version"),
|
||||
CMD_MCORE_HEARSOUND("cmd.mcore.hearsound"),
|
||||
CMD_MCORE_MSTORE("cmd.mcore.mstore"),
|
||||
CMD_MCORE_MSTORE_STATS("cmd.mcore.mstore.stats"),
|
||||
CMD_MCORE_MSTORE_LISTCOLLS("cmd.mcore.mstore.listcolls"),
|
||||
|
172
src/com/massivecraft/mcore/SoundEffect.java
Normal file
172
src/com/massivecraft/mcore/SoundEffect.java
Normal file
@ -0,0 +1,172 @@
|
||||
package com.massivecraft.mcore;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.mcore.cmd.arg.ARSound;
|
||||
|
||||
public final class SoundEffect implements Cloneable, Serializable
|
||||
{
|
||||
private static final transient long serialVersionUID = 1L;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS: RAW
|
||||
// -------------------------------------------- //
|
||||
|
||||
private final Sound sound;
|
||||
public Sound getSound() { return this.sound; }
|
||||
|
||||
private final float volume;
|
||||
public float getVolume() { return this.volume; }
|
||||
|
||||
private final float pitch;
|
||||
public float getPitch() { return this.pitch; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS: WITH
|
||||
// -------------------------------------------- //
|
||||
|
||||
public SoundEffect withSound(Sound sound) { return new SoundEffect(sound, volume, pitch); }
|
||||
public SoundEffect withVolume(float volume) { return new SoundEffect(sound, volume, pitch); }
|
||||
public SoundEffect withPitch(float pitch) { return new SoundEffect(sound, volume, pitch); }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CONSTUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private SoundEffect(Sound sound, float volume, float pitch)
|
||||
{
|
||||
this.sound = sound;
|
||||
this.volume = volume;
|
||||
this.pitch = pitch;
|
||||
}
|
||||
|
||||
private SoundEffect()
|
||||
{
|
||||
// No Arg Constructor for GSON
|
||||
this(null, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// VALUE OF
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static SoundEffect valueOf(Sound sound, float volume, float pitch)
|
||||
{
|
||||
return new SoundEffect(sound, volume, pitch);
|
||||
}
|
||||
|
||||
public static SoundEffect valueOf(String soundString) throws Exception
|
||||
{
|
||||
if (soundString == null) throw new NullPointerException("soundString was null");
|
||||
soundString = soundString.trim();
|
||||
|
||||
String[] parts = soundString.split("[^a-zA-Z0-9_.]+");
|
||||
Sound sound = ARSound.getSoundFromString(parts[0]);
|
||||
if (sound == null) throw new IllegalArgumentException("Unknown sound \"" + parts[0] + "\"");
|
||||
|
||||
float volume = 1.0f;
|
||||
if (parts.length >= 2)
|
||||
{
|
||||
volume = Float.parseFloat(parts[1]);
|
||||
}
|
||||
|
||||
float pitch = 1.0f;
|
||||
if (parts.length >= 3)
|
||||
{
|
||||
pitch = Float.parseFloat(parts[2]);
|
||||
}
|
||||
|
||||
return SoundEffect.valueOf(sound, volume, pitch);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// RUN
|
||||
// -------------------------------------------- //
|
||||
|
||||
public void run(Location location)
|
||||
{
|
||||
location.getWorld().playSound(location, this.getSound(), this.getVolume(), this.getPitch());
|
||||
}
|
||||
|
||||
public void run(Player player, Location location)
|
||||
{
|
||||
player.playSound(location, this.getSound(), this.getVolume(), this.getPitch());
|
||||
}
|
||||
|
||||
public void run(Player player)
|
||||
{
|
||||
this.run(player, player.getEyeLocation());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// RUN ALL
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static void runAll(Collection<SoundEffect> soundEffects, Location location)
|
||||
{
|
||||
for (SoundEffect soundEffect : soundEffects)
|
||||
{
|
||||
soundEffect.run(location);
|
||||
}
|
||||
}
|
||||
|
||||
public static void runAll(Collection<SoundEffect> soundEffects, Player player, Location location)
|
||||
{
|
||||
for (SoundEffect soundEffect : soundEffects)
|
||||
{
|
||||
soundEffect.run(player, location);
|
||||
}
|
||||
}
|
||||
|
||||
public static void runAll(Collection<SoundEffect> soundEffects, Player player)
|
||||
{
|
||||
for (SoundEffect soundEffect : soundEffects)
|
||||
{
|
||||
soundEffect.run(player);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CLONE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public SoundEffect clone()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EQUALS & HASHCODE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + Float.floatToIntBits(pitch);
|
||||
result = prime * result + ((sound == null) ? 0 : sound.hashCode());
|
||||
result = prime * result + Float.floatToIntBits(volume);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (this == obj) return true;
|
||||
if (obj == null) return false;
|
||||
if (!(obj instanceof SoundEffect)) return false;
|
||||
SoundEffect other = (SoundEffect) obj;
|
||||
if (Float.floatToIntBits(pitch) != Float.floatToIntBits(other.pitch)) return false;
|
||||
if (sound != other.sound) return false;
|
||||
if (Float.floatToIntBits(volume) != Float.floatToIntBits(other.volume)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
37
src/com/massivecraft/mcore/cmd/arg/ARSoundEffect.java
Normal file
37
src/com/massivecraft/mcore/cmd/arg/ARSoundEffect.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.massivecraft.mcore.cmd.arg;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.mcore.SoundEffect;
|
||||
import com.massivecraft.mcore.util.Txt;
|
||||
|
||||
public class ARSoundEffect extends ArgReaderAbstract<SoundEffect>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static ARSoundEffect i = new ARSoundEffect();
|
||||
public static ARSoundEffect get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public ArgResult<SoundEffect> read(String arg, CommandSender sender)
|
||||
{
|
||||
ArgResult<SoundEffect> ret = new ArgResult<SoundEffect>();
|
||||
|
||||
try
|
||||
{
|
||||
ret.setResult(SoundEffect.valueOf(arg));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ret.setErrors(Txt.parse("<b>") + e.getMessage());
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
49
src/com/massivecraft/mcore/cmd/arg/ARSoundEffects.java
Normal file
49
src/com/massivecraft/mcore/cmd/arg/ARSoundEffects.java
Normal file
@ -0,0 +1,49 @@
|
||||
package com.massivecraft.mcore.cmd.arg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.mcore.SoundEffect;
|
||||
import com.massivecraft.mcore.util.Txt;
|
||||
|
||||
public class ARSoundEffects extends ArgReaderAbstract<List<SoundEffect>>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static ARSoundEffects i = new ARSoundEffects();
|
||||
public static ARSoundEffects get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public ArgResult<List<SoundEffect>> read(String arg, CommandSender sender)
|
||||
{
|
||||
ArgResult<List<SoundEffect>> ret = new ArgResult<List<SoundEffect>>();
|
||||
List<SoundEffect> result = new ArrayList<SoundEffect>();
|
||||
|
||||
arg = arg.trim();
|
||||
List<String> soundStrings = Arrays.asList(arg.split("\\s+"));
|
||||
|
||||
try
|
||||
{
|
||||
for (String soundString : soundStrings)
|
||||
{
|
||||
result.add(SoundEffect.valueOf(soundString));
|
||||
}
|
||||
ret.setResult(result);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ret.setErrors(Txt.parse("<b>") + e.getMessage());
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
@ -14,6 +14,8 @@ public class CmdMCore extends MCoreCommand
|
||||
public CmdMCoreUsys cmdMCoreUsys = new CmdMCoreUsys(MUtil.list("usys"));
|
||||
public CmdMCoreMStore cmdMCoreMStore = new CmdMCoreMStore(MUtil.list("mstore"));
|
||||
public CmdMCoreId cmdMCoreId = new CmdMCoreId(MUtil.list("id"));
|
||||
public CmdMCoreHearsound cmdMCoreHearsound = new CmdMCoreHearsound(MUtil.list("hearsound", "hearsounds"));
|
||||
public VersionCommand cmdMCoreVersion = new VersionCommand(MCore.get(), MCorePerm.CMD_MCORE_VERSION.node, "v", "version");
|
||||
|
||||
|
||||
public CmdMCore(List<String> aliases)
|
||||
@ -23,8 +25,8 @@ public class CmdMCore extends MCoreCommand
|
||||
this.addSubCommand(this.cmdMCoreUsys);
|
||||
this.addSubCommand(this.cmdMCoreMStore);
|
||||
this.addSubCommand(this.cmdMCoreId);
|
||||
|
||||
this.addSubCommand(new VersionCommand(MCore.get(), MCorePerm.CMD_MCORE_VERSION.node, "v", "version"));
|
||||
this.addSubCommand(this.cmdMCoreHearsound);
|
||||
this.addSubCommand(this.cmdMCoreVersion);
|
||||
|
||||
this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE.node));
|
||||
}
|
||||
|
36
src/com/massivecraft/mcore/mcorecmd/CmdMCoreHearsound.java
Normal file
36
src/com/massivecraft/mcore/mcorecmd/CmdMCoreHearsound.java
Normal file
@ -0,0 +1,36 @@
|
||||
package com.massivecraft.mcore.mcorecmd;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.massivecraft.mcore.MCorePerm;
|
||||
import com.massivecraft.mcore.SoundEffect;
|
||||
import com.massivecraft.mcore.cmd.arg.ARSoundEffects;
|
||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.mcore.cmd.req.ReqIsPlayer;
|
||||
|
||||
public class CmdMCoreHearsound extends MCoreCommand
|
||||
{
|
||||
public CmdMCoreHearsound(List<String> aliases)
|
||||
{
|
||||
super(aliases);
|
||||
|
||||
this.addRequiredArg("sound(s)");
|
||||
|
||||
this.setErrorOnToManyArgs(false);
|
||||
|
||||
this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE_HEARSOUND.node));
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
List<SoundEffect> soundEffects = this.argConcatFrom(0, ARSoundEffects.get());
|
||||
if (soundEffects == null) return;
|
||||
|
||||
// Apply
|
||||
SoundEffect.runAll(soundEffects, me);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user