Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
groundbreakingmc authored Jun 4, 2024
1 parent 416845d commit 17ff9e4
Show file tree
Hide file tree
Showing 9 changed files with 521 additions and 0 deletions.
34 changes: 34 additions & 0 deletions ExplosionsBlocker.iml
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>
75 changes: 75 additions & 0 deletions pom.xml
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>
24 changes: 24 additions & 0 deletions src/main/java/explosionsblocker/noslowdwn/CmdManager.java
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;
}
}
38 changes: 38 additions & 0 deletions src/main/java/explosionsblocker/noslowdwn/ColorsUtil.java
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 src/main/java/explosionsblocker/noslowdwn/ExplosionsBlocker.java
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();
}
}
}
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);
}
}
}
}
Loading

0 comments on commit 17ff9e4

Please sign in to comment.