From 864113e6045e7e4c1bc5000041c6b55da0d8bbc2 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 5 Mar 2022 11:36:59 +0100 Subject: [PATCH] initial commit --- .gitignore | 113 ++++++++++++++++++ pom.xml | 76 ++++++++++++ .../gamedesigntweaks/GameDesignTweaks.java | 14 +++ .../gamedesigntweaks/SecondWindListener.java | 56 +++++++++ src/main/resources/plugin.yml | 7 ++ 5 files changed, 266 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/me/youhavetrouble/gamedesigntweaks/GameDesignTweaks.java create mode 100755 src/main/java/me/youhavetrouble/gamedesigntweaks/SecondWindListener.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..eb47da9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + me.youhavetrouble + GameDesignTweaks + 1.0 + jar + + GameDesignTweaks + + Tweak some game design stuff + + 17 + UTF-8 + + youhavetrouble.me + + + + + 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://papermc.io/repo/repository/maven-public/ + + + sonatype + https://oss.sonatype.org/content/groups/public/ + + + + + + io.papermc.paper + paper-api + 1.18.2-R0.1-SNAPSHOT + provided + + + diff --git a/src/main/java/me/youhavetrouble/gamedesigntweaks/GameDesignTweaks.java b/src/main/java/me/youhavetrouble/gamedesigntweaks/GameDesignTweaks.java new file mode 100644 index 0000000..8b4ad04 --- /dev/null +++ b/src/main/java/me/youhavetrouble/gamedesigntweaks/GameDesignTweaks.java @@ -0,0 +1,14 @@ +package me.youhavetrouble.gamedesigntweaks; + +import org.bukkit.plugin.java.JavaPlugin; + +public final class GameDesignTweaks extends JavaPlugin { + + public static GameDesignTweaks instance; + + @Override + public void onEnable() { + instance = this; + getServer().getPluginManager().registerEvents(new SecondWindListener(), this); + } +} diff --git a/src/main/java/me/youhavetrouble/gamedesigntweaks/SecondWindListener.java b/src/main/java/me/youhavetrouble/gamedesigntweaks/SecondWindListener.java new file mode 100755 index 0000000..49f4971 --- /dev/null +++ b/src/main/java/me/youhavetrouble/gamedesigntweaks/SecondWindListener.java @@ -0,0 +1,56 @@ +package me.youhavetrouble.gamedesigntweaks; + +import org.bukkit.attribute.Attribute; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; + +import java.util.HashSet; + +public class SecondWindListener implements Listener { + + HashSet dots = new HashSet<>(); + + public SecondWindListener() { + dots.add(EntityDamageEvent.DamageCause.POISON); + dots.add(EntityDamageEvent.DamageCause.WITHER); + dots.add(EntityDamageEvent.DamageCause.DROWNING); + dots.add(EntityDamageEvent.DamageCause.SUFFOCATION); + dots.add(EntityDamageEvent.DamageCause.VOID); + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPlayerDamage(EntityDamageEvent event) { + if (!(event.getEntity() instanceof Player player)) return; + if (player.isDead()) return; + EntityDamageEvent.DamageCause cause = event.getCause(); + if (dots.contains(cause)) return; + double maxHealth = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); + double currentHealth = player.getHealth(); + double hpPercentage = (currentHealth * 100.0) / maxHealth; + double damage = event.getFinalDamage(); + if (hpPercentage >= 75) { + // Prevent oneshots from 75%+ hp + if (currentHealth - damage <= 0 && !event.getCause().equals(EntityDamageEvent.DamageCause.FALL)) { + event.setDamage(0.0000001); + player.setHealth(1); + } + return; + } + if (hpPercentage >= 50) { + event.setDamage(0.00001); + player.setHealth(Math.max(currentHealth - (damage * 0.8), 0)); + return; + } + if (hpPercentage >= 25) { + event.setDamage(0.00001); + player.setHealth(Math.max(currentHealth - (damage * 0.65), 0)); + return; + } + event.setDamage(0.00001); + player.setHealth(Math.max(currentHealth - (damage * 0.5), 0)); + } + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..d0a017e --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,7 @@ +name: GameDesignTweaks +version: '${project.version}' +main: me.youhavetrouble.gamedesigntweaks.GameDesignTweaks +api-version: 1.17 +authors: [ YouHaveTrouble ] +description: Tweak some game design stuff +website: youhavetrouble.me