inital commit

This commit is contained in:
Sebastian Seedorf
2020-12-06 18:29:23 +01:00
commit 174db6dbcc
25 changed files with 851 additions and 0 deletions

11
.classpath Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="lib" path="C:/Users/Adminuser/Desktop/Server/craftbukkit.jar" sourcepath="C:/Users/Schulä/Desktop/Dropbox/Server/Bukkit-Bukkit-1.4.7-R1.0-3-g0b494f8.zip">
<attributes>
<attribute name="javadoc_location" value="http://jd.bukkit.org/apidocs/"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>

72
.gitignore vendored Normal file
View File

@@ -0,0 +1,72 @@
# Created by https://www.toptal.com/developers/gitignore/api/eclipse
# Edit at https://www.toptal.com/developers/gitignore?templates=eclipse
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
.apt_generated_test/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
# Uncomment this line if you wish to ignore the project description file.
# Typically, this file would be tracked if it contains build/dependency configurations:
#.project
### Eclipse Patch ###
# Spring Boot Tooling
.sts4-cache/
# End of https://www.toptal.com/developers/gitignore/api/eclipse

17
.project Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Race</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1,22 @@
package me.Caesar2011.Race;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class Cmd_Add {
CommandSender sender;
String[] args;
Lib_RaceManager race;
protected Cmd_Add(CommandSender sender, String[] args, Lib_RaceManager race) {
this.sender = sender;
this.args = args;
this.race = race;
}
protected void Execute() {
sender.sendMessage(ChatColor.AQUA + "Race added.");
}
}

View File

