first commit
This commit is contained in:
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| .settings | ||||
| target | ||||
| .classpath | ||||
| .project | ||||
							
								
								
									
										134
									
								
								pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,134 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
|  | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
|   <modelVersion>4.0.0</modelVersion> | ||||
|  | ||||
|   <groupId>org.mc</groupId> | ||||
|   <artifactId>webhooks</artifactId> | ||||
|   <version>0.1</version> | ||||
|  | ||||
|   <name>mcwebhooks</name> | ||||
|   <!-- FIXME change it to the project's website --> | ||||
|   <url>http://www.example.com</url> | ||||
|  | ||||
|   <properties> | ||||
|     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||
|     <maven.compiler.source>1.7</maven.compiler.source> | ||||
|     <maven.compiler.target>1.7</maven.compiler.target> | ||||
|   </properties> | ||||
|  | ||||
|   <repositories> | ||||
|     <repository> | ||||
|         <id>spigot-repo</id> | ||||
|         <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> | ||||
|     </repository> | ||||
|   </repositories> | ||||
|  | ||||
|   <dependencies> | ||||
|     <dependency> | ||||
|       <groupId>junit</groupId> | ||||
|       <artifactId>junit</artifactId> | ||||
|       <version>4.11</version> | ||||
|       <scope>test</scope> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.bukkit</groupId> | ||||
|       <artifactId>bukkit</artifactId> | ||||
|       <version>1.13.2-R0.1-SNAPSHOT</version> | ||||
|       <scope>provided</scope> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>com.fasterxml.jackson.core</groupId> | ||||
|       <artifactId>jackson-core</artifactId> | ||||
|       <version>2.9.6</version> | ||||
|     </dependency> | ||||
|  | ||||
|     <dependency> | ||||
|       <groupId>com.fasterxml.jackson.core</groupId> | ||||
|       <artifactId>jackson-annotations</artifactId> | ||||
|       <version>2.9.6</version> | ||||
|     </dependency> | ||||
|  | ||||
|     <dependency> | ||||
|       <groupId>com.fasterxml.jackson.core</groupId> | ||||
|       <artifactId>jackson-databind</artifactId> | ||||
|       <version>2.9.6</version> | ||||
|     </dependency> | ||||
|  | ||||
|     <dependency> | ||||
|       <groupId>org.apache.httpcomponents</groupId> | ||||
|       <artifactId>httpclient</artifactId> | ||||
|       <version>4.3.6</version> | ||||
|     </dependency> | ||||
|   </dependencies> | ||||
|  | ||||
|   <build> | ||||
|     <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> | ||||
|       <plugins> | ||||
|         <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> | ||||
|         <plugin> | ||||
|           <artifactId>maven-clean-plugin</artifactId> | ||||
|           <version>3.1.0</version> | ||||
|         </plugin> | ||||
|         <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> | ||||
|         <plugin> | ||||
|           <artifactId>maven-resources-plugin</artifactId> | ||||
|           <version>3.0.2</version> | ||||
|         </plugin> | ||||
|         <plugin> | ||||
|           <artifactId>maven-compiler-plugin</artifactId> | ||||
|           <version>3.8.0</version> | ||||
|         </plugin> | ||||
|         <plugin> | ||||
|           <artifactId>maven-surefire-plugin</artifactId> | ||||
|           <version>2.22.1</version> | ||||
|         </plugin> | ||||
|         <plugin> | ||||
|           <artifactId>maven-jar-plugin</artifactId> | ||||
|           <version>3.0.2</version> | ||||
|         </plugin> | ||||
|         <plugin> | ||||
|           <artifactId>maven-install-plugin</artifactId> | ||||
|           <version>2.5.2</version> | ||||
|         </plugin> | ||||
|         <plugin> | ||||
|           <artifactId>maven-deploy-plugin</artifactId> | ||||
|           <version>2.8.2</version> | ||||
|         </plugin> | ||||
|         <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> | ||||
|         <plugin> | ||||
|           <artifactId>maven-site-plugin</artifactId> | ||||
|           <version>3.7.1</version> | ||||
|         </plugin> | ||||
|         <plugin> | ||||
|           <artifactId>maven-project-info-reports-plugin</artifactId> | ||||
|           <version>3.0.0</version> | ||||
|         </plugin> | ||||
|         <plugin> | ||||
|             <artifactId>maven-assembly-plugin</artifactId> | ||||
|             <version>3.0.0</version> | ||||
|             <configuration> | ||||
|                 <descriptorRefs> | ||||
|                     <descriptorRef>jar-with-dependencies</descriptorRef> | ||||
|                 </descriptorRefs> | ||||
|                 <archive> | ||||
|                     <manifest> | ||||
|                         <mainClass>mcwebhooks.MCWebHooks</mainClass> | ||||
|                     </manifest> | ||||
|                 </archive> | ||||
|             </configuration> | ||||
|             <executions> | ||||
|                 <execution> | ||||
|                     <id>make-assembly</id> <!-- this is used for inheritance merges --> | ||||
|                     <phase>package</phase> <!-- bind to the packaging phase --> | ||||
|                     <goals> | ||||
|                         <goal>single</goal> | ||||
|                     </goals> | ||||
|                 </execution> | ||||
|             </executions> | ||||
|         </plugin> | ||||
|       </plugins> | ||||
|     </pluginManagement> | ||||
|   </build> | ||||
| </project> | ||||
							
								
								
									
										6
									
								
								src/main/java/mcwebhooks/Config.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/main/java/mcwebhooks/Config.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| package mcwebhooks; | ||||
