From 43ab86cf5dff7bfe9d9a9995dc91e42595834a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20Gr=C3=BCnewald?= <10533763+dhalucario@users.noreply.github.com> Date: Tue, 28 Jan 2025 23:54:14 +0100 Subject: [PATCH] Inital commit --- .gitignore | 121 ++++++++++++++++++ build.gradle | 63 +++++++++ gradle.properties | 0 gradle/wrapper/gradle-wrapper.properties | 1 + settings.gradle | 1 + .../growableRebalance/GrowableRebalance.java | 19 +++ .../listeners/GrowthEventListener.java | 34 +++++ src/main/resources/plugin.yml | 4 + 8 files changed, 243 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 settings.gradle create mode 100644 src/main/java/de/doggoat/growableRebalance/GrowableRebalance.java create mode 100644 src/main/java/de/doggoat/growableRebalance/listeners/GrowthEventListener.java create mode 100644 src/main/resources/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a63e63f --- /dev/null +++ b/.gitignore @@ -0,0 +1,121 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory +run/ +runs/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +/run diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..68dc1a5 --- /dev/null +++ b/build.gradle @@ -0,0 +1,63 @@ +plugins { + id 'java' + id("xyz.jpenilla.run-paper") version "2.3.1" +} + +group = 'de.doggoat' +version = '1.0-SNAPSHOT' + +repositories { + mavenCentral() + maven { + name = "spigotmc-repo" + url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/groups/public/" + } +} + +configurations { + toCopy +} + +dependencies { + compileOnly("org.spigotmc:spigot-api:1.21.1-R0.1-SNAPSHOT") +} + +def targetJavaVersion = 21 +java { + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + options.release.set(targetJavaVersion) + } +} + +tasks { + runServer { + // Configure the Minecraft version for our task. + // This is the only required configuration besides applying the plugin. + // Your plugin's jar (or shadowJar if present) will be used automatically. + minecraftVersion("1.21.1") + } +} + +processResources { + def props = [version: version] + inputs.properties props + filteringCharset 'UTF-8' + filesMatching('plugin.yml') { + expand props + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0d8ab51 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..1be3066 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'growable-rebalance' diff --git a/src/main/java/de/doggoat/growableRebalance/GrowableRebalance.java b/src/main/java/de/doggoat/growableRebalance/GrowableRebalance.java new file mode 100644 index 0000000..146ab81 --- /dev/null +++ b/src/main/java/de/doggoat/growableRebalance/GrowableRebalance.java @@ -0,0 +1,19 @@ +package de.doggoat.growableRebalance; + +import de.doggoat.growableRebalance.listeners.GrowthEventListener; +import org.bukkit.plugin.java.JavaPlugin; + +public final class GrowableRebalance extends JavaPlugin { + + @Override + public void onEnable() { + // Plugin startup logic + getServer().getPluginManager().registerEvents(new GrowthEventListener(), this); + } + + @Override + public void onDisable() { + // Plugin shutdown logic + getServer().getPluginManager().disablePlugin(this); + } +} diff --git a/src/main/java/de/doggoat/growableRebalance/listeners/GrowthEventListener.java b/src/main/java/de/doggoat/growableRebalance/listeners/GrowthEventListener.java new file mode 100644 index 0000000..30f584f --- /dev/null +++ b/src/main/java/de/doggoat/growableRebalance/listeners/GrowthEventListener.java @@ -0,0 +1,34 @@ +package de.doggoat.growableRebalance.listeners; +import org.bukkit.Material; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.world.StructureGrowEvent; + +import java.util.Arrays; +import java.util.List; + +public class GrowthEventListener implements Listener { + + List dirtBlocks = Arrays.asList(Material.ROOTED_DIRT, Material.PODZOL); + List unreplaceableBlocks = Arrays.asList(Material.MOSS_BLOCK, Material.MUD, Material.MUDDY_MANGROVE_ROOTS); + + @EventHandler + public void onStructureGrow(StructureGrowEvent e) { + Player p = e.getPlayer(); + List forbiddenBlocks = e.getBlocks().stream() + .filter(blockState-> unreplaceableBlocks.contains(blockState.getBlock().getType())) + .filter(blockState -> dirtBlocks.contains(blockState.getType())) + .toList(); + + if (!forbiddenBlocks.isEmpty()) { + if (p != null) { + BlockState forbiddenBlockState = forbiddenBlocks.getFirst(); + p.sendMessage("You cannot convert " + forbiddenBlockState.getBlock().getType().name() + " to " + forbiddenBlockState.getType().name()); + } + e.setCancelled(true); + } + } + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..223661b --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,4 @@ +name: 'GrowableRebalance' +version: '1.0-SNAPSHOT' +main: de.doggoat.growableRebalance.GrowableRebalance +api-version: '1.21'