@@ -0,0 +1,17 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_ClearLive {
protected Cmd_ClearLive(CommandSender sender, String[] args,
Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,17 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_ClearLocal {
protected Cmd_ClearLocal(CommandSender sender, String[] args,
Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,16 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_Info {
protected Cmd_Info(CommandSender sender, String[] args, Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,16 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_Live {
protected Cmd_Live(CommandSender sender, String[] args, Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,16 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_Local {
protected Cmd_Local(CommandSender sender, String[] args, Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,27 @@
package me.Caesar2011.Race;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class Cmd_Mode {
CommandSender sender;
String[] args;
Lib_RaceManager race;
protected Cmd_Mode(CommandSender sender, String[] args, Lib_RaceManager race) {
this.sender = sender;
this.args = args;
this.race = race;
}
protected void Execute() {
if (args.length == 2) {sender.sendMessage(ChatColor.AQUA + "Race " + race.raceName + " is set to " + race.getMode() + "-mode.");}
else if (args[2].equalsIgnoreCase("off") || args[2].equalsIgnoreCase("training") || args[2].equalsIgnoreCase("race")) {
race.setMode(args[2]);
sender.sendMessage(ChatColor.AQUA + "Race " + race.raceName + " is now set to " + race.getMode() + "-mode.");
}
else {
sender.sendMessage(ChatColor.RED + "/race mode " + race.raceName + " <off|training|race>");
}
}
}

View File

@@ -0,0 +1,17 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_PlayerInfo {
protected Cmd_PlayerInfo(CommandSender sender, String[] args,
Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,22 @@
package me.Caesar2011.Race;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class Cmd_Rem {
CommandSender sender;
String[] args;
Lib_RaceManager race;
protected Cmd_Rem(CommandSender sender, String[] args, Lib_RaceManager race) {
this.sender = sender;
this.args = args;
this.race = race;
}
protected void Execute() {
race.Delete();
sender.sendMessage(ChatColor.AQUA + "Race removed.");
}
}

View File

@@ -0,0 +1,16 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_Round {
protected Cmd_Round(CommandSender sender, String[] args, Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,17 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_RoundLive {
protected Cmd_RoundLive(CommandSender sender, String[] args,
Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,17 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_RoundLocal {
protected Cmd_RoundLocal(CommandSender sender, String[] args,
Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,38 @@
package me.Caesar2011.Race;
import me.Caesar2011.Race.Lib_RaceManager.RankingType;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class Cmd_Rounds {
CommandSender sender;
String[] args;
Lib_RaceManager race;
protected Cmd_Rounds(CommandSender sender, String[] args, Lib_RaceManager race) {
this.sender = sender;
this.args = args;
this.race = race;
}
protected void Execute() {
if (args.length == 2) sender.sendMessage(ChatColor.AQUA + "Race " + race.raceName + " is set to " + race.getRounds() + " rounds.");
else if (race.getMode() == "off") {
try {
int r = Integer.parseInt(args[2]);
race.setRounds(r);
race.clearList(RankingType.NOW);
race.clearList(RankingType.LIVE);
race.clearList(RankingType.LOCAL);
sender.sendMessage(ChatColor.AQUA + "Race " + race.raceName + " is now set to " + race.getRounds() + " rounds. All lists of this race cleared.");
} catch (NumberFormatException e1) {
sender.sendMessage(ChatColor.RED + "/race rounds " + race.raceName + " <rounds>");
}
}
else {
sender.sendMessage(ChatColor.RED + "Race " + race.raceName + " have to be stopped.");
}
}
}

View File

@@ -0,0 +1,16 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_Split {
protected Cmd_Split(CommandSender sender, String[] args, Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,17 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_SplitLive {
protected Cmd_SplitLive(CommandSender sender, String[] args,
Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,17 @@
package me.Caesar2011.Race;
import org.bukkit.command.CommandSender;
public class Cmd_SplitLocal {
protected Cmd_SplitLocal(CommandSender sender, String[] args,
Lib_RaceManager race) {
// TODO Auto-generated constructor stub
}
protected void Execute() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,38 @@
package me.Caesar2011.Race;
import me.Caesar2011.Race.Lib_RaceManager.RankingType;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class Cmd_Splits {
CommandSender sender;
String[] args;
Lib_RaceManager race;
protected Cmd_Splits(CommandSender sender, String[] args, Lib_RaceManager race) {
this.sender = sender;
this.args = args;
this.race = race;
}
protected void Execute() {
if (args.length == 2) sender.sendMessage(ChatColor.AQUA + "Race " + race.raceName + " is set to " + race.getSplits() + " splits.");
else if (race.getMode() == "off") {
try {
int r = Integer.parseInt(args[2]);
race.setSplits(r);
race.clearList(RankingType.NOW);
race.clearList(RankingType.LIVE);
race.clearList(RankingType.LOCAL);
sender.sendMessage(ChatColor.AQUA + "Race " + race.raceName + " is now set to " + race.getSplits() + " splits. All lists of this race cleared.");
} catch (NumberFormatException e1) {
sender.sendMessage(ChatColor.RED + "/race splits " + race.raceName + " <splits>");
}
}
else {
sender.sendMessage(ChatColor.RED + "Race " + race.raceName + " have to be stopped.");
}
}
}

View File

@@ -0,0 +1,43 @@
package me.Caesar2011.Race;
import java.util.Date;
import me.Caesar2011.Race.Lib_RaceManager.RankingType;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Cmd_Start {
CommandSender sender;
String[] args;
Lib_RaceManager race;
protected Cmd_Start(CommandSender sender, String[] args, Lib_RaceManager race) {
this.sender = sender;
this.args = args;
this.race = race;
}
protected void Execute() {
if (race.getMode() != "off"){
if (args.length > 2){
Player p = Bukkit.getPlayer(args[2]);
if (p != null) {
race.setSplit(RankingType.NOW, p.getName(), 0, 0, new Date());
race.setNowRound(p.getName(), 0);
race.setNowSplit(p.getName(), 0);
p.sendMessage(ChatColor.AQUA + race.raceName + " race timer started. Run!");
} else {
sender.sendMessage(ChatColor.RED + "/race start " + race.raceName + " <player>");
}
} else {
sender.sendMessage(ChatColor.RED + "/race start " + race.raceName + " <player>");
}
} else {
sender.sendMessage(ChatColor.RED + "Your race cannot start. Mode is set to 'off'.");
}
}
}

View File

@@ -0,0 +1,56 @@
package me.Caesar2011.Race;
import java.text.ParseException;
import java.util.Date;
import me.Caesar2011.Race.Lib_RaceManager.RankingType;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Cmd_Stop {
CommandSender sender;
String[] args;
Lib_RaceManager race;
protected Cmd_Stop(CommandSender sender, String[] args, Lib_RaceManager race) {
this.sender = sender;
this.args = args;
this.race = race;
}
protected void Execute() {
if (race.getMode() != "off"){
if (args.length > 2){
Player p = Bukkit.getPlayer(args[2]);
if (p != null) {
if (race.containsNow(p.getName())){
if (race.getNowSplit(p.getName()) >= race.getSplits()) {
if (race.getNowRound(p.getName()) >= race.getRounds()) {
if (race.getMode() == "race") {
try {
race.setSplit(RankingType.LIVE, p.getName(), 0, 0, new Date(new Date().getTime()-race.getSplit(RankingType.NOW, p.getName(), 0, 0).getTime()));
} catch (ParseException e1) {
e1.printStackTrace();
}
for (int i = 0; i <= race.getRounds(); i++) {
for (int j = 0; i <= race.getSplits(); j++) {
try {
race.setSplit(RankingType.LIVE, p.getName(), i, j, race.getSplit(RankingType.NOW, p.getName(), i, j));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
} else sender.sendMessage(ChatColor.RED + "You have to finish another round first.");
} else sender.sendMessage(ChatColor.RED + "You have to run over split " + (race.getNowSplit(p.getName())+1) + " first.");
} else sender.sendMessage(ChatColor.RED + "You have to start your race first.");
} else sender.sendMessage(ChatColor.RED + "/race stop " + race.raceName + " <player>");
} else sender.sendMessage(ChatColor.RED + "/race stop " + race.raceName + " <player>");
} else sender.sendMessage(ChatColor.RED + "Race is in off-mode. Can not stop your race.");
}
}

View File

@@ -0,0 +1,164 @@
package me.Caesar2011.Race;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
public class Lib_RaceManager {
protected enum RankingType {
NOW("now"),
LIVE("live"),
LOCAL("local");
private String value;
RankingType(String value){this.value = value;};
}
protected String raceName;
protected String filePath;
private FileConfiguration yaml = null;
protected File file;
protected Lib_RaceManager(String raceName){
this.raceName = raceName;
this.filePath = "plugins" + File.separator + "Race" + File.separator + raceName + ".yml";
this.file = new File(filePath);
if (!file.exists()) {
try {
file.createNewFile();
} catch (Exception e) {
try {
new File(file.getAbsoluteFile().getParentFile().toString()).mkdir();
file.createNewFile();
} catch (IOException e1) {
System.err.println(ChatColor.DARK_RED + "[Race] " + raceName + ": Could not create new file. (IOException)");
return;
}
}
}
yaml = YamlConfiguration.loadConfiguration(file);
yaml.addDefault("info.rounds", 0);
yaml.addDefault("info.splits", 0);
yaml.addDefault("info.mode", "off");
yaml.options().copyDefaults(true);
}
protected boolean Exist() {
return (yaml != null);
}
protected void Delete() {
if(file.exists()){
file.delete();
}
yaml = null;
}
protected void Save() {
try {
yaml.save(file);
} catch (IOException e) {
System.err.println(ChatColor.DARK_RED + "[Race] " + raceName + ": Could not save file. (IOException)");
}
}
protected int getRounds(){
return yaml.getInt("info.rounds");
}
protected void setRounds(int rounds){
yaml.set("info.rounds", rounds);
}
protected int getSplits(){
return yaml.getInt("info.splits");
}
protected void setSplits(int splits){
yaml.set("info.splits", splits);
}
protected String getMode(){
return yaml.getString("info.mode");
}
protected void setMode(String mode){
yaml.set("info.mode", mode);
}
protected void clearList(RankingType rank){
yaml.set(rank.value, null);
}
protected void setSplit(RankingType rank, String player, int round, int split, Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-d-HH-mm-ss-SSS");
yaml.set(rank.value + "." + round + "_" + split + "." + player, sdf.format(date));
}
protected Date getSplit(RankingType rank, String player, int round, int split) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-d-HH-mm-ss-SSS");
return sdf.parse(yaml.getString(rank.value + "." + round + "_" + split + "." + player));
}
protected void remSplit(RankingType rank, String player, int round, int split){
yaml.set(rank.value + "." + round + "_" + split + "." + player, null);
}
protected void setStop(RankingType rank, String player, Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-d-HH-mm-ss-SSS");
yaml.set(rank.value + ".stop." + player, sdf.format(date));
}
protected Date getStop(RankingType rank, String player) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-d-HH-mm-ss-SSS");
return sdf.parse(yaml.getString(rank.value + ".stop." + player));
}
protected void remStop(RankingType rank, String player){
yaml.set(rank.value + ".stop." + player, null);
}
protected void setNowRound(String player, int round){
yaml.set("now.round." + player, round);
}
protected int getNowRound(String player){
return yaml.getInt("now.round." + player);
}
protected void setNowSplit(String player, int split){
yaml.set("now.split." + player, split);
}
protected int getNowSplit(String player){
return yaml.getInt("now.split." + player);
}
protected boolean containsNow(String player){
return (yaml.contains("now.split." + player) && yaml.contains("now.round." + player) && yaml.contains("now.0_0." + player));
}
protected boolean insertToLocalStop(String player, Date duration){
if (yaml.getConfigurationSection("local.stop").getKeys(false).size() < 10) {
setStop(RankingType.LOCAL, player, duration);
return true;
}
Date slowest = null;
for (String ele: yaml.getConfigurationSection("local.stop").getKeys(false)) {
}
return false;
}
protected void insertToLocalSplit(String player, Date duration, int round, int split){
return;
}
}

View File

@@ -0,0 +1,133 @@
package me.Caesar2011.Race;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class Race extends JavaPlugin {
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
// TODO Auto-generated method stub
if (args.length > 1) {
Lib_RaceManager race = new Lib_RaceManager(args[1]);
if (race.Exist()) {
switch(args[0].toLowerCase()){
case "info": {
new Cmd_Info(sender, args, race).Execute();
break;
}
case "add": {
new Cmd_Add(sender, args, race).Execute();
break;
}
case "rem": {
new Cmd_Rem(sender, args, race).Execute();
break;
}
case "rounds": {
new Cmd_Rounds(sender, args, race).Execute();
break;
}
case "splits": {
new Cmd_Splits(sender, args, race).Execute();
break;
}
case "mode": {
new Cmd_Mode(sender, args, race).Execute();
break;
}
case "start": {
new Cmd_Start(sender, args, race).Execute();
break;
}
case "round": {
new Cmd_Round(sender, args, race).Execute();
break;
}
case "split": {
new Cmd_Split(sender, args, race).Execute();
break;
}
case "stop": {
new Cmd_Stop(sender, args, race).Execute();
break;
}
case "live": {
new Cmd_Live(sender, args, race).Execute();
break;
}
case "local": {
new Cmd_Local(sender, args, race).Execute();
break;
}
case "playerinfo": {
new Cmd_PlayerInfo(sender, args, race).Execute();
break;
}
case "clearlive": {
new Cmd_ClearLive(sender, args, race).Execute();
break;
}
case "clearlocal": {
new Cmd_ClearLocal(sender, args, race).Execute();
break;
}
case "roundlive": {
new Cmd_RoundLive(sender, args, race).Execute();
break;
}
case "roundlocal": {
new Cmd_RoundLocal(sender, args, race).Execute();
break;
}
case "splitlive": {
new Cmd_SplitLive(sender, args, race).Execute();
break;
}
case "splitlocal": {
new Cmd_SplitLocal(sender, args, race).Execute();
break;
}
default: {
sender.sendMessage(ChatColor.RED + "/race <info|add|rem|rounds|splits|mode>");
sender.sendMessage(ChatColor.RED + "/race <start|round|split|stop>");
sender.sendMessage(ChatColor.RED + "/race <live|local|playerinfo|clearlive|clearlocal|roundlive|roundlocal|splitlive|splitlocal>");
}
}
if (race.Exist()) race.Save();
} else {
sender.sendMessage(ChatColor.RED + "/race <info|add|rem|rounds|splits|mode>");
sender.sendMessage(ChatColor.RED + "/race <start|round|split|stop>");
sender.sendMessage(ChatColor.RED + "/race <live|local|playerinfo|clearlive|clearlocal|roundlive|roundlocal|splitlive|splitlocal>");
}
} else {
sender.sendMessage(ChatColor.RED + "/race <info|add|rem|rounds|splits|mode>");
sender.sendMessage(ChatColor.RED + "/race <start|round|split|stop>");
sender.sendMessage(ChatColor.RED + "/race <live|local|playerinfo|clearlive|clearlocal|roundlive|roundlocal|splitlive|splitlocal>");
}
return true;
}
@Override
public void onDisable() {
// TODO Auto-generated method stub
System.out.println("[Race] Plugin disabled.");
}
@Override
public void onEnable() {
// TODO Auto-generated method stub
System.out.println("[Race] Plugin enabled.");
}
}

9
src/plugin.yml Normal file
View File

@@ -0,0 +1,9 @@
name: Race
version: 1.4.4
main: me.Caesar2011.Race.Race
author: Caesar2011
commands:
race:
description: Race command
usage: /race