Skip to content

Commit

Permalink
receive different tips depending on permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
zydeco committed Feb 27, 2012
1 parent f81c4d8 commit f9a75b7
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 14 deletions.
53 changes: 41 additions & 12 deletions src/net/namedfork/bukkit/Tips/TipSet.java
Expand Up @@ -3,24 +3,28 @@
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import org.bukkit.Server;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.PluginManager;

/**
*
* @author zydeco
*/
public class TipSet implements Runnable {
private final Server server;
private final World world;
private final int delay, period;
private final String[] tips;
private final Random rng;
private final String id;
private final Permission perm;
private int nextTip;

public TipSet(Server server, World world, int delay, int period, List<String> tips, long seed) {
this.server = server;
public TipSet(String id, World world, int delay, int period, List<String> tips, long seed) {
this.id = id;
this.world = world;
this.delay = delay;
this.period = period;
Expand All @@ -32,6 +36,22 @@ public TipSet(Server server, World world, int delay, int period, List<String> ti
for(int i=0; i < this.tips.length; i++) {
this.tips[i] = formatTip(this.tips[i]);
}

// register permission
if (id != null) {
PluginManager pm = Bukkit.getServer().getPluginManager();
String permName = "tips.receive."+id;
if (pm.getPermission(permName) == null) {
perm = new Permission(permName, PermissionDefault.FALSE);
System.out.println("REGISTERING PERMISSION "+perm.getName());
pm.addPermission(perm);
} else {
perm = pm.getPermission(permName);
}
} else {
perm = null;
}

}

public void run() {
Expand All @@ -46,14 +66,27 @@ else if (tips.length == 1) {
}
final String tip = tips[nextTip];

if (getWorld() == null) {
if (world == null && perm == null) {
// tip for everyone
getServer().broadcastMessage(tip);
Bukkit.getServer().broadcastMessage(tip);
} else if (world == null && perm != null) {
// global tip with permission
Player players[] = Bukkit.getServer().getOnlinePlayers();
for(Player p: players) {
if (p.hasPermission(perm)) System.out.println(p.getName() + " has permission " + perm.getName());
if (p.hasPermission("tips.receive.*")) System.out.println(p.getName() + " has permission tips.receive.*");
if (p.hasPermission(perm) || p.hasPermission("tips.receive.*")) {
p.sendMessage(tip);
}
}
} else {
// tip for world
Iterator<Player> i = getWorld().getPlayers().iterator();
Iterator<Player> i = world.getPlayers().iterator();
while (i.hasNext()) {
i.next().sendMessage(tip);
Player p = i.next();
if (perm == null || p.hasPermission(perm) || p.hasPermission("tips.receive.*")) {
p.sendMessage(tip);
}
}
}
}
Expand All @@ -63,10 +96,6 @@ private String formatTip(String tip) {
return tip.replace("$", "\u00A7").replace("\u00A7$", "$");
}

public Server getServer() {
return server;
}

public World getWorld() {
return world;
}
Expand Down
2 changes: 1 addition & 1 deletion src/net/namedfork/bukkit/Tips/Tips.java
Expand Up @@ -56,7 +56,7 @@ private List<TipSet> tipSetsForWorld(World w) {
int period = ((Number)t.get("period")).intValue();
int delay = t.containsKey("delay")?((Number)t.get("delay")).intValue():period;
boolean isRandom = !(t.containsKey("random") && ((Boolean)t.get("random")).booleanValue() == false);
tipSets.add(new TipSet(getServer(), w, delay, period, (List<String>)t.get("tips"), isRandom?rng.nextLong():0));
tipSets.add(new TipSet((String)t.get("id"), w, delay, period, (List<String>)t.get("tips"), isRandom?rng.nextLong():0));
}
return tipSets;
} catch (Exception e) {
Expand Down
5 changes: 4 additions & 1 deletion src/plugin.yml
@@ -1,6 +1,6 @@
name: Tips
main: net.namedfork.bukkit.Tips.Tips
version: 1.0.4
version: 1.1
author: Jesús A. Álvarez
authorEmail: zydeco@namedfork.net
authorUrl: http://namedfork.net
Expand All @@ -13,3 +13,6 @@ permissions:
tips.reload:
description: Allows to reload tips
default: op
tips.receive.*:
description: Receive all the tips
default: false

0 comments on commit f9a75b7

Please sign in to comment.