diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..566f858
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+tylermurphy543@gmail.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..49eb107
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,13 @@
+## Contributing Guidelines
+- Do not send any pull requests to the master branch
+ - Any pull requests sent to master will be closed
+ - Send pull requets to the current beta branch (usually named as an unreleased version)
+- Please tell us why you think this change is nessessary
+ - We dont want to spend lots of time browsing through your code changes
+ - Describe your changes
+- Do not repoen a pull request if we closed it for not being a nessary feature
+- Do not change credits in any of the files
+- If making a new language file, follow the local naming convencion
+ - localization-[LANGUAGE](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes#)_[TERROTORY](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements).yml. You can find the 2 letter codes in the links.
+- Common sense, please...
+- File subject to change in the future
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..bf64440
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,33 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: bug report
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**System Info (please complete the following information):**
+ - OS: [e.g. Windows/Linux]
+ - Server Host [e.g. Apex/Custom]
+ - MC Version [e.g. 1.17/1.18]
+ - Plugin Version [e.g. 1.3.0/1.3.1 BETA]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..4aea407
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: new plugin feature
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..977e3be
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,11 @@
+**Describe the change**
+A clear and concise description of what the changes are.
+
+**Expected behavior**
+A clear and concise description of what your changes are going to do.
+
+**Screenshots**
+If applicable, add screenshots to help explain your changes.
+
+**Additional context**
+Add any other context about the pull request here.
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000..0af3931
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,15 @@
+# Security Policy
+
+## Supported Versions
+
+| Version | Supported |
+| ------- | ------------------ |
+| 1.3.1 | :white_check_mark: |
+| 1.3.0 | :white_check_mark: |
+| 1.2.0 | :x: |
+
+## Reporting a Vulnerability
+
+If you Find any security vulnerabilitys in the plugin, please contact me at
+tylermurphy534@gmail.com IMMEDITALLY. All requests will be taken seriously.
+Tell me your plugin version, as non supported versions will be ignored.
\ No newline at end of file
diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml
index e2565c6..5cf7218 100644
--- a/.github/workflows/beta.yml
+++ b/.github/workflows/beta.yml
@@ -3,8 +3,6 @@ name: Beta
on:
push:
branches-ignore: [ master ]
- pull_request:
- branches-ignore: [ master ]
jobs:
build:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 15e0f36..3146ab3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -3,8 +3,6 @@ name: Release
on:
push:
branches: [ master ]
- pull_request:
- branches: [ master ]
jobs:
build:
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1d6a476
--- /dev/null
+++ b/README.md
@@ -0,0 +1,20 @@
+Kenshins Hide And Seek
+======
+
+Highly customizable hide and seek plugin
+
+
+How To
+-----------
+
+All Information on how to setup the plugin has
+been moved to the github WIKI.
+
+
+Compilation
+-----------
+
+We use maven to handle our dependencies.
+
+* Install [Maven 3](http://maven.apache.org/download.html)
+* Clone this repo and: `mvn clean install`
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index bf694ed..320e622 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,11 +40,4 @@
4.7.0
-
-
- github
- GitHub Packages
- https://maven.pkg.github.com/tylermurphy534/KenshinsHideAndSeek
-
-
\ No newline at end of file
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java
index e0b8a5d..aeaa89b 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java
@@ -28,6 +28,7 @@ public class SetExitLocation implements ICommand {
newExitPosition.setX(player.getLocation().getBlockX());
newExitPosition.setY(player.getLocation().getBlockY());
newExitPosition.setZ(player.getLocation().getBlockZ());
+ exitWorld = player.getLocation().getWorld().getName();
exitPosition = newExitPosition;
sender.sendMessage(messagePrefix + message("EXIT_SPAWN"));
addToConfig("spawns.exit.x", exitPosition.getX());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java
index 53ae721..2e96a9d 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java
@@ -28,6 +28,7 @@ public class SetLobbyLocation implements ICommand {
newLobbyPosition.setX(player.getLocation().getBlockX());
newLobbyPosition.setY(player.getLocation().getBlockY());
newLobbyPosition.setZ(player.getLocation().getBlockZ());
+ lobbyWorld = player.getLocation().getWorld().getName();
lobbyPosition = newLobbyPosition;
sender.sendMessage(messagePrefix + message("LOBBY_SPAWN"));
addToConfig("spawns.lobby.x", lobbyPosition.getX());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java
index 5324ecf..bb3de6d 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java
@@ -34,6 +34,7 @@ public class SetSpawnLocation implements ICommand {
sender.sendMessage(errorPrefix + message("WORLDBORDER_POSITION"));
return;
}
+ spawnWorld = player.getLocation().getWorld().getName();
spawnPosition = newSpawnPosition;
sender.sendMessage(messagePrefix + message("GAME_SPAWN"));
addToConfig("spawns.game.x", spawnPosition.getX());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java
index d16f3d8..dee1643 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java
@@ -13,9 +13,11 @@ public class ConfigManager {
private File file;
private YamlConfiguration config,defaultConfig;
+ private String defaultFilename;
public ConfigManager(String filename){
this.file = new File(Main.plugin.getDataFolder(), filename);
+ this.defaultFilename = file.getName();
if(!file.exists()){
saveDefaultConfiguration();
@@ -33,6 +35,8 @@ public class ConfigManager {
}
public ConfigManager(String filename, String defaultFilename){
+
+ this.defaultFilename = defaultFilename;
this.file = new File(Main.plugin.getDataFolder(), filename);
if(!file.exists()){
@@ -99,9 +103,14 @@ public class ConfigManager {
config.set(path, defaultConfig.get(path));
}
- public void resetConfig(){
- config = defaultConfig;
- saveConfig();
+ public void resetFile(String newDefaultFilename){
+ this.defaultFilename = newDefaultFilename;
+
+ InputStream input = Main.plugin.getResource(defaultFilename);
+ InputStreamReader reader = new InputStreamReader(input);
+ this.config = YamlConfiguration.loadConfiguration(reader);
+ this.defaultConfig = YamlConfiguration.loadConfiguration(reader);
+
}
public boolean getBoolean(String path){
@@ -128,7 +137,7 @@ public class ConfigManager {
public void saveConfig(){
try {
- InputStream is = Main.plugin.getResource(file.getName());
+ InputStream is = Main.plugin.getResource(defaultFilename);
StringBuilder textBuilder = new StringBuilder();
Reader reader = new BufferedReader(new InputStreamReader(is, Charset.forName(StandardCharsets.UTF_8.name())));
int c = 0;
@@ -144,15 +153,15 @@ public class ConfigManager {
int i = 0;
for(String part : parts) {
if(i == 0) {
- index = yamlString.indexOf(part, index);
+ index = yamlString.indexOf(part+":", index);
} else {
- index = yamlString.indexOf(" " + part, index);
+ index = yamlString.indexOf(" " + part+":", index);
index++;
}
i++;
if(index == -1) break;
}
- if(index == -1) continue;;
+ if(index < 10) continue;;
int start = yamlString.indexOf(' ', index);
int end = yamlString.indexOf('\n', index);
if(end == -1) end = yamlString.length();
@@ -160,8 +169,9 @@ public class ConfigManager {
if(entry.getValue() instanceof String){
replace = "\"" + replace + "\"";
}
+ System.out.println(entry.getKey() + " " + index + " " + start + " " + end);
StringBuilder builder = new StringBuilder(yamlString);
- builder.replace(start+1, end == -1 ? yamlString.length() : end, replace);
+ builder.replace(start+1, end, replace);
yamlString = builder.toString();
}
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java
index c404aa3..61dc5a4 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java
@@ -28,12 +28,13 @@ public class Localization {
manager.reset("version");
}
- String SELECTED_LOCAL = manager.getString("local");
- if(!SELECTED_LOCAL.equals(Config.local)){
- manager.resetConfig();
+ String SELECTED_LOCAL = manager.getString("type");
+ if(SELECTED_LOCAL == null){
+ manager.reset("type");
+ } else if(!SELECTED_LOCAL.equals(Config.local)){
+ manager.resetFile("lang"+File.separator+"localization_"+Config.local+".yml");
}
-
manager.saveConfig();
for(String key : manager.getConfigurationSection("Localization").getKeys(false)) {
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 7d16cae..7366476 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -36,9 +36,6 @@ autoJoin: false
# default: false
teleportToExit: false
-countdown:
-
-
# The worldborder closes every interval, which is evey [delay] in minutes.
# Thw worldborder starts at [size], and decreases 100 blocks every interval.
# x & z are the center location. [enabled] is whenever the border is enabled.
diff --git a/src/main/resources/lang/localization_de-DE.yml b/src/main/resources/lang/localization_de-DE.yml
index d8930f8..c5b0b72 100644
--- a/src/main/resources/lang/localization_de-DE.yml
+++ b/src/main/resources/lang/localization_de-DE.yml
@@ -46,6 +46,7 @@ Localization:
SETUP_EXIT: "&c&l- &fTeleport-Position für das Spielende festlegen mit /hs setexit"
SETUP_SAVEMAP: "&c&l- &fHide and Seek Weltkarte speichern mit /hs savemap (nach /hs setspawn)"
SETUP_COMPLETE: "Alles eingerichtet! Hide and Seek ist spielbereit."
+ SETUP_BOUNDS: "&c&l- &fBitte legen Sie Spielgrenzen in 2 gegenüberliegenden Ecken der Spielkarte fest, /hs setbounds"
GAME_SPAWN: "Teleport-Position für Spielbeginn festgelegt"
LOBBY_SPAWN: "Teleport-Position für Lobby festgelegt"
EXIT_SPAWN: "Teleport-Position für Spielende festgelegt"
@@ -56,5 +57,10 @@ Localization:
STOP: "Das Spiel wurde gestoppt."
HIDERS_SUBTITLE: "Verstecke dich gut vor den Seekern!"
SEEKERS_SUBTITLE: "Finde alle Hider!"
+ BOUNDS_WRONG_WORLD: "Führe diesen Befehl bitte in der Spielwelt aus."
+ BOUNDS: "Grenzen erfolgreich an dieser Position gesetzt. ({AMOUNT}/2)"
+ NOT_AT_ZERO: "Bitte nicht an einer Position setzen, die eine Koordinate bei 0 enthält."
+# DO NOT EDIT IT OR IT MAY BREAK OR RESET FILE
+version: 2
type: "de-DE"
diff --git a/src/main/resources/lang/localization_en-US.yml b/src/main/resources/lang/localization_en-US.yml
index 19c79b7..af5b80c 100644
--- a/src/main/resources/lang/localization_en-US.yml
+++ b/src/main/resources/lang/localization_en-US.yml
@@ -61,4 +61,6 @@ Localization:
BOUNDS: "Successfully set bounds at this position ({AMOUNT}/2)."
NOT_AT_ZERO: "Please do not set at a location containing a coordinate at 0."
+# DO NOT EDIT IT OR IT MAY BREAK OR RESET FILE
+version: 2
type: "en-US"
\ No newline at end of file
diff --git a/src/main/resources/localization.yml b/src/main/resources/localization.yml
deleted file mode 100644
index 2acb0fc..0000000
--- a/src/main/resources/localization.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-Localization:
- COMMAND_PLAYER_ONLY: "This command can only be run as a player."
- COMMAND_NOT_ALLOWED: "You are not allowed to run this command."
- COMMAND_ERROR: "An internal error has occurred."
- GAME_PLAYER_DEATH: "&c{PLAYER}&f was killed."
- GAME_PLAYER_FOUND: "&e{PLAYER}&f was found and became a seeker."
- GAME_PLAYER_FOUND_BY: "&e{PLAYER}&f was found by &c{PLAYER}&f and became a seeker."
- GAME_GAMEOVER_HIDERS_FOUND: "All hiders have been found."
- GAME_GAMEOVER_SEEKERS_QUIT: "All seekers have quit."
- GAME_GAMEOVER_TIME: "Seekers ran out of time. Hiders win!"
- GAME_SETUP: "Game is not setup. Run /hs setup to see what you need to do."
- GAME_INGAME: "You are already in the lobby/game."
- GAME_NOT_INGAME: "You are not in a lobby/game."
- GAME_INPROGRESS: "There is currently a game in progress."
- GAME_NOT_INPROGRESS: "There is no game in progress."
- GAME_JOIN: "{PLAYER} has joined the HideAndSeek lobby."
- GAME_JOIN_SPECTATOR: "You have joined mid game and are now a spectator."
- GAME_LEAVE: "{PLAYER} has left the HideAndSeek lobby."
- CONFIG_RELOAD: "Reloaded the config."
- MAPSAVE_INPROGRESS: "Map save is currently in progress. Try again later."
- MAPSAVE_START: "Starting map save."
- MAPSAVE_WARNING: "All commands will be disabled when the save is in progress. Do not turn off the server."
- MAPSAVE_END: "Map save complete."
- MAPSAVE_ERROR: "Couldn't find current map."
- WORLDBORDER_DISABLE: "Disabled world border."
- WORLDBORDER_INVALID_INPUT: "Invalid integer {AMOUNT}."
- WORLDBORDER_MIN_SIZE: "World border cannot be smaller than 100 blocks."
- WORLDBORDER_POSITION: "Spawn position must be 100 from world border center."
- WORLDBORDER_ENABLE: "Set border center to current location, size to {AMOUNT}, and delay to {AMOUNT}."
- WORLDBORDER_DECREASING: "World border decreasing by 100 blocks over the next 30s."
- TAUNTED: "$c$oOh no! You have been chosen to be taunted."
- TAUNT: "A random hider will be taunted in the next 30s."
- TAUNT_ACTIVATE: "Taunt has been activated."
- ERROR_GAME_SPAWN: "Please set game spawn location first"
- SETUP: "&f&lThe following is needed for setup..."
- SETUP_GAME: "&c&l- &fGame spawn isn't set, /hs setspawn"
- SETUP_LOBBY: "&c&l- &fLobby spawn isn't set, /hs setlobby"
- SETUP_EXIT: "&c&l- &fQuit/exit teleport location isn't set, /hs setexit"
- SETUP_SAVEMAP: "&c&l- &fHide and seek map isn't saved, /hs savemap (after /hs setspawn)"
- SETUP_BOUNDS: "&c&l- &fPlease set game bounds in 2 opposite corners of the game map, /hs setbounds"
- SETUP_COMPLETE: "Everything is setup and ready to go!"
- GAME_SPAWN: "Set game spawn position to current location"
- LOBBY_SPAWN: "Set lobby position to current location"
- EXIT_SPAWN: "Set exit position to current location"
- START_MIN_PLAYERS: "You must have at least {AMOUNT} players to start."
- START_INVALID_NAME: "Invalid player: {PLAYER}."
- START_COUNTDOWN: "Hiders have {AMOUNT} seconds to hide!"
- START: "Attention SEEKERS, its time to fin the hiders!"
- STOP: "Game has been force stopped."
- HIDERS_SUBTITLE: "Hide away from the seekers"
- SEEKERS_SUBTITLE: "Eliminate all hiders"
- BOUNDS_WRONG_WORLD: "Please run this command in the game world."
- BOUNDS: "Successfully set bounds at this position ({AMOUNT}/2)."
- NOT_AT_ZERO: "Please do not set at a location containing a coordinate at 0."
-
-# DO NOT EDIT IT OR IT MAY BREAK OR RESET FILE
-version: 2
-type: "en-US"
\ No newline at end of file