diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a6f89c2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/target/
\ No newline at end of file
diff --git a/README.md b/README.md
index 11ff927..0446de3 100644
--- a/README.md
+++ b/README.md
@@ -3,8 +3,18 @@ DiscoSheep
A plugin for [Bukkit](http://bukkit.org/), the Minecraft server API. This is a from-scratch remake of the fabulous [DiscoSheep plugin](http://forums.bukkit.org/threads/inactive-fun-discosheep-v0-3-uninvited-guesssts-permissions-and-source-code-522.7106/) which spawns a dance party of sheep at your whim.
+###DiscoFix###
+An attempt to fix up DiscoSheep. No new big features. A short (non-binding) todo list:
+* fix NPE for guests
+* refactor command handling (use sk89q's framework)
+* fix wifi, bluetooth, GPS (wipe dalvik x333)
+* you tell me
+
+##A note on UUIDs##
+DiscoSheep doesn't store anything after a party and getPlayer(name), and disco-party-on-join is handled by a permissions plugin. Thus, we don't need to worry about the migration to UUIDs.
+
###Versions###
-Tested up to CraftBukkit build 2918 (RB for 1.6.4 R2.0); can be built with Java 6.
+Tested up to CraftBukkit build 2918 (RB for 1.6.4 R2.0); can be built with Java 7.
###[BukkitDev](http://dev.bukkit.org/bukkit-plugins/superdiscosheep/)###
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..1bf4dfa
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+ ca.gibstick
+ DiscoSheep
+ 1.1.2
+ jar
+
+
+ bukkit-repo
+ http://repo.bukkit.org/content/groups/public/
+
+
+
+
+ org.bukkit
+ bukkit
+ provided
+ 1.7.9-R0.2
+
+
+
+ DiscoSheep
+ src/main/java
+
+
+ .
+ true
+ src/main/resources/
+
+ plugin.yml
+
+
+
+
+
+ maven-compiler-plugin
+ 3.1
+
+
+ -Xlint:deprecation
+
+
+
+
+
+
+ UTF-8
+ 1.7
+ 1.7
+
+
\ No newline at end of file
diff --git a/src/ca/gibstick/discosheep/DiscoParty.java b/src/main/java/ca/gibstick/discosheep/DiscoParty.java
similarity index 98%
rename from src/ca/gibstick/discosheep/DiscoParty.java
rename to src/main/java/ca/gibstick/discosheep/DiscoParty.java
index 132e4a7..7cb2a5b 100644
--- a/src/ca/gibstick/discosheep/DiscoParty.java
+++ b/src/main/java/ca/gibstick/discosheep/DiscoParty.java
@@ -276,7 +276,7 @@ public class DiscoParty {
}
loc = player.getLocation();
- this.spawnFloor(world, new Location(world, loc.getBlockX(), loc.getBlockY() - 1, loc.getBlockZ()));
+ //this.spawnFloor(world, new Location(world, loc.getBlockX(), loc.getBlockY() - 1, loc.getBlockZ()));
}
void spawnSheep(World world, Location loc) {
@@ -428,9 +428,9 @@ public class DiscoParty {
}
}
- for (Block block : this.floorBlocks) {
- this.randomizeFloor(block);
- }
+ /* for (Block block : this.floorBlocks) {
+ this.randomizeFloor(block);
+ }*/
}
diff --git a/src/ca/gibstick/discosheep/DiscoSheep.java b/src/main/java/ca/gibstick/discosheep/DiscoSheep.java
similarity index 83%
rename from src/ca/gibstick/discosheep/DiscoSheep.java
rename to src/main/java/ca/gibstick/discosheep/DiscoSheep.java
index 2cfb22c..9a7389f 100644
--- a/src/ca/gibstick/discosheep/DiscoSheep.java
+++ b/src/main/java/ca/gibstick/discosheep/DiscoSheep.java
@@ -25,7 +25,7 @@ public final class DiscoSheep extends JavaPlugin {
static final String PERMISSION_SPAWNGUESTS = "discosheep.party.spawnguests";
static final String PERMISSION_TOGGLEPARTYONJOIN = "discosheep.admin.toggleonjoin";
static final String PERMISSION_LIGHTNING = "discosheep.party.lightning";
- static boolean partyOnJoin = true;
+ static boolean partyOnJoin = false;
Map parties = new HashMap();
@Override
@@ -48,22 +48,21 @@ public final class DiscoSheep extends JavaPlugin {
* Iterate through all live entities and create default configuration values for them
* excludes bosses and other mobs that throw NPE
*/
- for (EntityType ent : EntityType.values()) {
- if (ent.isAlive()
- && !ent.equals(EntityType.ENDER_DRAGON)
- && !ent.equals(EntityType.WITHER)
- && !ent.equals(EntityType.PIG_ZOMBIE)
- && !ent.equals(EntityType.OCELOT)
- && !ent.equals(EntityType.CAVE_SPIDER)
- && !ent.equals(EntityType.MAGMA_CUBE)
- && !ent.equals(EntityType.MUSHROOM_COW)
- && !ent.equals(EntityType.IRON_GOLEM)
- && !ent.equals(EntityType.PLAYER)) {
- getConfig().addDefault("default.guests." + ent.toString(), 0);
- getConfig().addDefault("max.guests." + ent.toString(), 0);
- }
- }
-
+ /* for (EntityType ent : EntityType.values()) {
+ if (ent.isAlive()
+ && !ent.equals(EntityType.ENDER_DRAGON)
+ && !ent.equals(EntityType.WITHER)
+ && !ent.equals(EntityType.PIG_ZOMBIE)
+ && !ent.equals(EntityType.OCELOT)
+ && !ent.equals(EntityType.CAVE_SPIDER)
+ && !ent.equals(EntityType.MAGMA_CUBE)
+ && !ent.equals(EntityType.MUSHROOM_COW)
+ && !ent.equals(EntityType.IRON_GOLEM)
+ && !ent.equals(EntityType.PLAYER)) {
+ getConfig().addDefault("default.guests." + ent.toString(), 0);
+ getConfig().addDefault("max.guests." + ent.toString(), 0);
+ }
+ }*/
loadConfigFromDisk();
}
@@ -82,13 +81,13 @@ public final class DiscoSheep extends JavaPlugin {
DiscoParty.defaultDuration = toTicks(getConfig().getInt("default.duration"));
DiscoParty.defaultPeriod = getConfig().getInt("default.period-ticks");
- for (String key : getConfig().getConfigurationSection("default.guests").getKeys(false)) {
- DiscoParty.getDefaultGuestNumbers().put(key, getConfig().getInt("default.guests." + key));
- }
-
- for (String key : getConfig().getConfigurationSection("max.guests").getKeys(false)) {
- DiscoParty.getMaxGuestNumbers().put(key, getConfig().getInt("max.guests." + key));
- }
+ /* for (String key : getConfig().getConfigurationSection("default.guests").getKeys(false)) {
+ DiscoParty.getDefaultGuestNumbers().put(key, getConfig().getInt("default.guests." + key));
+ }
+
+ for (String key : getConfig().getConfigurationSection("max.guests").getKeys(false)) {
+ DiscoParty.getMaxGuestNumbers().put(key, getConfig().getInt("max.guests." + key));
+ }*/
}
@@ -104,9 +103,9 @@ public final class DiscoSheep extends JavaPlugin {
getConfig().set("default.duration", toSeconds_i(DiscoParty.defaultDuration));
getConfig().set("default.period-ticks", DiscoParty.defaultPeriod);
- for (Map.Entry entry : DiscoParty.getDefaultGuestNumbers().entrySet()) {
- getConfig().set("default.guests." + entry.getKey(), entry.getValue());
- }
+ /* for (Map.Entry entry : DiscoParty.getDefaultGuestNumbers().entrySet()) {
+ getConfig().set("default.guests." + entry.getKey(), entry.getValue());
+ }*/
saveConfig();
}
@@ -176,8 +175,8 @@ public final class DiscoSheep extends JavaPlugin {
+ "-t : set the party duration in seconds\n"
+ "-p : set the number of ticks between each disco beat\n"
+ "-r : set radius of the area in which sheep can spawn\n"
- + "-g : set spawns for other mobs"
- + "-l: enables lightning"
+ //+ "-g : set spawns for other mobs\n"
+ + "-l: enables lightning\n"
+ "-fw: enables fireworks");
return true;
}
@@ -219,7 +218,10 @@ public final class DiscoSheep extends JavaPlugin {
return noPermsMessage(sender, PERMISSION_RELOAD);
}
}
-
+
+ @SuppressWarnings( "deprecation" )
+ // UUIDs not necessary since DiscoSheep only lasts for one session at most
+ // and permissions will handle onJoin DiscoSheep
boolean partyOtherCommand(String[] players, CommandSender sender, DiscoParty party) {
if (sender.hasPermission(PERMISSION_OTHER)) {
Player p;
diff --git a/src/ca/gibstick/discosheep/DiscoSheepCommandExecutor.java b/src/main/java/ca/gibstick/discosheep/DiscoSheepCommandExecutor.java
similarity index 86%
rename from src/ca/gibstick/discosheep/DiscoSheepCommandExecutor.java
rename to src/main/java/ca/gibstick/discosheep/DiscoSheepCommandExecutor.java
index 72bdca7..f096ea0 100644
--- a/src/ca/gibstick/discosheep/DiscoSheepCommandExecutor.java
+++ b/src/main/java/ca/gibstick/discosheep/DiscoSheepCommandExecutor.java
@@ -9,7 +9,7 @@ import org.bukkit.entity.Player;
public class DiscoSheepCommandExecutor implements CommandExecutor {
- private DiscoSheep parent;
+ private final DiscoSheep parent;
public DiscoSheepCommandExecutor(DiscoSheep parent) {
this.parent = parent;
@@ -147,26 +147,26 @@ public class DiscoSheepCommandExecutor implements CommandExecutor {
+ DiscoParty.maxPeriod + "]");
return false;
}
- } else if (args[i].equalsIgnoreCase("-g")) {
- if (!sender.hasPermission(DiscoSheep.PERMISSION_SPAWNGUESTS)) {
- return parent.noPermsMessage(sender, DiscoSheep.PERMISSION_SPAWNGUESTS);
- }
-
- if (parseNextArg(args, i, "none")) {
- return parent.clearGuests(mainParty);
- }
-
- String[] guests = getNextArgs(args, i + 1);
- int j = 0;
- while (j < guests.length - 1) {
- try {
- mainParty.setGuestNumber(guests[j], getNextIntArg(guests, j));
- } catch (IllegalArgumentException e) {
- sender.sendMessage(ChatColor.RED + "Invalid arguments: " + ChatColor.WHITE + guests[j] + ", " + guests[j + 1]
- + ".\nEither a name typo or a number that is not within limits.");
- }
- j += 2; // skip over two arguments, since they come in pairs of entity-number
- }
+// } else if (args[i].equalsIgnoreCase("-g")) {
+// if (!sender.hasPermission(DiscoSheep.PERMISSION_SPAWNGUESTS)) {
+// return parent.noPermsMessage(sender, DiscoSheep.PERMISSION_SPAWNGUESTS);
+// }
+//
+// if (parseNextArg(args, i, "none")) {
+// return parent.clearGuests(mainParty);
+// }
+//
+// String[] guests = getNextArgs(args, i + 1);
+// int j = 0;
+// while (j < guests.length - 1) {
+// try {
+// mainParty.setGuestNumber(guests[j], getNextIntArg(guests, j));
+// } catch (IllegalArgumentException e) {
+// sender.sendMessage(ChatColor.RED + "Invalid arguments: " + ChatColor.WHITE + guests[j] + ", " + guests[j + 1]
+// + ".\nEither a name typo or a number that is not within limits.");
+// }
+// j += 2; // skip over two arguments, since they come in pairs of entity-number
+// }
} else if (args[i].equalsIgnoreCase("-l")) {
if (!sender.hasPermission(DiscoSheep.PERMISSION_LIGHTNING)) {
return parent.noPermsMessage(sender, DiscoSheep.PERMISSION_LIGHTNING);
diff --git a/src/ca/gibstick/discosheep/GlobalEvents.java b/src/main/java/ca/gibstick/discosheep/GlobalEvents.java
similarity index 100%
rename from src/ca/gibstick/discosheep/GlobalEvents.java
rename to src/main/java/ca/gibstick/discosheep/GlobalEvents.java
diff --git a/src/ca/gibstick/discosheep/PartyEvents.java b/src/main/java/ca/gibstick/discosheep/PartyEvents.java
similarity index 100%
rename from src/ca/gibstick/discosheep/PartyEvents.java
rename to src/main/java/ca/gibstick/discosheep/PartyEvents.java
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
new file mode 100644
index 0000000..7df59e8
--- /dev/null
+++ b/src/main/resources/plugin.yml
@@ -0,0 +1,93 @@
+name: DiscoSheep
+main: ca.gibstick.discosheep.DiscoSheep
+authors: [Gibstick, RangerMauve]
+version: 1.1.1
+commands:
+ ds:
+ description: "Main DiscoSheep command"
+ usage: |
+ [arguments]
+ Use /ds help for more information
+ To stop your party, use /ds stop.
+permissions:
+ # If default is set to false, console will not have permission!
+ discosheep.*:
+ description: Permission node for all DiscoSheep commands
+ default: op
+ children:
+ discosheep.party: true
+ discosheep.admin: true
+ discosheep.party.*:
+ description: All permissions related to parties
+ defualt: op
+ children:
+ discosheep.party.me: true
+ discosheep.party.all: true
+ discosheep.party.fireworks: true
+ discosheep.party.other: true
+ discosheep.party.changeperiod: true
+ discosheep.party.spawnguests: true
+ discosheep.party.lightning: true
+ discosheep.admin.*:
+ description: Suggested permissions for administrators
+ default: op
+ children:
+ discosheep.admin.stopall: true
+ discosheep.admin.reload: true
+ discosheep.admin.changedefaults: true
+ discosheep.admin.saveconfig: true
+ discosheep.admin.toggleonjoin: true
+ discosheep.party.me:
+ description: Allows a player to have a party of one
+ default: op
+ discosheep.party.all:
+ description: Allows a player to call a server-wide party
+ default: op
+ discosheep.admin.stopall:
+ description: Allows a player to stop all parties on the server
+ default: op
+ discosheep.party.fireworks:
+ description: Allows a player to enable have parties with fireworks
+ default: op
+ discosheep.admin.reload:
+ description: Allows a player to reload settings from config.yml
+ default: op
+ discosheep.party.other:
+ description: Allows a player to call parties for other people, including themselves.
+ default: op
+ children:
+ discosheep.party.me: true
+ discosheep.party.changeperiod:
+ description: Allows a player to use the -p switch
+ default: op
+ discosheep.admin.changedefaults:
+ description: Allows a player to change the default settings
+ default: op
+ discosheep.admin.saveconfig:
+ description: Allows a player to save the config with current values set in memory
+ default: op
+ discosheep.party.onjoin:
+ description: Gives a player a disco party on join
+ default: false
+ discosheep.party.spawnguests:
+ description: Allow a player to spawn other mobs
+ default: op
+ discosheep.admin.toggleonjoin:
+ description: Allow a player to toggle party-on-join functionality (force disable)
+ default: op
+ discosheep.party.lightning:
+ description: Allow a player to use lightning for parties
+ default: op
+ # FOR BACKWARDS COMPAT FROM 1.1 TO 1.1.1
+ discosheep.party:
+ children:
+ discosheep.party.me: true
+ discosheep.partyall:
+ children:
+ discosheep.party.all: true
+ discosheep.reload:
+ children:
+ discoshep.admin.reload: true
+ discosheep.stopall:
+ children:
+ discosheep.admin.stopall: true
\ No newline at end of file