|  | ||||
| public final class Config | ||||
| { | ||||
|     public String hookUrl; | ||||
| } | ||||
							
								
								
									
										12
									
								
								src/main/java/mcwebhooks/DeathHookEvent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/main/java/mcwebhooks/DeathHookEvent.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| package mcwebhooks; | ||||
|  | ||||
| final class DeathHookEvent extends PlayerHookEvent | ||||
| { | ||||
|     public String deathMessage; | ||||
|  | ||||
|     public DeathHookEvent(String displayName, String deathMessage) { | ||||
|         super(displayName); | ||||
|         this.type = "death"; | ||||
|         this.deathMessage = deathMessage; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										6
									
								
								src/main/java/mcwebhooks/HookEvent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/main/java/mcwebhooks/HookEvent.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| package mcwebhooks; | ||||
|  | ||||
| abstract class HookEvent | ||||
| { | ||||
|     public String type; | ||||
| } | ||||
							
								
								
									
										9
									
								
								src/main/java/mcwebhooks/JoinHookEvent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/main/java/mcwebhooks/JoinHookEvent.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| package mcwebhooks; | ||||
|  | ||||
| final class JoinHookEvent extends PlayerHookEvent | ||||
| { | ||||
|     public JoinHookEvent(String displayName) { | ||||
|         super(displayName); | ||||
|         this.type = "login"; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										78
									
								
								src/main/java/mcwebhooks/MCWebHooks.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/main/java/mcwebhooks/MCWebHooks.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,78 @@ | ||||
| package mcwebhooks; | ||||
|  | ||||
| import org.bukkit.plugin.java.JavaPlugin; | ||||
| import org.bukkit.event.EventHandler; | ||||
| import org.bukkit.event.Listener; | ||||
| import org.bukkit.event.player.PlayerJoinEvent; | ||||
| import org.bukkit.event.entity.PlayerDeathEvent; | ||||
|  | ||||
| import org.apache.http.impl.client.HttpClientBuilder; | ||||
| import org.apache.http.client.HttpClient; | ||||
| import org.apache.http.client.methods.HttpPost; | ||||
| import org.apache.http.entity.StringEntity; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.io.UnsupportedEncodingException; | ||||
| import java.io.File; | ||||
|  | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
|  | ||||
| public final class MCWebHooks extends JavaPlugin implements Listener { | ||||
|     private Config config; | ||||
|     private HttpClient httpClient; | ||||
|     private ObjectMapper mapper; | ||||
|  | ||||
|     @Override | ||||
|     public void onEnable() { | ||||
|         this.mapper = new ObjectMapper(); | ||||
|         try { | ||||
|             getLogger().info("Loading config"); | ||||
|             this.config = this.mapper.readValue(new File("plugins/webhooks.json"), Config.class); | ||||
|             getLogger().info(String.format("Hooks will be sent to: %s", this.config.hookUrl)); | ||||
|         } catch (IOException e) { | ||||
|             getLogger().info("Config loading failed"); | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         this.httpClient = HttpClientBuilder.create().build(); | ||||
|         getServer().getPluginManager().registerEvents(this, this); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onDisable() { | ||||
|         getLogger().info("Web hooks are disabled"); | ||||
|     } | ||||
|  | ||||
|     @EventHandler | ||||
|     public void onJoin(PlayerJoinEvent event) { | ||||
|         JoinHookEvent hookEvent = new JoinHookEvent(event.getPlayer().getDisplayName()); | ||||
|         this.sendHookedEvent(hookEvent); | ||||
|     } | ||||
|  | ||||
|     @EventHandler | ||||
|     public void onPlayerDeath(PlayerDeathEvent event) { | ||||
|         DeathHookEvent hookEvent = new DeathHookEvent(event.getEntity().getDisplayName(), event.getDeathMessage()); | ||||
|         this.sendHookedEvent(hookEvent); | ||||
|     } | ||||
|  | ||||
|     private final void sendHookedEvent(HookEvent event) { | ||||
|         getLogger().info(String.format("Event: %s", event.type)); | ||||
|         HttpPost request = new HttpPost(this.config.hookUrl); | ||||
|         request.addHeader("content-type", "application/json"); | ||||
|         try { | ||||
|             StringEntity params = new StringEntity(this.mapper.writeValueAsString(event)); | ||||
|             request.setEntity(params); | ||||
|         } catch (JsonProcessingException | UnsupportedEncodingException e1) { | ||||
|             getLogger().info("Parsing failed"); | ||||
|             e1.printStackTrace(); | ||||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             this.httpClient.execute(request); | ||||
|             getLogger().info("Request sent"); | ||||
|         } catch (IOException e) { | ||||
|             getLogger().info("Request failed"); | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										10
									
								
								src/main/java/mcwebhooks/PlayerHookEvent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/main/java/mcwebhooks/PlayerHookEvent.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| package mcwebhooks; | ||||
|  | ||||
| abstract class PlayerHookEvent extends HookEvent | ||||
| { | ||||
|     public String displayName; | ||||
|  | ||||
|     public PlayerHookEvent(String displayName) { | ||||
|         this.displayName = displayName; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										3
									
								
								src/main/resources/plugin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/main/resources/plugin.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| name: mcwebhooks | ||||
| main: mcwebhooks.MCWebHooks | ||||
| version: 0.1 | ||||
		Reference in New Issue
	
	Block a user