This commit is contained in:
JernejTDO
2022-05-02 19:22:59 +02:00
parent 050f3b6ad5
commit ebc328a9ae
28 changed files with 748 additions and 1 deletions

39
.classpath Normal file
View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="test" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

23
.project Normal file
View File

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

View File

@@ -0,0 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=1.8

View File

@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

100
README.md
View File

@@ -1 +1,99 @@
# EasyAPI
# EasyAPI
_Made for making games more easy_
authors:
- JernejTDO
- alandioda (made regions)
## Features
- Regions (Create regions and use their system)
- Json File manager (Save files, get body and option to create them)
- MySQL (Setup the mysql connection and use it)
- HexColer codes replacer
## Regions
Create a region
- First you need to make to make 2 locations.
- Create the region.
- Last step add the region to the list.
```sh
Location loc1 = new Location(Bukkit.getWorld("<World Name>"), 0, 0, 0);
Location loc2 = new Location(Bukkit.getWorld("<World Name>"), 0, 0, 0);
Region region = new Region("<Region Name>", loc1, loc2);
Regions.addRegion(region);
```
Region Events
> PlayerEnterRegionEvent - When a player joins the region.
> PlayerExitRegionEvent - When a player leaves a region.
```sh
@EventHandler
public void regionEnter(PlayerEnterRegionEvent event) {
}
@EventHandler
public void Region(PlayerExitRegionEvent event) {
}
```
Get info of region.
```sh
Region region = null; //Your region
Location loc = null; //Bukkit location
Regions.addRegion(region); //Adds a region to the plugin.
Regions.deleteRegion(region); //Removes the region from the plugin.
Regions.getRegionInLocation(loc); //Gets the region in that location.
Regions.getRegions(); //List of all the regions created.
Regions.getRegionsByName("<Name>"); //Gets the region by name.
Regions.getRegionsInLocation(loc); //List of all the regions in that location.
```
## Json Manager
You need to use Google`s json dependency.
```sh
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
```
Json Features
```sh
import net.hypple.EasyAPI.Json.JsonManager;
JsonManager.createJsonFile("<File Name>");
JsonManager.getJsonBody("<File Name>");
JsonManager.updateJsonBody("<File Name>", JSONObject);
```
## MySQL
Connect to database.
_put in onEnable()_
```sh
@Override
public void onEnable() {
EasyAPI.setupMySQL("Host", "Data Base", "Username", "Password");
}
```
You need to install this dependency
```sh
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
```
Get the connection to data base.
```sh
EasyAPI.mysql.GetConnection();
```
## Hex Coler Codes
Its for the version 1.16+ that support RGB. You can you this on spigot and Bungee servers.
_You just need to put the & symbol in front of the hex code_
```sh
Player player = null; //Your player
player.sendMessage(HexColors.replaceHexCodes("&#00f2ff message in your coler."));
```

35
pom.xml Normal file
View File

@@ -0,0 +1,35 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.hypple</groupId>
<artifactId>EasyAPI</artifactId>
<version>1.1.1</version>
<name>EasyAPI</name>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.18.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,18 @@
package net.hypple.EasyAPI.Bungee;
import org.bukkit.entity.Player;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import net.hypple.EasyAPI.EasyAPI;
public class Bungee {
public static void sendPlayerToServer(Player player, String server) {
ByteArrayDataOutput byteArrayDataOutput = ByteStreams.newDataOutput();
byteArrayDataOutput.writeUTF("Connect");
byteArrayDataOutput.writeUTF(server);
player.sendPluginMessage(EasyAPI.getInstance(), "BungeeCord", byteArrayDataOutput.toByteArray());
}
}

View File

@@ -0,0 +1,57 @@
package net.hypple.EasyAPI;
import java.awt.Color;
import java.io.File;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import net.hypple.EasyAPI.Json.JsonManager;
import net.hypple.EasyAPI.Regions.BukkitPlayerMoveEvent;
import net.hypple.EasyAPI.mysql.EasyMySQL;
import net.md_5.bungee.api.ChatColor;
public class EasyAPI extends JavaPlugin {
private static EasyAPI plugin;
public static EasyMySQL mysql;
@Override
public void onEnable() {
plugin = this;
createFolder();
defaultFile();
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
Bukkit.getPluginManager().registerEvents(new BukkitPlayerMoveEvent(), plugin);
}
private void createFolder() {
String dir = plugin.getServer().getWorldContainer().getAbsolutePath();
if(dir.endsWith(".")) {
dir = dir.substring(0, dir.length() - 1);
}
File tempFile = new File(dir + "EasyAPI");
if(!tempFile.exists()) {
new File(dir + "EasyAPI").mkdirs();
Bukkit.getConsoleSender().sendMessage(ChatColor.of(new Color(51,255,255))+"EasyAPI <20>7- "+ChatColor.of(new Color(0,255,0))+"EasyAPI"+" folder was created.");
}
}
public static EasyAPI getInstance() {
return plugin;
}
private static void defaultFile() {
JsonManager.createJsonFile("EasyAPI");
}
public static void createPluginConfig(Plugin plugin) {
JsonManager.createJsonFile(plugin.getName());
}
}

View File

@@ -0,0 +1,83 @@
package net.hypple.EasyAPI.Json;
import java.awt.Color;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import org.bukkit.Bukkit;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import net.hypple.EasyAPI.EasyAPI;
import net.md_5.bungee.api.ChatColor;
public class JsonManager {
public static void createJsonFile(String name) {
String dir = EasyAPI.getInstance().getServer().getWorldContainer().getAbsolutePath();
if(dir.endsWith(".")) {
dir = dir.substring(0, dir.length() - 1);
}
dir = dir + "EasyAPI/";
File tempFile = new File(dir + name+".json");
if(!tempFile.exists()) {
JSONObject jsonFile = new JSONObject();
try {
FileWriter file = new FileWriter(dir+"/"+name+".json");
Bukkit.getConsoleSender().sendMessage(ChatColor.of(new Color(51,255,255))+"EasyAPI <20>7- "+ChatColor.of(new Color(0,255,0))+name+".json"+" file was created.");
file.write(jsonFile.toJSONString());
file.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
}
}
public static JSONObject getJsonBody(String name) {
String dir = EasyAPI.getInstance().getServer().getWorldContainer().getAbsolutePath();
if(dir.endsWith(".")) {
dir = dir.substring(0, dir.length() - 1);
}
dir = dir + "EasyAPI/";
File tempFile = new File(dir + name+".json");
if(tempFile.exists()) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader(dir+name+".json"));
JSONObject jsonObject = (JSONObject) obj;
return jsonObject;
} catch (IOException | ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
return null;
}
public static void updateJsonBody(String name, JSONObject JSONObject) {
String dir = EasyAPI.getInstance().getServer().getWorldContainer().getAbsolutePath();
if(dir.endsWith(".")) {
dir = dir.substring(0, dir.length() - 1);
}
dir = dir + "EasyAPI/";
File tempFile = new File(dir + name+".json");
if(tempFile.exists()) {
try {
FileWriter file = new FileWriter(dir+"/"+name+".json");
Bukkit.getConsoleSender().sendMessage(ChatColor.of(new Color(51,255,255))+"EasyAPI <20>7- "+ChatColor.of(new Color(0,255,0))+name+".json"+" file was updated.");
file.write(JSONObject.toJSONString());
file.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,10 @@
package net.hypple.EasyAPI;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,27 @@
package net.hypple.EasyAPI.RGB;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.md_5.bungee.api.ChatColor;
public class HexColors {
public static String replaceHexCodes(String str) {
Pattern unicode = Pattern.compile("\\\\u\\+[a-fA-F0-9]{4}");
Matcher match = unicode.matcher(str);
while (match.find()) {
String code = str.substring(match.start(),match.end());
str = str.replace(code,Character.toString((char) Integer.parseInt(code.replace("\\u+",""),16)));
match = unicode.matcher(str);
}
Pattern pattern = Pattern.compile("&#[a-fA-F0-9]{6}");
match = pattern.matcher(str);
while (match.find()) {
String color = str.substring(match.start(),match.end());
str = str.replace(color,ChatColor.of(color.replace("&","")) + "");
match = pattern.matcher(str);
}
return ChatColor.translateAlternateColorCodes('&',str);
}
}

View File

@@ -0,0 +1,42 @@
package net.hypple.EasyAPI.Regions;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
public class BukkitPlayerMoveEvent implements Listener {
@EventHandler
public void move(PlayerMoveEvent event) {
if(event.getFrom().getBlockX() != event.getTo().getBlockX()
|| event.getFrom().getBlockY() != event.getTo().getBlockY()
|| event.getFrom().getBlockZ() != event.getTo().getBlockZ()) {
Region to = Regions.getRegionInLocation(event.getTo());
Region from = Regions.getRegionInLocation(event.getFrom());
if(to != null) {
if(from != null) {
if(to != from) {
PlayerEnterRegionEvent enterEvent = new PlayerEnterRegionEvent(event.getPlayer(), from, to, event.isCancelled());
Bukkit.getPluginManager().callEvent(enterEvent);
PlayerExitRegionEvent exitEvent = new PlayerExitRegionEvent(event.getPlayer(), from, to, enterEvent.isCanceled());
Bukkit.getPluginManager().callEvent(exitEvent);
event.setCancelled(exitEvent.isCanceled());
}
} else {
PlayerEnterRegionEvent enterEvent = new PlayerEnterRegionEvent(event.getPlayer(), from, to, event.isCancelled());
Bukkit.getPluginManager().callEvent(enterEvent);
event.setCancelled(enterEvent.isCanceled());
}
} else {
if(from != null) {
PlayerExitRegionEvent exitEvent = new PlayerExitRegionEvent(event.getPlayer(), from, to, event.isCancelled());
Bukkit.getPluginManager().callEvent(exitEvent);
event.setCancelled(exitEvent.isCanceled());
}
}
}
}
}

View File

@@ -0,0 +1,52 @@
package net.hypple.EasyAPI.Regions;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class PlayerEnterRegionEvent extends Event {
private static final HandlerList handlers = new HandlerList();
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
private Region from;
private Region to;
private Player player;
private boolean isCanceled;
public PlayerEnterRegionEvent(Player player, Region from, Region to, boolean isCanceled) {
this.from = from;
this.to = to;
this.player = player;
this.isCanceled = isCanceled;
}
public Region getFrom() {
return from;
}
public Region getTo() {
return to;
}
public Player getPlayer() {
return player;
}
public boolean isCanceled() {
return isCanceled;
}
public void setCanceled(boolean isCanceled) {
this.isCanceled = isCanceled;
}
}

View File

@@ -0,0 +1,52 @@
package net.hypple.EasyAPI.Regions;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class PlayerExitRegionEvent extends Event {
private static final HandlerList handlers = new HandlerList();
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
private Region from;
private Region to;
private Player player;
private boolean isCanceled;
public PlayerExitRegionEvent(Player player, Region from, Region to, boolean isCanceled) {
this.from = from;
this.to = to;
this.player = player;
this.isCanceled = isCanceled;
}
public Region getFrom() {
return from;
}
public Region getTo() {
return to;
}
public Player getPlayer() {
return player;
}
public boolean isCanceled() {
return isCanceled;
}
public void setCanceled(boolean isCanceled) {
this.isCanceled = isCanceled;
}
}

View File

@@ -0,0 +1,51 @@
package net.hypple.EasyAPI.Regions;
import org.bukkit.Location;
public class Region {
private String name;
private Location location_0;
private Location location_1;
public Region(String regionName, Location location_0, Location location_1) {
this.name = regionName;
sortLocations(location_0, location_1);
}
private void sortLocations(Location loc1, Location loc2) {
location_0 = new Location(loc1.getWorld(), Math.min(loc1.getX(), loc2.getX()), Math.min(loc1.getY(), loc2.getY()), Math.min(loc1.getZ(), loc2.getZ()));
location_1 = new Location(loc1.getWorld(), Math.max(loc1.getX(), loc2.getX()), Math.max(loc1.getY(), loc2.getY()), Math.max(loc1.getZ(), loc2.getZ()));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Location getLocation_0() {
return location_0;
}
public void setLocation_0(Location location_0) {
sortLocations(location_0, location_1);
}
public Location getLocation_1() {
return location_1;
}
public void setLocation_1(Location location_1) {
sortLocations(location_0, location_1);
}
public boolean isInRegion(Location location) {
boolean isInX = location.getX() >= location_0.getX() && location.getX() <= location_1.getX();
boolean isInY = location.getY() >= location_0.getY() && location.getY() <= location_1.getY();
boolean isInZ = location.getZ() >= location_0.getZ() && location.getZ() <= location_1.getZ();
return isInX && isInY && isInZ;
}
}

View File

@@ -0,0 +1,52 @@
package net.hypple.EasyAPI.Regions;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Location;
public class Regions {
private static List<Region> regionsList = new ArrayList<>();
public static void addRegion(Region region) {
regionsList.add(region);
}
public static void deleteRegion(Region region) {
regionsList.remove(region);
}
public static List<Region> getRegionsByName(String name) {
List<Region> reg = new ArrayList<>();
for(Region region : regionsList) {
if(region.getName().equals(name)) {
reg.add(region);
}
}
return reg;
}
public static List<Region> getRegions() {
return regionsList;
}
public static List<Region> getRegionsInLocation(Location loc) {
List<Region> reg = new ArrayList<>();
for(Region region : regionsList) {
if(region.isInRegion(loc)) {
reg.add(region);
}
}
return reg;
}
public static Region getRegionInLocation(Location loc) {
for(Region region : regionsList) {
if(region.isInRegion(loc)) {
return region;
}
}
return null;
}
}

View File

@@ -0,0 +1,93 @@
package net.hypple.EasyAPI.mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
public class EasyMySQL {
public Connection connection;
String host;
String database;
String username;
String password;
public EasyMySQL(String host, String database, String username, String password) {
this.host = host;
this.database = database;
this.username = username;
this.password = password;
}
public boolean CanConnect() {
if(GetConnection() != null) {
return true;
}
return false;
}
public static String mysql_real_escape_string(String str) {
if (str == null) {
return "";
}
if (str.replaceAll("[a-zA-Z0-9_!@#$%^&*()-=+~.;:,\\Q[\\E\\Q]\\E<>{}\\/? ]","").length() < 1) {
return str;
}
String clean_string = str;
clean_string = clean_string.replaceAll("\\\\", "\\\\\\\\");
clean_string = clean_string.replaceAll("\\n","\\\\n");
clean_string = clean_string.replaceAll("\\r", "\\\\r");
clean_string = clean_string.replaceAll("\\t", "\\\\t");
clean_string = clean_string.replaceAll("\\00", "\\\\0");
clean_string = clean_string.replaceAll("'", "\\\\'");
clean_string = clean_string.replaceAll("\\\"", "\\\\\"");
return clean_string;
}
public static String mysql_real_date_string(Date date) {
SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
public Connection GetConnection() {
if (connection != null) {
try {
if(connection.isClosed() || !connection.isValid(28800)) {
//Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + database + "?useSSL=false&serverTimezone=UTC&tcpKeepAlive=true&autoReconnect=true", username, password);
}
return connection;
} catch (SQLException e) {
e.printStackTrace();
}
}
try{
//Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + database + "?useSSL=false&serverTimezone=UTC&tcpKeepAlive=true&autoReconnect=true", username, password);
return connection;
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
public void Update(Connection connection, String command) {
if (command == null) {
return;
}
try {
Statement st = connection.createStatement();
st.executeUpdate(command);
st.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.