-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
416845d
commit 17ff9e4
Showing
9 changed files
with
521 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> | ||
<component name="FacetManager"> | ||
<facet type="minecraft" name="Minecraft"> | ||
<configuration> | ||
<autoDetectTypes> | ||
<platformType>SPIGOT</platformType> | ||
</autoDetectTypes> | ||
</configuration> | ||
</facet> | ||
</component> | ||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> | ||
<output url="file://$MODULE_DIR$/target/classes" /> | ||
<output-test url="file://$MODULE_DIR$/target/test-classes" /> | ||
<content url="file://$MODULE_DIR$"> | ||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> | ||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> | ||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> | ||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> | ||
<excludeFolder url="file://$MODULE_DIR$/target" /> | ||
</content> | ||
<orderEntry type="inheritedJdk" /> | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:4.10" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:21.0" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.8.0" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.19" level="project" /> | ||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.12-SNAPSHOT" level="project" /> | ||
</component> | ||
</module> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
<?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>noslowdwn</groupId> | ||
<artifactId>ExplosionsBlocker</artifactId> | ||
<version>1.0</version> | ||
<packaging>jar</packaging> | ||
|
||
<name>ExplosionsBlocker</name> | ||
|
||
<description>Prevent any explosions in any worlds</description> | ||
<properties> | ||
<java.version>1.8</java.version> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
</properties> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>3.8.1</version> | ||
<configuration> | ||
<source>${java.version}</source> | ||
<target>${java.version}</target> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-shade-plugin</artifactId> | ||
<version>3.2.4</version> | ||
<executions> | ||
<execution> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>shade</goal> | ||
</goals> | ||
<configuration> | ||
<createDependencyReducedPom>false</createDependencyReducedPom> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
<resources> | ||
<resource> | ||
<directory>src/main/resources</directory> | ||
<filtering>true</filtering> | ||
</resource> | ||
</resources> | ||
</build> | ||
|
||
<repositories> | ||
<repository> | ||
<id>spigotmc-repo</id> | ||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> | ||
</repository> | ||
<repository> | ||
<id>sonatype</id> | ||
<url>https://oss.sonatype.org/content/groups/public/</url> | ||
</repository> | ||
</repositories> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.spigotmc</groupId> | ||
<artifactId>spigot-api</artifactId> | ||
<version>1.12.2-R0.1-SNAPSHOT</version> | ||
<scope>provided</scope> | ||
</dependency> | ||
</dependencies> | ||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package explosionsblocker.noslowdwn; | ||
|
||
import org.bukkit.command.Command; | ||
import org.bukkit.command.CommandExecutor; | ||
import org.bukkit.command.CommandSender; | ||
import org.bukkit.entity.Player; | ||
|
||
import static explosionsblocker.noslowdwn.ExplosionsBlocker.instance; | ||
|
||
public final class CmdManager implements CommandExecutor { | ||
@Override | ||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { | ||
|
||
if (sender instanceof Player && !sender.hasPermission("explosionsblocker.reload")) { | ||
sender.sendMessage(ColorsUtil.of(instance.getConfig().getString("messages.no-permission"))); | ||
return true; | ||
} else { | ||
instance.reloadConfig(); | ||
sender.sendMessage(ColorsUtil.of(instance.getConfig().getString("messages.reload-message"))); | ||
} | ||
|
||
return true; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package explosionsblocker.noslowdwn; | ||
|
||
import net.md_5.bungee.api.ChatColor; | ||
import org.bukkit.Bukkit; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
public class ColorsUtil { | ||
|
||
public static String of(String message) { | ||
if (message == null) { | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Error message parsing!"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Please check your messages.yml to find error!"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] You can also check syntax on https://yamlchecker.com/!"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Or just delete 'messages.yml' and reload plugin!"); | ||
message = "&c[ExplosionsBlocker] Error message parsing! Please contact administrator or check console!"; | ||
} | ||
|
||
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3]; | ||
int subVersion = Integer.parseInt(version.replace("1_", "").replaceAll("_R\\d", "").replace("v", "")); | ||
if (subVersion >= 16) { | ||
Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}"); | ||
Matcher matcher = pattern.matcher(message); | ||
|
||
while (matcher.find()) { | ||
String color = message.substring(matcher.start(), matcher.end()); | ||
StringBuilder replacement = new StringBuilder("x"); | ||
for (char c : color.substring(1).toCharArray()) | ||
replacement.append('\u00A7').append(c); | ||
message = message.replace(color, replacement.toString()); | ||
matcher = pattern.matcher(message); | ||
} | ||
} | ||
|
||
return ChatColor.translateAlternateColorCodes('&', message); | ||
} | ||
} |
38 changes: 38 additions & 0 deletions
38
src/main/java/explosionsblocker/noslowdwn/ExplosionsBlocker.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package explosionsblocker.noslowdwn; | ||
|
||
import explosionsblocker.noslowdwn.events.EntitiesDamage; | ||
import explosionsblocker.noslowdwn.events.Explosions; | ||
import org.bukkit.configuration.file.YamlConfiguration; | ||
import org.bukkit.plugin.java.JavaPlugin; | ||
|
||
import java.io.File; | ||
|
||
public final class ExplosionsBlocker extends JavaPlugin { | ||
|
||
public static ExplosionsBlocker instance; | ||
|
||
@Override | ||
public void onEnable() { | ||
instance = this; | ||
load(); | ||
|
||
this.getCommand("exblocker").setExecutor(new CmdManager()); | ||
this.getServer().getPluginManager().registerEvents(new EntitiesDamage(), this); | ||
this.getServer().getPluginManager().registerEvents(new Explosions(), this); | ||
} | ||
|
||
private void load() { | ||
File file = new File(this.getDataFolder(), "config.yml"); | ||
|
||
if (!file.exists()) | ||
this.saveResource("config.yml", false); | ||
|
||
YamlConfiguration config = new YamlConfiguration(); | ||
|
||
try { | ||
config.load(file); | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
} | ||
} | ||
} |
74 changes: 74 additions & 0 deletions
74
src/main/java/explosionsblocker/noslowdwn/events/EntitiesDamage.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package explosionsblocker.noslowdwn.events; | ||
|
||
import net.md_5.bungee.api.ChatColor; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.World; | ||
import org.bukkit.entity.EntityType; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
import org.bukkit.event.entity.EntityDamageByEntityEvent; | ||
|
||
import static explosionsblocker.noslowdwn.ExplosionsBlocker.instance; | ||
|
||
public class EntitiesDamage implements Listener { | ||
|
||
@EventHandler | ||
public void onEntityDamage(EntityDamageByEntityEvent e) { | ||
World world = e.getDamager().getWorld(); | ||
|
||
if (e.getDamager().getType() == EntityType.CREEPER && instance.getConfig().getBoolean("settings.creeper.block-damage")) { | ||
if (instance.getConfig().getStringList("settings.creeper.blocked-worlds").isEmpty()) { | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Creeper damage wasn't canceled because the list of blocked-worlds is empty"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Please check your configuration file"); | ||
} else { | ||
for (String bWorld : instance.getConfig().getStringList("settings.creeper.blocked-worlds")) | ||
if (world.getName().equals(bWorld)) | ||
e.setCancelled(true); | ||
} | ||
} | ||
|
||
if (e.getDamager().getType() == EntityType.PRIMED_TNT && instance.getConfig().getBoolean("settings.tnt.block-damage")) { | ||
if (instance.getConfig().getStringList("settings.tnt.blocked-worlds").isEmpty()) { | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Tnt damage wasn't canceled because the list of blocked-worlds is empty"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Please check your configuration file"); | ||
} else { | ||
for (String bWorld : instance.getConfig().getStringList("settings.tnt.blocked-worlds")) | ||
if (world.getName().equals(bWorld)) | ||
e.setCancelled(true); | ||
} | ||
} | ||
|
||
if (e.getDamager().getType() == EntityType.MINECART_TNT && instance.getConfig().getBoolean("settings.tnt-in-cart.block-damage")) { | ||
if (instance.getConfig().getStringList("settings.tnt-in-cart.blocked-worlds").isEmpty()) { | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Minecart tnt damage wasn't canceled because the list of blocked-worlds is empty"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Please check your configuration file"); | ||
} else { | ||
for (String bWorld : instance.getConfig().getStringList("settings.tnt-in-cart.blocked-worlds")) | ||
if (world.getName().equals(bWorld)) | ||
e.setCancelled(true); | ||
} | ||
} | ||
|
||
if (e.getDamager().getType() == EntityType.WITHER && instance.getConfig().getBoolean("settings.wither.block-damage")) { | ||
if (instance.getConfig().getStringList("settings.wither.blocked-worlds").isEmpty()) { | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Wither damage wasn't canceled because the list of blocked-worlds is empty"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Please check your configuration file"); | ||
} else { | ||
for (String bWorld : instance.getConfig().getStringList("settings.wither-heads.blocked-worlds")) | ||
if (world.getName().equals(bWorld)) | ||
e.setCancelled(true); | ||
} | ||
} | ||
|
||
if (e.getDamager().getType() == EntityType.WITHER_SKULL && instance.getConfig().getBoolean("settings.wither-heads.block-damage")) { | ||
if (instance.getConfig().getStringList("settings.wither-heads.blocked-worlds").isEmpty()) { | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Wither heads damage wasn't canceled because the list of blocked-worlds is empty"); | ||
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[ExplosionsBlocker] Please check your configuration file"); | ||
} else { | ||
for (String bWorld : instance.getConfig().getStringList("settings.wither-heads.blocked-worlds")) | ||
if (world.getName().equals(bWorld)) | ||
e.setCancelled(true); | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.