mirror of
https://github.com/TotalFreedomMC/OpenInv.git
synced 2024-12-23 00:15:08 +00:00
Latest version, 1.7.1
Using new CB events. Updated Metrics to R3.
This commit is contained in:
parent
86daef30f5
commit
faed001041
6 changed files with 107 additions and 37 deletions
12
.classpath
12
.classpath
|
@ -2,11 +2,11 @@
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||||
<classpathentry kind="lib" path="D:/Programs/Eclipse/Workspace/bukkit.jar" sourcepath="D:/Programs/Eclipse/Workspace/Bukkit-Source.zip"/>
|
<classpathentry combineaccessrules="false" kind="src" path="/Orebfuscator"/>
|
||||||
<classpathentry kind="lib" path="D:/Programs/Eclipse/Workspace/craftbukkit.jar" sourcepath="D:/Programs/Eclipse/Workspace/CraftBukkit-Source.zip"/>
|
<classpathentry kind="lib" path="D:/Dropbox/Projects/Workspace/bukkit.jar" sourcepath="D:/Dropbox/Projects/Workspace/Bukkit-Source.zip"/>
|
||||||
<classpathentry kind="lib" path="D:/Programs/Eclipse/Workspace/PermissionsEx.jar"/>
|
<classpathentry kind="lib" path="D:/Dropbox/Projects/Workspace/craftbukkit.jar" sourcepath="D:/Dropbox/Projects/Workspace/craftbukkit.jar"/>
|
||||||
<classpathentry kind="lib" path="D:/Programs/Eclipse/Workspace/Permissions.jar"/>
|
<classpathentry kind="lib" path="D:/Dropbox/Projects/Workspace/FakePermissions.jar"/>
|
||||||
<classpathentry kind="lib" path="D:/Programs/Eclipse/Workspace/spout.jar" sourcepath="D:/Programs/Eclipse/Workspace/Spout.zip"/>
|
<classpathentry kind="lib" path="D:/Dropbox/Projects/Workspace/Spout.jar" sourcepath="D:/Dropbox/Projects/Workspace/Spout.zip"/>
|
||||||
<classpathentry kind="lib" path="D:/Programs/Eclipse/Workspace/spoutapi.jar" sourcepath="D:/Programs/Eclipse/Workspace/SpoutAPI.zip"/>
|
<classpathentry kind="lib" path="D:/Dropbox/Projects/Workspace/SpoutAPI.jar" sourcepath="D:/Dropbox/Projects/Workspace/SpoutAPI.zip"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -6,7 +6,6 @@ import lishid.openinv.utils.Metrics;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Event;
|
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
@ -49,10 +48,8 @@ public class OpenInv extends JavaPlugin {
|
||||||
mainPlugin.saveConfig();
|
mainPlugin.saveConfig();
|
||||||
|
|
||||||
PluginManager pm = getServer().getPluginManager();
|
PluginManager pm = getServer().getPluginManager();
|
||||||
pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Event.Priority.Lowest, this);
|
pm.registerEvents(playerListener, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Event.Priority.Monitor, this);
|
pm.registerEvents(entityListener, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Event.Priority.Lowest, this);
|
|
||||||
//pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Event.Priority.Monitor, this);
|
|
||||||
setupPermissions();
|
setupPermissions();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,16 +4,18 @@ import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityListener;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
public class OpenInvEntityListener extends EntityListener{
|
public class OpenInvEntityListener implements Listener{
|
||||||
OpenInv plugin;
|
OpenInv plugin;
|
||||||
public OpenInvEntityListener(OpenInv scrap) {
|
public OpenInvEntityListener(OpenInv scrap) {
|
||||||
plugin = scrap;
|
plugin = scrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onEntityDamage(EntityDamageEvent event) {
|
public void onEntityDamage(EntityDamageEvent event) {
|
||||||
if (event instanceof EntityDamageByEntityEvent) {
|
if (event instanceof EntityDamageByEntityEvent) {
|
||||||
EntityDamageByEntityEvent evt = (EntityDamageByEntityEvent) event;
|
EntityDamageByEntityEvent evt = (EntityDamageByEntityEvent) event;
|
||||||
Entity attacker = evt.getDamager();
|
Entity attacker = evt.getDamager();
|
||||||
|
|
|
@ -19,19 +19,21 @@ import org.bukkit.block.Chest;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Event.Result;
|
import org.bukkit.event.Event.Result;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerListener;
|
|
||||||
import org.bukkit.event.player.PlayerLoginEvent;
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
|
||||||
public class OpenInvPlayerListener extends PlayerListener{
|
public class OpenInvPlayerListener implements Listener{
|
||||||
OpenInv plugin;
|
OpenInv plugin;
|
||||||
public OpenInvPlayerListener(OpenInv scrap) {
|
public OpenInvPlayerListener(OpenInv scrap) {
|
||||||
plugin = scrap;
|
plugin = scrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onPlayerLogin(PlayerLoginEvent event)
|
public void onPlayerLogin(PlayerLoginEvent event)
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
|
@ -50,7 +52,7 @@ public class OpenInvPlayerListener extends PlayerListener{
|
||||||
catch(Exception e){}
|
catch(Exception e){}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerInteract(PlayerInteractEvent event)
|
public void onPlayerInteract(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
if(event.getAction() == Action.RIGHT_CLICK_BLOCK && event.useInteractedBlock() == Result.DENY)
|
if(event.getAction() == Action.RIGHT_CLICK_BLOCK && event.useInteractedBlock() == Result.DENY)
|
||||||
|
|
|
@ -41,6 +41,11 @@ import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,10 +53,46 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public class Metrics {
|
public class Metrics {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface used to collect custom data for a plugin
|
||||||
|
*/
|
||||||
|
public static abstract class Plotter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the column name for the plotted point
|
||||||
|
*
|
||||||
|
* @return the plotted point's column name
|
||||||
|
*/
|
||||||
|
public abstract String getColumnName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current value for the plotted point
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public abstract int getValue();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return getColumnName().hashCode() + getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object object) {
|
||||||
|
if (!(object instanceof Plotter)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Plotter plotter = (Plotter) object;
|
||||||
|
return plotter.getColumnName().equals(getColumnName()) && plotter.getValue() == getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The metrics revision number
|
* The metrics revision number
|
||||||
*/
|
*/
|
||||||
private final static int REVISION = 2;
|
private final static int REVISION = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The base url of the metrics domain
|
* The base url of the metrics domain
|
||||||
|
@ -71,14 +112,18 @@ public class Metrics {
|
||||||
/**
|
/**
|
||||||
* Interval of time to ping in minutes
|
* Interval of time to ping in minutes
|
||||||
*/
|
*/
|
||||||
private final static long PING_INTERVAL = 20L;
|
private final static int PING_INTERVAL = 10;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A map of the custom data plotters for plugins
|
||||||
|
*/
|
||||||
|
private Map<Plugin, Set<Plotter>> customData = Collections.synchronizedMap(new HashMap<Plugin, Set<Plotter>>());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The plugin configuration file
|
* The plugin configuration file
|
||||||
*/
|
*/
|
||||||
private final YamlConfiguration configuration;
|
private final YamlConfiguration configuration;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unique server id
|
* Unique server id
|
||||||
*/
|
*/
|
||||||
|
@ -103,6 +148,23 @@ public class Metrics {
|
||||||
guid = configuration.getString("guid");
|
guid = configuration.getString("guid");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a custom data plotter for a given plugin
|
||||||
|
*
|
||||||
|
* @param plugin
|
||||||
|
* @param plotter
|
||||||
|
*/
|
||||||
|
public void addCustomData(Plugin plugin, Plotter plotter) {
|
||||||
|
Set<Plotter> plotters = customData.get(plugin);
|
||||||
|
|
||||||
|
if (plotters == null) {
|
||||||
|
plotters = Collections.synchronizedSet(new LinkedHashSet<Plotter>());
|
||||||
|
customData.put(plugin, plotters);
|
||||||
|
}
|
||||||
|
|
||||||
|
plotters.add(plotter);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Begin measuring a plugin
|
* Begin measuring a plugin
|
||||||
*
|
*
|
||||||
|
@ -126,7 +188,7 @@ public class Metrics {
|
||||||
System.out.println("[Metrics] " + e.getMessage());
|
System.out.println("[Metrics] " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 0, PING_INTERVAL * 1200);
|
}, PING_INTERVAL * 1200, PING_INTERVAL * 1200);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,15 +199,25 @@ public class Metrics {
|
||||||
private void postPlugin(Plugin plugin, boolean isPing) throws IOException {
|
private void postPlugin(Plugin plugin, boolean isPing) throws IOException {
|
||||||
// Construct the post data
|
// Construct the post data
|
||||||
String response = "ERR No response";
|
String response = "ERR No response";
|
||||||
String data = encode("guid") + "=" + encode(guid)
|
String data = encode("guid") + '=' + encode(guid)
|
||||||
+ "&" + encode("version") + "=" + encode(plugin.getDescription().getVersion())
|
+ '&' + encode("version") + '=' + encode(plugin.getDescription().getVersion())
|
||||||
+ "&" + encode("server") + "=" + encode(Bukkit.getVersion())
|
+ '&' + encode("server") + '=' + encode(Bukkit.getVersion())
|
||||||
+ "&" + encode("players") + "=" + encode(Bukkit.getServer().getOnlinePlayers().length + "")
|
+ '&' + encode("players") + '=' + encode(String.valueOf(Bukkit.getServer().getOnlinePlayers().length))
|
||||||
+ "&" + encode("revision") + "=" + encode(REVISION + "");
|
+ '&' + encode("revision") + '=' + encode(REVISION + "");
|
||||||
|
|
||||||
// If we're pinging, append it
|
// If we're pinging, append it
|
||||||
if (isPing) {
|
if (isPing) {
|
||||||
data += "&" + encode("ping") + "=" + encode("true");
|
data += '&' + encode("ping") + '=' + encode("true");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add any custom data (if applicable)
|
||||||
|
Set<Plotter> plotters = customData.get(plugin);
|
||||||
|
|
||||||
|
if (plotters != null) {
|
||||||
|
for (Plotter plotter : plotters) {
|
||||||
|
data += "&" + encode ("Custom" + plotter.getColumnName())
|
||||||
|
+ "=" + encode(Integer.toString(plotter.getValue()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the url
|
// Create the url
|
||||||
|
@ -168,13 +240,10 @@ public class Metrics {
|
||||||
writer.close();
|
writer.close();
|
||||||
reader.close();
|
reader.close();
|
||||||
|
|
||||||
if (response.startsWith("OK")) {
|
if (response.startsWith("ERR")){
|
||||||
// Useless return, but it documents that we should be receiving OK followed by an optional description
|
throw new IOException(response); //Throw the exception
|
||||||
return;
|
|
||||||
} else if (response.startsWith("ERR")) {
|
|
||||||
// Throw it to whoever is catching us
|
|
||||||
throw new IOException(response);
|
|
||||||
}
|
}
|
||||||
|
//if (response.startsWith("OK")) - We should get "OK" followed by an optional description if everything goes right
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -183,7 +252,7 @@ public class Metrics {
|
||||||
* @param text
|
* @param text
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private String encode(String text) throws UnsupportedEncodingException {
|
private static String encode(String text) throws UnsupportedEncodingException {
|
||||||
return URLEncoder.encode(text, "UTF-8");
|
return URLEncoder.encode(text, "UTF-8");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: OpenInv
|
name: OpenInv
|
||||||
main: lishid.openinv.OpenInv
|
main: lishid.openinv.OpenInv
|
||||||
version: 1.7.2
|
version: 1.7.3
|
||||||
author: lishid
|
author: lishid
|
||||||
website: http://forums.bukkit.org/threads/15379/
|
website: http://forums.bukkit.org/threads/15379/
|
||||||
description: >
|
description: >
|
||||||
|
|
Loading…
Reference in a new issue