commit
b3f1894360
@ -0,0 +1,102 @@
|
||||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# 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*
|
||||
|
||||
### Intellij ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
.idea/modules.xml
|
||||
.idea/*.iml
|
||||
.idea/modules
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
# JetBrains templates
|
||||
**___jb_tmp___
|
||||
|
||||
*.iml
|
||||
modules.xml
|
||||
.idea/misc.xml
|
||||
*.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
@ -0,0 +1,9 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="DeathCoordinates:jar">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/DeathCoordinates_jar</output-path>
|
||||
<root id="archive" name="DeathCoordinates.jar">
|
||||
<element id="module-output" name="DeathCoordinates" />
|
||||
<element id="file-copy" path="$PROJECT_DIR$/src/plugin.yml" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RunConfigurationProducerService">
|
||||
<option name="ignoredProducers">
|
||||
<set>
|
||||
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
|
||||
</set>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,51 @@
|
||||
package com.elnu;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
public class DeathCoordinates extends JavaPlugin {
|
||||
DeathListener deathListener;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
deathListener = new DeathListener();
|
||||
Bukkit.getPluginManager().registerEvents(deathListener, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
|
||||
if (cmd.getName().equalsIgnoreCase("announcedeath")) {
|
||||
var senderName = sender.getName();
|
||||
try {
|
||||
var playerDeathInfoMap = deathListener.getPlayerDeathInfoMap();
|
||||
var deathInfo = playerDeathInfoMap.get(senderName);
|
||||
var location = deathInfo.getLocation();
|
||||
var time = deathInfo.getTime();
|
||||
var now = LocalDateTime.now();
|
||||
var minutesSinceDeath = time.until(now, ChronoUnit.MINUTES);
|
||||
var secondsSinceDeath = time.until(now, ChronoUnit.SECONDS);
|
||||
playerDeathInfoMap.remove(senderName);
|
||||
Bukkit.getServer().broadcastMessage(ChatColor.RED + String.format(
|
||||
"%s is announcing that they died at (%d, %d, %d) in %s, %d minutes and %d seconds ago.",
|
||||
senderName,
|
||||
location.getBlockX(),
|
||||
location.getBlockY(),
|
||||
location.getBlockZ(),
|
||||
location.getWorld().getEnvironment(),
|
||||
minutesSinceDeath,
|
||||
secondsSinceDeath
|
||||
));
|
||||
} catch(NullPointerException e) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "No death coordinates to announce.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.elnu;
|
||||
|
||||
import org.bukkit.Location;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class DeathInfo {
|
||||
Location location;
|
||||
LocalDateTime time;
|
||||
|
||||
public DeathInfo(Location location) {
|
||||
this.location = location;
|
||||
time = LocalDateTime.now();
|
||||
}
|
||||
|
||||
public Location getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public LocalDateTime getTime() {
|
||||
return time;
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.elnu;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class DeathListener implements Listener {
|
||||
HashMap<String, DeathInfo> playerDeathInfoMap;
|
||||
|
||||
public DeathListener() {
|
||||
playerDeathInfoMap = new HashMap();
|
||||
}
|
||||
|
||||
public HashMap<String, DeathInfo> getPlayerDeathInfoMap() {
|
||||
return playerDeathInfoMap;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDeath(PlayerDeathEvent event) {
|
||||
var location = event.getEntity().getLocation();
|
||||
var player = event.getEntity();
|
||||
player.sendMessage(ChatColor.RED + String.format(
|
||||
"Oof! You died at (%d, %d, %d) in %s.",
|
||||
location.getBlockX(),
|
||||
location.getBlockY(),
|
||||
location.getBlockZ(),
|
||||
location.getWorld().getEnvironment()
|
||||
));
|
||||
playerDeathInfoMap.put(player.getName(), new DeathInfo(location));
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
name: DeathCoordinates
|
||||
main: com.elnu.DeathCoordinates
|
||||
version: 1.0
|
||||
author: ElnuDraws
|
||||
commands:
|
||||
announcedeath:
|
||||
description: Announce last death coordinates.
|
||||
usage: /announcedeath
|
Reference in new issue