From c505c2a51b6d7e4bb67de84275fafb7ab6a1c933 Mon Sep 17 00:00:00 2001 From: yanayana8721 Date: Sun, 8 Oct 2023 08:10:54 +0900 Subject: [PATCH] Initial commit --- .gitignore | 113 ++++++++++++++++++ pom.xml | 84 +++++++++++++ .../unbreakableblocks/UnbreakableBlocks.java | 65 ++++++++++ src/main/resources/plugin.yml | 4 + 4 files changed, 266 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/net/kunmc/lab/unbreakableblocks/UnbreakableBlocks.java create mode 100644 src/main/resources/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4788b4b --- /dev/null +++ b/.gitignore @@ -0,0 +1,113 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ + +# 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 + +target/ + +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next + +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +# Common working directory +run/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..13d7297 --- /dev/null +++ b/pom.xml @@ -0,0 +1,84 @@ + + + 4.0.0 + + net.kunmc.lab + UnbreakableBlocks + 1.0 + jar + + UnbreakableBlocks + + + 1.8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + false + + + + + + + + src/main/resources + true + + + + + + + papermc-repo + https://repo.papermc.io/repository/maven-public/ + + + sonatype + https://oss.sonatype.org/content/groups/public/ + + + spigotmc-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + + + + com.destroystokyo.paper + paper-api + 1.16.5-R0.1-SNAPSHOT + provided + + + org.spigotmc + spigot + 1.16.5-R0.1-SNAPSHOT + provided + + + diff --git a/src/main/java/net/kunmc/lab/unbreakableblocks/UnbreakableBlocks.java b/src/main/java/net/kunmc/lab/unbreakableblocks/UnbreakableBlocks.java new file mode 100644 index 0000000..cf67b9e --- /dev/null +++ b/src/main/java/net/kunmc/lab/unbreakableblocks/UnbreakableBlocks.java @@ -0,0 +1,65 @@ +package net.kunmc.lab.unbreakableblocks; + +import com.sun.scenario.Settings; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.plugin.java.JavaPlugin; + +import java.lang.reflect.Field; +import java.util.EventListener; + + +public final class UnbreakableBlocks extends JavaPlugin implements Listener { + + @EventHandler(ignoreCancelled = true) + public void onBlockPlace(BlockPlaceEvent event) { + Player placer = event.getPlayer(); + + if (placer == null) { + return; + } + + if (placer.getGameMode() != GameMode.CREATIVE) { + Block block = event.getBlock(); + block.setMetadata("placer", new FixedMetadataValue(this, placer.getName())); + } + } + + @EventHandler(ignoreCancelled = true) + public void onBreakPlace(BlockBreakEvent event) { + Player breaker = event.getPlayer(); + + + if (breaker == null) { + return; + } + + Block block = event.getBlock(); + + if (breaker.getGameMode() != GameMode.CREATIVE){ + if(!block.getMetadata("placer").isEmpty()){ + event.setCancelled(true); + breaker.sendMessage("プレイヤーが設置したブロックです!壊すことはできません!"); + } + } + + } + + @Override + public void onEnable() { + // Plugin startup logic + getServer().getPluginManager().registerEvents(this, this); + } + + @Override + public void onDisable() { + // Plugin shutdown logic + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..0fe3d04 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,4 @@ +name: UnbreakableBlocks +version: '${project.version}' +main: net.kunmc.lab.unbreakableblocks.UnbreakableBlocks +api-version: 1.16