diff --git a/.gitignore b/.gitignore index 0e13eeb..c58238a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,4 @@ -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -# https://github.com/takari/maven-wrapper#usage-without-binary-jar -.mvn/wrapper/maven-wrapper.jar +target +.idea +*.iml +dependency-reduced-pom.xml \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index eaf91e2..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 8e0d29b..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/dictionaries/Nightwolf.xml b/.idea/dictionaries/Nightwolf.xml deleted file mode 100644 index 0672d05..0000000 --- a/.idea/dictionaries/Nightwolf.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - tebex - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index a468a99..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/OnsetJava_API_0_1.xml b/.idea/libraries/OnsetJava_API_0_1.xml deleted file mode 100644 index 2f345fb..0000000 --- a/.idea/libraries/OnsetJava_API_0_1.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/com_google_code_gson_gson_2_8_6.xml b/.idea/libraries/com_google_code_gson_gson_2_8_6.xml deleted file mode 100644 index 99c3b8a..0000000 --- a/.idea/libraries/com_google_code_gson_gson_2_8_6.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/mysql_mysql_connector_java_8_0_19.xml b/.idea/libraries/mysql_mysql_connector_java_8_0_19.xml deleted file mode 100644 index 447b99e..0000000 --- a/.idea/libraries/mysql_mysql_connector_java_8_0_19.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index f10f358..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index b93ac08..0000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 9661ac7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 3278787..59b6933 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@ # YRPF Server -YRPF (YukiRolePlayFramework) is a Framework for Onset (https://playonset.com/) -This repository is the server side of the Framework. -This server is written in Java and need the OnsetJavaPlugin (https://github.com/OnfireNetwork/OnsetJavaPlugin) +YRPF (YukiRolePlayFramework) is a framework for [Onset](https://playonset.com/) +This repository is the server-side of the framework. +This server is written in Java and requires the [OnsetJavaPlugin](https://github.com/OnfireNetwork/OnsetJavaPlugin) and [OnsetJava](https://github.com/OnfireNetwork/OnsetJava) ![YRPF Logo](https://i.imgur.com/D8A8sJn.png) ### Install the plugin on your Onset Server -VIDEO: https://www.youtube.com/watch?v=cA_qUKJSUCU (in french) (Thank Papy Brossard) +VIDEO: https://www.youtube.com/watch?v=cA_qUKJSUCU (in french) (Thanks Papy Brossard) - The plugin has only been tested on Windows and Ubuntu 18 -- Install openjdk 11.0.7 on your server or JDK 8 for Windows +- Install openjdk 8 or higher on your server or Oracle JDK 8 for Windows - Set up your JAVA_HOME env variables -- Uncompress the release.zip in your Onset Server directory https://github.com/OALM-Team/YRPF/releases -- The zip contains the Java Plugin, Support Java libraries for Onset and the YRPF server config directory +- Uncompress the [release.zip](https://github.com/OALM-Team/YRPF/releases) in your Onset Server directory +- The zip contains the java plugin, support java libraries for Onset and the YRPF server config directory - Add "OnsetJavaPlugin" to your server_config of Onset in the plugins node - Add the "java" package to your server_config of Onset in the packages node - Configure the server_config.json of YRPF in the "yrpf" directory -- Uncompress the YRPF_DB.zip https://github.com/OALM-Team/YRPF/releases +- Uncompress the [YRPF_DB.zip](https://github.com/OALM-Team/YRPF/releases) - Import the database from the sql file -- Install the front of the YRPF Framework (https://github.com/OALM-Team/YRPF-Client) +- Install the [client-side](https://github.com/OALM-Team/YRPF-Client) of the YRPF Framework - Add the "yrpf" package to your server_config of Onset in the packages node - Run your server and have fun :) @@ -28,11 +28,11 @@ https://stackoverflow.com/questions/28462302/libjvm-so-cannot-open-shared-object https://askubuntu.com/questions/584529/libjvm-so-cannot-open-shared-object-file-no-such-file-or-directory ## Contribute -You can help us to translate the framework for other language : https://poeditor.com/join/project/FT7CELbHb6 +You can help us to translate the framework into other languages: https://poeditor.com/join/project/FT7CELbHb6 You can also make a PR for adding new features or fixing bugs ## Authors -Yuki https://github.com/nightwolf93 +[Yuki](https://github.com/nightwolf93) ## Thanks Talos, JanHolger, the OALM Team diff --git a/YukiRPFramework.iml b/YukiRPFramework.iml deleted file mode 100644 index 4098198..0000000 --- a/YukiRPFramework.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/libs/OnsetJava-API-0.1.jar b/libs/OnsetJava-API-0.1.jar deleted file mode 100644 index cb80d9e..0000000 Binary files a/libs/OnsetJava-API-0.1.jar and /dev/null differ diff --git a/pom.xml b/pom.xml index ee5b0d1..97785e0 100644 --- a/pom.xml +++ b/pom.xml @@ -8,24 +8,44 @@ YukiRPFramework 1.0 + + + jitpack.io + https://jitpack.io + + + - net.onfirenetwork + com.github.OnfireNetwork.OnsetJava OnsetJava-API - 0.1 + 0cdd3c23a6 provided + + com.github.JanHolger + AJORM + 7b62c7979a + compile + mysql mysql-connector-java - 8.0.19 + 5.1.6 + provided com.google.code.gson gson 2.8.6 + provided + + + org.projectlombok + lombok + 1.18.6 + provided - @@ -38,6 +58,19 @@ 8 + + org.apache.maven.plugins + maven-shade-plugin + 3.0.0 + + + package + + shade + + + + diff --git a/src/main/java/fr/yuki/YukiRPFramework/Database.java b/src/main/java/fr/yuki/YukiRPFramework/Database.java deleted file mode 100644 index 02d6f9e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/Database.java +++ /dev/null @@ -1,31 +0,0 @@ -package fr.yuki.YukiRPFramework; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import net.onfirenetwork.onsetjava.Onset; - -import java.sql.Connection; -import java.sql.DriverManager; -import com.mysql.cj.jdbc.Driver; - -public class Database { - private static Connection connection; - - /** - * Initialize the connection with the database - */ - public static void init() { - try { - ServerConfig serverConfig = WorldManager.getServerConfig(); - connection = DriverManager.getConnection("jdbc:mysql://" + serverConfig.getSqlHost() + "/" + serverConfig.getSqlDb() + "?autoReconnect=true", - serverConfig.getSqlUsername(), serverConfig.getSqlPassword()); - Onset.print("Connected to the database with success"); - } catch (Exception e) { - Onset.print("Error with database connection: " + e.toString()); - } - } - - public static Connection getConnection() { - return connection; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/ATMDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/ATMDAO.java deleted file mode 100644 index 8f51949..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/ATMDAO.java +++ /dev/null @@ -1,28 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ATM; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; - -public class ATMDAO { - public static ArrayList loadATMs() throws SQLException { - ArrayList atms = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_atm"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - ATM atm = new ATM(); - atm.setId(resultSet.getInt("id_atm")); - atm.setX(resultSet.getFloat("x")); - atm.setY(resultSet.getFloat("y")); - atm.setZ(resultSet.getFloat("z")); - atms.add(atm); - } - return atms; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/AccountDAO.java deleted file mode 100644 index 516217e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountDAO.java +++ /dev/null @@ -1,206 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.manager.PhoneManager; -import fr.yuki.YukiRPFramework.manager.WeaponManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.sql.*; - -public class AccountDAO { - /** - * Find the account for a player steam id - * @param steamId The steam id - * @return The account - */ - public static Account findAccountBySteamId(String steamId) throws SQLException { - Account account = null; - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("SELECT * FROM tbl_account WHERE steam_id=?"); - preparedStatement.setString(1, steamId); - ResultSet resultSet = preparedStatement.executeQuery(); - if(resultSet.next()) { - account = fetchResultSet(resultSet); - } - resultSet.close(); - preparedStatement.close(); - return account; - } - - public static Account findAccountById(int id) throws SQLException { - Account account = null; - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("SELECT * FROM tbl_account WHERE id_account=?"); - preparedStatement.setInt(1, id); - ResultSet resultSet = preparedStatement.executeQuery(); - if(resultSet.next()) { - account = fetchResultSet(resultSet); - } - resultSet.close(); - preparedStatement.close(); - return account; - } - - private static Account fetchResultSet(ResultSet resultSet) throws SQLException { - Account account = null; - account = new Account(); - account.setId(resultSet.getInt("id_account")); - account.setSteamName(resultSet.getString("steam_account_name")); - account.setSteamId(resultSet.getString("steam_id")); - account.setIsBanned(resultSet.getInt("is_banned")); - account.setBankMoney(resultSet.getInt("bank_money")); - account.setSaveX(resultSet.getDouble("save_x")); - account.setSaveY(resultSet.getDouble("save_y")); - account.setSaveZ(resultSet.getDouble("save_z")); - account.setSaveH(resultSet.getDouble("save_h")); - account.setCharacterCreationRequest(resultSet.getInt("character_creation_request")); - account.setCharacterStyle(resultSet.getString("character_style")); - account.setCharacterName(resultSet.getString("character_name")); - account.setJobLevels(resultSet.getString("job_levels")); - account.setIsDead(resultSet.getInt("is_dead")); - account.setLang(resultSet.getString("lang")); - account.setAdminLevel(resultSet.getInt("admin_level")); - account.setFoodState(resultSet.getInt("food_state")); - account.setDrinkState(resultSet.getInt("drink_state")); - account.setPhoneNumber(resultSet.getString("phone_number")); - account.setWeapons(resultSet.getString("weapons")); - account.setBagId(resultSet.getInt("id_bag")); - account.setCompagnyId(resultSet.getInt("id_compagny")); - account.setIsInService(resultSet.getInt("is_in_service")); - account.setOriginalStyle(resultSet.getString("original_style")); - account.setHealth(resultSet.getDouble("health")); - account.setCommandLevel(resultSet.getInt("command_level")); - account.setCreatedAt(resultSet.getDate("created_at")); - account.setUpdatedAt(resultSet.getDate("updated_at")); - return account; - } - - public static Account createAccount(Player player) throws SQLException { - ServerConfig serverConfig = WorldManager.getServerConfig(); - - // Create the account object - Account account = new Account(); - account.setSteamName(player.getName()); - account.setSteamId(player.getSteamId()); - account.setIsBanned(0); - account.setCharacterCreationRequest(1); - account.setCharacterStyle(""); - account.setCharacterName("Unknown"); - account.setJobLevels("[]"); - account.setIsDead(0); - account.setAdminLevel(0); - account.setLang("fr"); - account.setFoodState(100); - account.setDrinkState(100); - account.setPhoneNumber(""); - account.setBagId(-1); - account.setCompagnyId(-1); - account.setOriginalStyle(""); - account.setIsInService(0); - account.setHealth(100); - account.setCommandLevel(0); - account.setBankMoney(4000); - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - account.setSaveX(serverConfig.getSpawnPointX()); - account.setSaveY(serverConfig.getSpawnPointY()); - account.setSaveZ(serverConfig.getSpawnPointZ()); - account.setSaveH(serverConfig.getSpawnPointH()); - account.setCreatedAt(new java.util.Date()); - account.setUpdatedAt(new java.util.Date()); - - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_account " + - "(steam_account_name, steam_id, is_banned, created_at, updated_at, character_creation_request," + - " character_style, character_name, save_x, save_y, save_z, save_h, id_compagny, health, bank_money, phone_number) VALUES " + - "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setString(1, account.getSteamName()); - preparedStatement.setString(2, account.getSteamId()); - preparedStatement.setInt(3, account.getIsBanned()); - preparedStatement.setDate(4, new Date(account.getCreatedAt().getTime())); - preparedStatement.setDate(5, new Date(account.getUpdatedAt().getTime())); - preparedStatement.setInt(6, account.getCharacterCreationRequest()); - preparedStatement.setString(7, account.getCharacterStyle()); - preparedStatement.setString(8, account.getCharacterName()); - preparedStatement.setDouble(9, account.getSaveX()); - preparedStatement.setDouble(10, account.getSaveY()); - preparedStatement.setDouble(11, account.getSaveZ()); - preparedStatement.setDouble(12, account.getSaveH()); - preparedStatement.setInt(13, account.getCompagnyId()); - preparedStatement.setDouble(14, account.getHealth()); - preparedStatement.setInt(15, account.getBankMoney()); - preparedStatement.setString(16, account.getPhoneNumber()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - account.setId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return account; - } - - public static void updateAccount(Account account, Player player) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_account SET is_banned=?, bank_money=?, save_x=?, save_y=?, save_z=?, save_h=?, character_creation_request=?," + - "character_style=?, character_name=?, job_levels=?, is_dead=?, admin_level=?, lang=?," + - "food_state=?, drink_state=?, phone_number=?, weapons=?, id_bag=?, id_compagny=?, is_in_service=?, original_style=?," + - "health=?, command_level=? WHERE id_account=?"); - preparedStatement.setInt(1, account.getIsBanned()); - preparedStatement.setInt(2, account.getBankMoney()); - if(player == null) { - preparedStatement.setDouble(3, account.getSaveX()); - preparedStatement.setDouble(4, account.getSaveY()); - preparedStatement.setDouble(5, account.getSaveZ()); - preparedStatement.setDouble(6, account.getSaveH()); - } else { - Location loc = player.getLocationAndHeading(); - preparedStatement.setDouble(3, loc.getX()); - preparedStatement.setDouble(4, loc.getY()); - preparedStatement.setDouble(5, loc.getZ()); - preparedStatement.setDouble(6, loc.getHeading()); - } - preparedStatement.setInt(7, account.getCharacterCreationRequest()); - preparedStatement.setString(8, account.getCharacterStyle()); - preparedStatement.setString(9, account.getCharacterName()); - preparedStatement.setString(10, account.getJobLevels()); - preparedStatement.setInt(11, account.getIsDead()); - preparedStatement.setInt(12, account.getAdminLevel()); - preparedStatement.setString(13, account.getLang()); - preparedStatement.setInt(14, account.getFoodState()); - preparedStatement.setInt(15, account.getDrinkState()); - preparedStatement.setString(16, account.getPhoneNumber()); - if(player == null) { - preparedStatement.setString(17, account.getWeapons()); - } - else { - account.setWeapons(new Gson().toJson(WeaponManager.getPlayerWeapons(player))); - preparedStatement.setString(17, account.getWeapons()); - } - preparedStatement.setDouble(18, account.getBagId()); - preparedStatement.setInt(19, account.getCompagnyId()); - preparedStatement.setInt(20, account.getIsInService()); - preparedStatement.setString(21, account.getOriginalStyle()); - if(player == null) { - preparedStatement.setDouble(22, account.getHealth()); - } - else { - preparedStatement.setDouble(22, player.getHealth()); - } - preparedStatement.setDouble(23, account.getCommandLevel()); - preparedStatement.setDouble(24, account.getId()); - preparedStatement.execute(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountJobWhitelistDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/AccountJobWhitelistDAO.java deleted file mode 100644 index 735959c..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/AccountJobWhitelistDAO.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; - -import java.sql.*; -import java.util.ArrayList; - -public class AccountJobWhitelistDAO { - public static ArrayList loadAccountJobWhitelist() throws SQLException { - ArrayList accountJobWhitelists = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_account_job_whitelist"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - AccountJobWhitelist accountJobWhitelist = new AccountJobWhitelist(); - accountJobWhitelist.setId(resultSet.getInt("id_account_job_whitelist")); - accountJobWhitelist.setAccountId(resultSet.getInt("id_account")); - accountJobWhitelist.setJobId(resultSet.getString("id_job")); - accountJobWhitelist.setJobLevel(resultSet.getInt("job_level")); - accountJobWhitelists.add(accountJobWhitelist); - } - return accountJobWhitelists; - } - - public static void insertAccountJobWhiteList(AccountJobWhitelist accountJobWhitelist) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_account_job_whitelist " + - "(id_account, id_job, job_level) VALUES " + - "(?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setInt(1, accountJobWhitelist.getAccountId()); - preparedStatement.setString(2, accountJobWhitelist.getJobId()); - preparedStatement.setInt(3, accountJobWhitelist.getJobLevel()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - accountJobWhitelist.setId(returnId.getInt(1)); - } - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/CompagnyDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/CompagnyDAO.java deleted file mode 100644 index cc3f2f8..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/CompagnyDAO.java +++ /dev/null @@ -1,49 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.Compagny; -import fr.yuki.YukiRPFramework.model.PhoneContact; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class CompagnyDAO { - public static ArrayList loadCompagnies() throws SQLException { - ArrayList compagnies = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_compagny"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Compagny compagny = new Compagny(); - compagny.setId(resultSet.getInt("id_compagny")); - compagny.setName(resultSet.getString("name")); - compagny.setBankCash(resultSet.getInt("bank_cash")); - compagny.setOwner(resultSet.getString("owner")); - compagny.setMaxMember(resultSet.getInt("max_member")); - - compagnies.add(compagny); - } - return compagnies; - } - - public static void insertCompagny(Compagny compagny) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_compagny " + - "(name, bank_cash, owner, max_member) VALUES " + - "(?,?,?, ?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setString(1, compagny.getName()); - preparedStatement.setInt(2, compagny.getBankCash()); - preparedStatement.setString(3, compagny.getOwner()); - preparedStatement.setInt(4, compagny.getMaxMember()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - compagny.setId(returnId.getInt(1)); - } - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/FuelPointDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/FuelPointDAO.java deleted file mode 100644 index fd2a378..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/FuelPointDAO.java +++ /dev/null @@ -1,29 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.JobOutfit; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class FuelPointDAO { - public static ArrayList loadFuelPoints() throws SQLException { - ArrayList fuelPoints = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_fuel_point"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - FuelPoint fuelPoint = new FuelPoint(); - fuelPoint.setId(resultSet.getInt("id_fuel_point")); - fuelPoint.setX(resultSet.getDouble("x")); - fuelPoint.setY(resultSet.getDouble("y")); - fuelPoint.setZ(resultSet.getDouble("z")); - fuelPoint.setPrice(resultSet.getInt("price")); - - fuelPoints.add(fuelPoint); - } - return fuelPoints; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/GarageDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/GarageDAO.java deleted file mode 100644 index 5da8889..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/GarageDAO.java +++ /dev/null @@ -1,29 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.Garage; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class GarageDAO { - public static ArrayList loadGarages() throws SQLException { - ArrayList garages = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_garage"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Garage garage = new Garage(); - garage.setId(resultSet.getInt("id_garage")); - garage.setName(resultSet.getString("name")); - garage.setCostToUse(resultSet.getInt("cost_to_use")); - garage.setX(resultSet.getDouble("x")); - garage.setY(resultSet.getDouble("y")); - garage.setZ(resultSet.getDouble("z")); - garages.add(garage); - } - return garages; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/GrowboxDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/GrowboxDAO.java deleted file mode 100644 index 108d986..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/GrowboxDAO.java +++ /dev/null @@ -1,62 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.Compagny; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class GrowboxDAO { - public static ArrayList loadGrowbox() throws SQLException { - ArrayList growboxs = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_growbox"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - GrowboxModel growboxModel = new GrowboxModel(); - growboxModel.setId(resultSet.getInt("id_growbox")); - growboxModel.setX(resultSet.getFloat("x")); - growboxModel.setY(resultSet.getFloat("y")); - growboxModel.setZ(resultSet.getFloat("z")); - growboxModel.setRx(resultSet.getFloat("rx")); - growboxModel.setRy(resultSet.getFloat("ry")); - growboxModel.setRz(resultSet.getFloat("rz")); - growboxs.add(growboxModel); - } - return growboxs; - } - - public static void insertGrowbox(GrowboxModel growboxModel) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_growbox " + - "(x, y, z, rx, ry, rz) VALUES " + - "(?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setDouble(1, growboxModel.getX()); - preparedStatement.setDouble(2, growboxModel.getY()); - preparedStatement.setDouble(3, growboxModel.getZ()); - preparedStatement.setDouble(4, growboxModel.getRx()); - preparedStatement.setDouble(5, growboxModel.getRy()); - preparedStatement.setDouble(6, growboxModel.getRz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - growboxModel.setId(returnId.getInt(1)); - } - returnId.close(); - } - - public static void deleteGrowbox(GrowboxModel growboxModel) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_growbox WHERE id_growbox=?"); - preparedStatement.setInt(1, growboxModel.getId()); - preparedStatement.executeUpdate(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/HouseDAO.java deleted file mode 100644 index d3386aa..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseDAO.java +++ /dev/null @@ -1,70 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.VehicleGarage; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class HouseDAO { - public static ArrayList loadHouses() throws SQLException { - ArrayList houses = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_house"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - House house = new House(); - house.setId(resultSet.getInt("id_house")); - house.setAccountId(resultSet.getInt("id_account")); - house.setPrice(resultSet.getInt("price")); - house.setName(resultSet.getString("name")); - house.setSx(resultSet.getDouble("sx")); - house.setSy(resultSet.getDouble("sy")); - house.setSz(resultSet.getDouble("sz")); - house.setEx(resultSet.getDouble("ex")); - house.setEy(resultSet.getDouble("ey")); - house.setEz(resultSet.getDouble("ez")); - houses.add(house); - } - return houses; - } - - public static void saveHouse(House house) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_house SET id_account=?, price=?, name=? WHERE id_house=?"); - preparedStatement.setInt(1, house.getAccountId()); - preparedStatement.setInt(2, house.getPrice()); - preparedStatement.setString(3, house.getName()); - preparedStatement.setInt(4, house.getId()); - preparedStatement.execute(); - } - - public static void insertHouse(House house) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_house " + - "(id_account, price, name, sx,sy,sz,ex,ey,ez) VALUES " + - "(?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setInt(1, house.getAccountId()); - preparedStatement.setInt(2, house.getPrice()); - preparedStatement.setString(3, house.getName()); - preparedStatement.setDouble(4, house.getSx()); - preparedStatement.setDouble(5, house.getSy()); - preparedStatement.setDouble(6, house.getSz()); - preparedStatement.setDouble(7, house.getEx()); - preparedStatement.setDouble(8, house.getEy()); - preparedStatement.setDouble(9, house.getEz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - house.setId(returnId.getInt(1)); - } - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseItemDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/HouseItemDAO.java deleted file mode 100644 index 4500e56..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/HouseItemDAO.java +++ /dev/null @@ -1,58 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -import java.sql.*; -import java.util.ArrayList; - -public class HouseItemDAO { - public static ArrayList loadHouseItems() throws SQLException { - ArrayList houseItemObjects = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_house_item"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - HouseItemObject houseItemObject = new HouseItemObject(); - houseItemObject.setId(resultSet.getInt("id_house_item")); - houseItemObject.setModelId(resultSet.getInt("model_id")); - houseItemObject.setFunctionId(resultSet.getInt("function_id")); - houseItemObject.setX(resultSet.getDouble("x")); - houseItemObject.setY(resultSet.getDouble("y")); - houseItemObject.setZ(resultSet.getDouble("z")); - houseItemObject.setRx(resultSet.getDouble("rx")); - houseItemObject.setRy(resultSet.getDouble("ry")); - houseItemObject.setRz(resultSet.getDouble("rz")); - houseItemObjects.add(houseItemObject); - } - return houseItemObjects; - } - - public static void insertHouseItem(HouseItemObject houseItemObject) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_house_item " + - "(model_id, function_id, id_house, x, y, z, rx, ry, rz) VALUES " + - "(?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, houseItemObject.getModelId()); - preparedStatement.setInt(2, houseItemObject.getFunctionId()); - preparedStatement.setInt(3, houseItemObject.getHouse().getId()); - preparedStatement.setDouble(4, houseItemObject.getX()); - preparedStatement.setDouble(5, houseItemObject.getY()); - preparedStatement.setDouble(6, houseItemObject.getZ()); - preparedStatement.setDouble(7, houseItemObject.getRx()); - preparedStatement.setDouble(8, houseItemObject.getRy()); - preparedStatement.setDouble(9, houseItemObject.getRz()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - houseItemObject.setId(returnId.getInt(1)); - } - } - - public static void deleteHouseItem(HouseItemObject houseItemObject) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("DELETE FROM tbl_house_item WHERE id_house_item=?"); - preparedStatement.setInt(1, houseItemObject.getId()); - preparedStatement.executeUpdate(); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/InventoryDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/InventoryDAO.java deleted file mode 100644 index 4121ed8..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/InventoryDAO.java +++ /dev/null @@ -1,90 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ItemTemplate; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.HashMap; - -public class InventoryDAO { - - /** - * Create a new inventory empty - * @return The inventory - */ - public static Inventory createInventory() throws SQLException { - // Create the object - Inventory inventory = new Inventory(); - inventory.setInventoryType(-1); - inventory.setInventoryItemType(-1); - inventory.setCharacterId(-1); - inventory.setVehicleId(-1); - inventory.setContent("[]"); - - // Insert the inventory - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_inventory " + - "(inventory_type, inventory_item_type, character_id, vehicle_id, content) VALUES " + - "(?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, inventory.getInventoryType()); - preparedStatement.setInt(2, inventory.getInventoryItemType()); - preparedStatement.setInt(3, inventory.getCharacterId()); - preparedStatement.setInt(4, inventory.getVehicleId()); - preparedStatement.setString(5, inventory.getContent()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - inventory.setId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return inventory; - } - - /** - * Update the inventory in the database - * @param inventory The inventory - * @throws SQLException The error - */ - public static void updateInventory(Inventory inventory) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_inventory SET inventory_type=?, inventory_item_type=?, " + - "character_id=?, vehicle_id=?, content=? WHERE id_inventory=?"); - preparedStatement.setInt(1, inventory.getInventoryType()); - preparedStatement.setInt(2, inventory.getInventoryItemType()); - preparedStatement.setInt(3, inventory.getCharacterId()); - preparedStatement.setInt(4, inventory.getVehicleId()); - preparedStatement.setString(5, inventory.getContent()); - preparedStatement.setInt(6, inventory.getId()); - preparedStatement.execute(); - - preparedStatement.close(); - } - - public static HashMap loadInventories() throws SQLException { - HashMap inventoryHashMap = new HashMap(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_inventory"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Inventory inventory = new Inventory(); - inventory.setId(resultSet.getInt("id_inventory")); - inventory.setInventoryType(resultSet.getInt("inventory_type")); - inventory.setInventoryType(resultSet.getInt("inventory_item_type")); - inventory.setCharacterId(resultSet.getInt("character_id")); - inventory.setVehicleId(resultSet.getInt("vehicle_id")); - inventory.setContent(resultSet.getString("content")); - inventory.parseContent(); - inventoryHashMap.put(inventory.getId(), inventory); - } - resultSet.close(); - preparedStatement.close(); - return inventoryHashMap; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/ItemTemplateDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/ItemTemplateDAO.java deleted file mode 100644 index 24ee9a8..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/ItemTemplateDAO.java +++ /dev/null @@ -1,36 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ItemTemplate; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.HashMap; - -public class ItemTemplateDAO { - public static HashMap getItemTemplates() throws SQLException { - HashMap itemTemplateHashMap = new HashMap(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_item_template"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - ItemTemplate itemTemplate = new ItemTemplate(); - itemTemplate.setId(resultSet.getInt("id_item_template")); - itemTemplate.setName(resultSet.getString("name")); - itemTemplate.setDescription(resultSet.getString("description")); - itemTemplate.setWeight(resultSet.getFloat("weight")); - itemTemplate.setPictureName(resultSet.getString("picture_name")); - itemTemplate.setItemType(resultSet.getInt("item_type")); - itemTemplate.setModelId(resultSet.getInt("model_id")); - itemTemplate.setModelScale(resultSet.getDouble("model_scale")); - itemTemplate.setFoodValue(resultSet.getInt("food_value")); - itemTemplate.setDrinkValue(resultSet.getInt("drink_value")); - itemTemplate.setWeaponId(resultSet.getInt("id_weapon")); - itemTemplate.setAmmoPerRecharge(resultSet.getInt("ammo_per_recharge")); - itemTemplate.setMaskId(resultSet.getInt("id_mask")); - itemTemplate.setBagId(resultSet.getInt("id_bag")); - itemTemplateHashMap.put(itemTemplate.getId(), itemTemplate); - } - return itemTemplateHashMap; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobLevelDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/JobLevelDAO.java deleted file mode 100644 index b7c684d..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobLevelDAO.java +++ /dev/null @@ -1,30 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobLevel; -import fr.yuki.YukiRPFramework.model.JobTool; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobLevelDAO { - public static ArrayList loadJobLevels() throws SQLException { - ArrayList jobLevels = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_level"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobLevel jobLevel = new JobLevel(); - - jobLevel.setId(resultSet.getInt("id_job_level")); - jobLevel.setJobId(resultSet.getString("id_job")); - jobLevel.setName(resultSet.getString("name")); - jobLevel.setLevel(resultSet.getInt("level")); - jobLevel.setExpFloor(resultSet.getInt("exp_floor")); - - jobLevels.add(jobLevel); - } - return jobLevels; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobNPCDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/JobNPCDAO.java deleted file mode 100644 index 9e689df..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobNPCDAO.java +++ /dev/null @@ -1,41 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobNPCListItem; -import fr.yuki.YukiRPFramework.model.SellListItem; -import fr.yuki.YukiRPFramework.model.VehicleSeller; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobNPCDAO { - public static ArrayList loadJobNPCS() throws SQLException { - ArrayList jobNPCS = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_npc"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobNPC jobNPC = new JobNPC(); - - jobNPC.setId(resultSet.getInt("id_job_npc")); - jobNPC.setJobId(resultSet.getString("id_job")); - jobNPC.setName(resultSet.getString("name")); - jobNPC.setX(resultSet.getDouble("x")); - jobNPC.setY(resultSet.getDouble("y")); - jobNPC.setZ(resultSet.getDouble("z")); - jobNPC.setH(resultSet.getDouble("h")); - jobNPC.setNpcClothing(resultSet.getInt("npc_clothing")); - jobNPC.setBuyList(new Gson().fromJson(resultSet.getString("buy_list"), - new TypeToken>(){}.getType())); - jobNPC.setSellList(new Gson().fromJson(resultSet.getString("sell_list"), - new TypeToken>(){}.getType())); - - jobNPCS.add(jobNPC); - } - return jobNPCS; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobOutfitDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/JobOutfitDAO.java deleted file mode 100644 index 53f3231..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobOutfitDAO.java +++ /dev/null @@ -1,32 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.JobOutfit; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobOutfitDAO { - public static ArrayList loadJobOutfits() throws SQLException { - ArrayList jobOutfits = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_outfit"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobOutfit jobOutfit = new JobOutfit(); - jobOutfit.setId(resultSet.getInt("id_job_outfit")); - jobOutfit.setJobId(resultSet.getString("id_job")); - jobOutfit.setLevelRequired(resultSet.getInt("level_required")); - jobOutfit.setName(resultSet.getString("name")); - jobOutfit.setOutfit(resultSet.getString("outfit")); - jobOutfit.setX(resultSet.getDouble("x")); - jobOutfit.setY(resultSet.getDouble("y")); - jobOutfit.setZ(resultSet.getDouble("z")); - - jobOutfits.add(jobOutfit); - } - return jobOutfits; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobToolDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/JobToolDAO.java deleted file mode 100644 index d63ddcb..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobToolDAO.java +++ /dev/null @@ -1,44 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobNPCListItem; -import fr.yuki.YukiRPFramework.model.JobTool; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobToolDAO { - public static ArrayList loadJobTools() throws SQLException { - ArrayList jobTools = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_tool"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobTool jobTool = new JobTool(); - - jobTool.setId(resultSet.getInt("id_job_tool")); - jobTool.setModelId(resultSet.getInt("model_id")); - jobTool.setName(resultSet.getString("name")); - jobTool.setJobType(resultSet.getString("job_type")); - jobTool.setLevelRequired(resultSet.getInt("level_required")); - jobTool.setJobToolType(resultSet.getString("job_tool_type")); - jobTool.setReward(resultSet.getInt("reward")); - jobTool.setX(resultSet.getDouble("x")); - jobTool.setY(resultSet.getDouble("y")); - jobTool.setZ(resultSet.getDouble("z")); - jobTool.setRx(resultSet.getDouble("r_x")); - jobTool.setRy(resultSet.getDouble("r_y")); - jobTool.setRz(resultSet.getDouble("r_z")); - jobTool.setSx(resultSet.getDouble("s_x")); - jobTool.setSy(resultSet.getDouble("s_y")); - jobTool.setSz(resultSet.getDouble("s_z")); - - jobTools.add(jobTool); - } - return jobTools; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/JobVehicleRentalDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/JobVehicleRentalDAO.java deleted file mode 100644 index e873cb0..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/JobVehicleRentalDAO.java +++ /dev/null @@ -1,37 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobLevel; -import fr.yuki.YukiRPFramework.model.JobVehicleRental; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class JobVehicleRentalDAO { - public static ArrayList loadJobVehicleRental() throws SQLException { - ArrayList jobVehicleRentals = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_job_vehicle_rental"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - JobVehicleRental jobVehicleRental = new JobVehicleRental(); - - jobVehicleRental.setId(resultSet.getInt("id_job_vehicle_rental")); - jobVehicleRental.setJobId(resultSet.getString("id_job")); - jobVehicleRental.setLevelRequired(resultSet.getInt("level_required")); - jobVehicleRental.setName(resultSet.getString("name")); - jobVehicleRental.setVehicleModelId(resultSet.getInt("vehicle_model_id")); - jobVehicleRental.setCost(resultSet.getInt("cost")); - jobVehicleRental.setX(resultSet.getDouble("x")); - jobVehicleRental.setY(resultSet.getDouble("y")); - jobVehicleRental.setZ(resultSet.getDouble("z")); - jobVehicleRental.setSpawnX(resultSet.getDouble("spawn_x")); - jobVehicleRental.setSpawnY(resultSet.getDouble("spawn_y")); - jobVehicleRental.setSpawnZ(resultSet.getDouble("spawn_z")); - jobVehicleRental.setColor(resultSet.getString("color")); - jobVehicleRentals.add(jobVehicleRental); - } - return jobVehicleRentals; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/OutfitPointDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/OutfitPointDAO.java deleted file mode 100644 index a3cfcea..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/OutfitPointDAO.java +++ /dev/null @@ -1,28 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.OutfitPoint; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class OutfitPointDAO { - public static ArrayList loadOutfitPoint() throws SQLException { - ArrayList outfitPoints = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_outfit_point"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - OutfitPoint outfitPoint = new OutfitPoint(); - outfitPoint.setId(resultSet.getInt("id_outfit_point")); - outfitPoint.setX(resultSet.getDouble("x")); - outfitPoint.setY(resultSet.getDouble("y")); - outfitPoint.setZ(resultSet.getDouble("z")); - - outfitPoints.add(outfitPoint); - } - return outfitPoints; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/PhoneContactDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/PhoneContactDAO.java deleted file mode 100644 index 46f9a2b..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/PhoneContactDAO.java +++ /dev/null @@ -1,50 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.PhoneContact; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; - -public class PhoneContactDAO { - public static ArrayList loadPhoneContacts() throws SQLException { - ArrayList phoneContacts = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_phone_contact"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - PhoneContact phoneContact = new PhoneContact(); - phoneContact.setId(resultSet.getInt("id_phone_contact")); - phoneContact.setAccountId(resultSet.getInt("id_account")); - phoneContact.setName(resultSet.getString("name")); - phoneContact.setNumber(resultSet.getString("phone_number")); - - phoneContacts.add(phoneContact); - } - return phoneContacts; - } - - public static void insertPhoneContact(PhoneContact phoneContact) throws SQLException { - // Execute the query - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_phone_contact " + - "(id_account, name, phone_number) VALUES " + - "(?,?,?)", Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setInt(1, phoneContact.getAccountId()); - preparedStatement.setString(2, phoneContact.getName()); - preparedStatement.setString(3, phoneContact.getNumber()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - phoneContact.setId(returnId.getInt(1)); - } - returnId.close(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/SellerDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/SellerDAO.java deleted file mode 100644 index f360b3b..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/SellerDAO.java +++ /dev/null @@ -1,40 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobNPCListItem; -import fr.yuki.YukiRPFramework.model.Seller; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class SellerDAO { - public static ArrayList loadSellers() throws SQLException { - ArrayList sellers = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_seller"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - Seller seller = new Seller(); - - seller.setId(resultSet.getInt("id_seller")); - seller.setName(resultSet.getString("name")); - seller.setX(resultSet.getDouble("x")); - seller.setY(resultSet.getDouble("y")); - seller.setZ(resultSet.getDouble("z")); - seller.setH(resultSet.getDouble("h")); - seller.setNpcClothing(resultSet.getInt("npc_clothing")); - seller.setItemList(resultSet.getString("item_list")); - seller.setJobRequired(resultSet.getString("job_required")); - seller.setJobLevelRequired(resultSet.getInt("job_level_required")); - - sellers.add(seller); - } - preparedStatement.close(); - resultSet.close(); - return sellers; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleGarageDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleGarageDAO.java deleted file mode 100644 index 1de7772..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleGarageDAO.java +++ /dev/null @@ -1,80 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.VehicleGarage; - -import java.sql.*; -import java.util.ArrayList; - -public class VehicleGarageDAO { - public static VehicleGarage createVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("INSERT INTO tbl_vehicle_garage " + - "(id_garage, id_last_garage, id_model, damage, licence_plate, color, created_at, updated_at, uuid, owner, health) VALUES " + - "(?,?,?,?,?,?,?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); - preparedStatement.setInt(1, vehicleGarage.getGarageId()); - preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); - preparedStatement.setInt(3, vehicleGarage.getModelId()); - preparedStatement.setString(4, vehicleGarage.getDamage()); - preparedStatement.setString(5, vehicleGarage.getLicencePlate()); - preparedStatement.setString(6, vehicleGarage.getColor()); - preparedStatement.setDate(7, new Date(new java.util.Date().getTime())); - preparedStatement.setDate(8, new Date(new java.util.Date().getTime())); - preparedStatement.setString(9, vehicleGarage.getUuid()); - preparedStatement.setInt(10, vehicleGarage.getOwner()); - preparedStatement.setDouble(11, vehicleGarage.getHealth()); - preparedStatement.executeUpdate(); - - ResultSet returnId = preparedStatement.getGeneratedKeys(); - if(returnId.next()) { - vehicleGarage.setVehicleGarageId(returnId.getInt(1)); - } else { - return null; - } - returnId.close(); - preparedStatement.close(); - return vehicleGarage; - } - - public static ArrayList loadVehiclesGarage() throws SQLException { - ArrayList vehicleGarages = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_vehicle_garage"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - VehicleGarage vehicleGarage = new VehicleGarage(); - - vehicleGarage.setVehicleGarageId(resultSet.getInt("id_vehicle_garage")); - vehicleGarage.setOwner(resultSet.getInt("owner")); - vehicleGarage.setUuid(resultSet.getString("uuid")); - vehicleGarage.setGarageId(resultSet.getInt("id_garage")); - vehicleGarage.setGarageLastId(resultSet.getInt("id_last_garage")); - vehicleGarage.setModelId(resultSet.getInt("id_model")); - vehicleGarage.setDamage(resultSet.getString("damage")); - vehicleGarage.setHealth(resultSet.getDouble("health")); - vehicleGarage.setLicencePlate(resultSet.getString("licence_plate")); - vehicleGarage.setColor(resultSet.getString("color")); - vehicleGarage.setCreatedAt(resultSet.getDate("created_at")); - vehicleGarage.setUpdateAt(resultSet.getDate("updated_at")); - - vehicleGarages.add(vehicleGarage); - } - preparedStatement.close(); - resultSet.close(); - return vehicleGarages; - } - - public static void saveVehicleGarage(VehicleGarage vehicleGarage) throws SQLException { - PreparedStatement preparedStatement = Database.getConnection() - .prepareStatement("UPDATE tbl_vehicle_garage SET id_garage=?, id_last_garage=?, color=?, licence_plate=?, damage=?, health=? WHERE id_vehicle_garage=?"); - preparedStatement.setInt(1, vehicleGarage.getGarageId()); - preparedStatement.setInt(2, vehicleGarage.getGarageLastId()); - preparedStatement.setString(3, vehicleGarage.getColor()); - preparedStatement.setString(4, vehicleGarage.getLicencePlate()); - preparedStatement.setString(5, vehicleGarage.getDamage()); - preparedStatement.setDouble(6, vehicleGarage.getHealth()); - preparedStatement.setInt(7, vehicleGarage.getVehicleGarageId()); - preparedStatement.execute(); - preparedStatement.close(); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleSellerDAO.java b/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleSellerDAO.java deleted file mode 100644 index 0a61196..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/dao/VehicleSellerDAO.java +++ /dev/null @@ -1,45 +0,0 @@ -package fr.yuki.YukiRPFramework.dao; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.Database; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.model.SellListItem; -import fr.yuki.YukiRPFramework.model.VehicleGarage; -import fr.yuki.YukiRPFramework.model.VehicleSeller; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -public class VehicleSellerDAO { - - public static ArrayList loadVehicleSellers() throws SQLException { - ArrayList vehicleSellers = new ArrayList<>(); - PreparedStatement preparedStatement = Database.getConnection().prepareStatement("SELECT * FROM tbl_vehicle_seller"); - ResultSet resultSet = preparedStatement.executeQuery(); - while(resultSet.next()) { - VehicleSeller vehicleSeller = new VehicleSeller(); - - vehicleSeller.setId(resultSet.getInt("id_vehicle_seller")); - vehicleSeller.setName(resultSet.getString("name")); - vehicleSeller.setNpcClothing(resultSet.getInt("npc_clothing")); - vehicleSeller.setX(resultSet.getDouble("x")); - vehicleSeller.setY(resultSet.getDouble("y")); - vehicleSeller.setZ(resultSet.getDouble("z")); - vehicleSeller.setH(resultSet.getDouble("h")); - vehicleSeller.setsX(resultSet.getDouble("s_x")); - vehicleSeller.setsY(resultSet.getDouble("s_y")); - vehicleSeller.setsZ(resultSet.getDouble("s_z")); - vehicleSeller.setsH(resultSet.getDouble("s_h")); - vehicleSeller.setSellList(new Gson().fromJson(resultSet.getString("sell_list"), - new TypeToken>(){}.getType())); - - vehicleSellers.add(vehicleSeller); - } - preparedStatement.close(); - resultSet.close(); - return vehicleSellers; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/enums/JobEnum.java b/src/main/java/fr/yuki/YukiRPFramework/enums/JobEnum.java deleted file mode 100644 index 37b2ebc..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/enums/JobEnum.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.yuki.YukiRPFramework.enums; - -public enum JobEnum { - LUMBERJACK("LUMBERJACK"), - DELIVERY("DELIVERY"), - MINER("MINER"), - FISHER("FISHER"), - POLICE("POLICE"), - WEED("WEED"), - GARBAGE("GARBAGE"), - EMS("EMS"); - - public final String type; - private JobEnum(String type) { - this.type = type; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/AccountManager.java b/src/main/java/fr/yuki/YukiRPFramework/manager/AccountManager.java deleted file mode 100644 index c094222..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/AccountManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.dao.AccountJobWhitelistDAO; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import net.onfirenetwork.onsetjava.Onset; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class AccountManager { - private static ArrayList accountJobWhitelists; - - public static void init() throws SQLException { - accountJobWhitelists = AccountJobWhitelistDAO.loadAccountJobWhitelist(); - Onset.print("Loaded " + accountJobWhitelists.size() + " account job whitelist(s) from database"); - } - - public static ArrayList getAccountJobWhitelists() { - return accountJobWhitelists; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/ATM.java b/src/main/java/fr/yuki/YukiRPFramework/model/ATM.java deleted file mode 100644 index a4d149e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/ATM.java +++ /dev/null @@ -1,61 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; - -public class ATM { - private int id; - private float x; - private float y; - private float z; - private Pickup pickup; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public float getX() { - return x; - } - - public void setX(float x) { - this.x = x; - } - - public float getY() { - return y; - } - - public void setY(float y) { - this.y = y; - } - - public float getZ() { - return z; - } - - public void setZ(float z) { - this.z = z; - } - - public Pickup getPickup() { - return pickup; - } - - public void setPickup(Pickup pickup) { - this.pickup = pickup; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 150) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Account.java b/src/main/java/fr/yuki/YukiRPFramework/model/Account.java deleted file mode 100644 index 6383db9..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Account.java +++ /dev/null @@ -1,288 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.net.payload.RequestBuyVehiclePayload; - -import java.util.ArrayList; -import java.util.Date; - -public class Account { - private int id; - private int adminLevel; - private String steamName; - private String steamId; - private Date createdAt; - private Date updatedAt; - private int isBanned; - private int bankMoney; - private double saveX; - private double saveY; - private double saveZ; - private double saveH; - private int characterCreationRequest; - private String characterStyle; - private String characterName; - private String jobLevels; - private int isDead; - private String lang; - private int foodState; - private int drinkState; - private String phoneNumber; - private String weapons; - private int bagId; - private int compagnyId; - private int isInService; - private String originalStyle; - private double health; - private int commandLevel; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getSteamName() { - return steamName; - } - - public void setSteamName(String steamName) { - this.steamName = steamName; - } - - public String getSteamId() { - return steamId; - } - - public void setSteamId(String steamId) { - this.steamId = steamId; - } - - public Date getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(Date createdAt) { - this.createdAt = createdAt; - } - - public Date getUpdatedAt() { - return updatedAt; - } - - public void setUpdatedAt(Date updatedAt) { - this.updatedAt = updatedAt; - } - - public int getIsBanned() { - return isBanned; - } - - public void setIsBanned(int isBanned) { - this.isBanned = isBanned; - } - - public int getBankMoney() { - return bankMoney; - } - - public void setBankMoney(int bankMoney) { - this.bankMoney = bankMoney; - } - - public double getSaveX() { - return saveX; - } - - public void setSaveX(double saveX) { - this.saveX = saveX; - } - - public double getSaveY() { - return saveY; - } - - public void setSaveY(double saveY) { - this.saveY = saveY; - } - - public double getSaveZ() { - return saveZ; - } - - public void setSaveZ(double saveZ) { - this.saveZ = saveZ; - } - - public double getSaveH() { - return saveH; - } - - public void setSaveH(double saveH) { - this.saveH = saveH; - } - - public int getFoodState() { - return foodState; - } - - public void setFoodState(int foodState) { - this.foodState = foodState; - } - - public int getDrinkState() { - return drinkState; - } - - public void setDrinkState(int drinkState) { - this.drinkState = drinkState; - } - - public int getCharacterCreationRequest() { - return characterCreationRequest; - } - - public void setCharacterCreationRequest(int characterCreationRequest) { - this.characterCreationRequest = characterCreationRequest; - } - - public String getCharacterStyle() { - return characterStyle; - } - - public void setCharacterStyle(String characterStyle) { - this.characterStyle = characterStyle; - } - - public void setCharacterStyle(CharacterStyle characterStyle) { - this.characterStyle = new Gson().toJson(characterStyle); - } - - public CharacterStyle decodeCharacterStyle() { - if(this.characterStyle.equals("")) return new CharacterStyle(); - return new Gson().fromJson(this.characterStyle, CharacterStyle.class); - } - - public CharacterStyle decodeOriginalCharacterStyle() { - if(this.originalStyle.equals("")) return new CharacterStyle(); - return new Gson().fromJson(this.originalStyle, CharacterStyle.class); - } - - public void setJobLevels(ArrayList jobLevels) { - this.jobLevels = new Gson().toJson(jobLevels); - } - - public ArrayList decodeCharacterJob() { - if(this.jobLevels.equals("")) return new ArrayList<>(); - return new Gson().fromJson(this.jobLevels, new TypeToken>(){}.getType()); - } - - public String getCharacterName() { - return characterName; - } - - public void setCharacterName(String characterName) { - this.characterName = characterName; - } - - public String getJobLevels() { - return jobLevels; - } - - public void setJobLevels(String jobLevels) { - this.jobLevels = jobLevels; - } - - public int getIsDead() { - return isDead; - } - - public void setIsDead(int isDead) { - this.isDead = isDead; - } - - public int getAdminLevel() { - return adminLevel; - } - - public void setAdminLevel(int adminLevel) { - this.adminLevel = adminLevel; - } - - public String getLang() { - return lang; - } - - public void setLang(String lang) { - this.lang = lang; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public String getWeapons() { - return weapons; - } - - public void setWeapons(String weapons) { - this.weapons = weapons; - } - - public int getBagId() { - return bagId; - } - - public void setBagId(int bagId) { - this.bagId = bagId; - } - - public int getCompagnyId() { - return compagnyId; - } - - public void setCompagnyId(int compagnyId) { - this.compagnyId = compagnyId; - } - - public int getIsInService() { - return isInService; - } - - public void setIsInService(int isInService) { - this.isInService = isInService; - } - - public String getOriginalStyle() { - return originalStyle; - } - - public void setOriginalStyle(String originalStyle) { - this.originalStyle = originalStyle; - } - - public double getHealth() { - return health; - } - - public void setHealth(double health) { - this.health = health; - } - - public int getCommandLevel() { - return commandLevel; - } - - public void setCommandLevel(int commandLevel) { - this.commandLevel = commandLevel; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/AccountJobWhitelist.java b/src/main/java/fr/yuki/YukiRPFramework/model/AccountJobWhitelist.java deleted file mode 100644 index d15b4da..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/AccountJobWhitelist.java +++ /dev/null @@ -1,40 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -public class AccountJobWhitelist { - private int id; - private int accountId; - private String jobId; - private int jobLevel; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getAccountId() { - return accountId; - } - - public void setAccountId(int accountId) { - this.accountId = accountId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getJobLevel() { - return jobLevel; - } - - public void setJobLevel(int jobLevel) { - this.jobLevel = jobLevel; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Compagny.java b/src/main/java/fr/yuki/YukiRPFramework/model/Compagny.java deleted file mode 100644 index b7d1b4e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Compagny.java +++ /dev/null @@ -1,55 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.entity.Player; - -public class Compagny { - private int id; - private String name; - private int bankCash; - private String owner; - private int maxMember; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getBankCash() { - return bankCash; - } - - public void setBankCash(int bankCash) { - this.bankCash = bankCash; - } - - public String getOwner() { - return owner; - } - - public void setOwner(String owner) { - this.owner = owner; - } - - public int getMaxMember() { - return maxMember; - } - - public void setMaxMember(int maxMember) { - this.maxMember = maxMember; - } - - public boolean isOwner(Player player) { - return this.owner.equals(player.getSteamId()); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/FuelPoint.java b/src/main/java/fr/yuki/YukiRPFramework/model/FuelPoint.java deleted file mode 100644 index 358e0d7..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/FuelPoint.java +++ /dev/null @@ -1,57 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class FuelPoint { - private int id; - private double x; - private double y; - private double z; - private int price; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) return true; - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Garage.java b/src/main/java/fr/yuki/YukiRPFramework/model/Garage.java deleted file mode 100644 index 6b04f43..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Garage.java +++ /dev/null @@ -1,68 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class Garage { - private int id; - private String name; - private int costToUse; - private double x; - private double y; - private double z; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getCostToUse() { - return costToUse; - } - - public void setCostToUse(int costToUse) { - this.costToUse = costToUse; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GrowboxModel.java b/src/main/java/fr/yuki/YukiRPFramework/model/GrowboxModel.java deleted file mode 100644 index 6244f98..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GrowboxModel.java +++ /dev/null @@ -1,67 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -public class GrowboxModel { - private int id; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/House.java b/src/main/java/fr/yuki/YukiRPFramework/model/House.java deleted file mode 100644 index 95d5209..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/House.java +++ /dev/null @@ -1,130 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.modding.Line3D; - -import java.util.ArrayList; - -public class House { - private int id; - private int accountId; - private int price; - private String name; - private double sx; - private double sy; - private double sz; - private double ex; - private double ey; - private double ez; - - private boolean locked = true; - private ArrayList allowedPlayers = new ArrayList<>(); - private ArrayList houseItemObjects = new ArrayList<>(); - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getAccountId() { - return accountId; - } - - public void setAccountId(int accountId) { - this.accountId = accountId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public double getEx() { - return ex; - } - - public void setEx(double ex) { - this.ex = ex; - } - - public double getEy() { - return ey; - } - - public void setEy(double ey) { - this.ey = ey; - } - - public double getEz() { - return ez; - } - - public void setEz(double ez) { - this.ez = ez; - } - - public Line3D getLine3D() { - return new Line3D(this.sx, this.sy, this.sz, this.ex, this.ey, this.ez, 5); - } - - public boolean isLocked() { - return locked; - } - - public void setLocked(boolean locked) { - this.locked = locked; - } - - public ArrayList getHouseItemObjects() { - return houseItemObjects; - } - - public void setHouseItemObjects(ArrayList houseItemObjects) { - this.houseItemObjects = houseItemObjects; - } - - public ArrayList getAllowedPlayers() { - return allowedPlayers; - } - - public void setAllowedPlayers(ArrayList allowedPlayers) { - this.allowedPlayers = allowedPlayers; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/ItemTemplate.java b/src/main/java/fr/yuki/YukiRPFramework/model/ItemTemplate.java deleted file mode 100644 index 6cf438e..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/ItemTemplate.java +++ /dev/null @@ -1,130 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -public class ItemTemplate { - private int id; - private String name; - private String description; - private float weight; - private String pictureName; - private int itemType; - private int modelId; - private double modelScale; - private int foodValue; - private int drinkValue; - private int weaponId; - private int ammoPerRecharge; - private int maskId; - private int bagId; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public float getWeight() { - return weight; - } - - public void setWeight(float weight) { - this.weight = weight; - } - - public String getPictureName() { - return pictureName; - } - - public void setPictureName(String pictureName) { - this.pictureName = pictureName; - } - - public int getItemType() { - return itemType; - } - - public void setItemType(int itemType) { - this.itemType = itemType; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public double getModelScale() { - return modelScale; - } - - public void setModelScale(double modelScale) { - this.modelScale = modelScale; - } - - public int getFoodValue() { - return foodValue; - } - - public void setFoodValue(int foodValue) { - this.foodValue = foodValue; - } - - public int getDrinkValue() { - return drinkValue; - } - - public void setDrinkValue(int drinkValue) { - this.drinkValue = drinkValue; - } - - public int getWeaponId() { - return weaponId; - } - - public void setWeaponId(int weaponId) { - this.weaponId = weaponId; - } - - public int getAmmoPerRecharge() { - return ammoPerRecharge; - } - - public void setAmmoPerRecharge(int ammoPerRecharge) { - this.ammoPerRecharge = ammoPerRecharge; - } - - public int getMaskId() { - return maskId; - } - - public void setMaskId(int maskId) { - this.maskId = maskId; - } - - public int getBagId() { - return bagId; - } - - public void setBagId(int bagId) { - this.bagId = bagId; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobLevel.java b/src/main/java/fr/yuki/YukiRPFramework/model/JobLevel.java deleted file mode 100644 index 70aabbf..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobLevel.java +++ /dev/null @@ -1,53 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -public class JobLevel { - private int id; - private String jobId; - private String name; - private int level; - private int expFloor; - - public String getTranslateName() { - return name.toLowerCase().replaceAll(" ", "_"); - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getLevel() { - return level; - } - - public void setLevel(int level) { - this.level = level; - } - - public int getExpFloor() { - return expFloor; - } - - public void setExpFloor(int expFloor) { - this.expFloor = expFloor; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPC.java b/src/main/java/fr/yuki/YukiRPFramework/model/JobNPC.java deleted file mode 100644 index d9eb0d6..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPC.java +++ /dev/null @@ -1,124 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.NPC; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class JobNPC { - private int id; - private String jobId; - private String name; - private double x; - private double y; - private double z; - private double h; - private int npcClothing; - private ArrayList buyList; - private ArrayList sellList; - private NPC npc; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public ArrayList getBuyList() { - return buyList; - } - - public void setBuyList(ArrayList buyList) { - this.buyList = buyList; - } - - public ArrayList getSellList() { - return sellList; - } - - public void setSellList(ArrayList sellList) { - this.sellList = sellList; - } - - public double getH() { - return h; - } - - public void setH(double h) { - this.h = h; - } - - public int getNpcClothing() { - return npcClothing; - } - - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; - } - - public JobNPCListItem getBuyItemByWearableItem(WearableWorldObject wearableWorldObject) { - JobNPCListItem jobNPCListItem = null; - for(JobNPCListItem item : this.buyList) { - if(item.getType().toLowerCase().equals("worlditem") && item.getItemId() == wearableWorldObject.getModelId()) { - return item; - } - } - return null; - } - - public boolean isNear(Player player) { - return new Vector(x,y,z).distance(player.getLocation()) < 200; - } - - public NPC getNpc() { - return npc; - } - - public void setNpc(NPC npc) { - this.npc = npc; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfit.java b/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfit.java deleted file mode 100644 index 5feef08..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfit.java +++ /dev/null @@ -1,92 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class JobOutfit { - private int id; - private String jobId; - private int levelRequired; - private String name; - private String outfit; - private double x; - private double y; - private double z; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getOutfit() { - return outfit; - } - - public void setOutfit(String outfit) { - this.outfit = outfit; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) return true; - return false; - } - - public ArrayList decodeOutfit() { - return new Gson().fromJson(this.outfit, new TypeToken>(){}.getType()); - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobVehicleRental.java b/src/main/java/fr/yuki/YukiRPFramework/model/JobVehicleRental.java deleted file mode 100644 index d48a646..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobVehicleRental.java +++ /dev/null @@ -1,128 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class JobVehicleRental { - private int id; - private String jobId; - private int levelRequired; - private String name; - private int vehicleModelId; - private int cost; - private double x; - private double y; - private double z; - private double spawnX; - private double spawnY; - private double spawnZ; - private String color; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getVehicleModelId() { - return vehicleModelId; - } - - public void setVehicleModelId(int vehicleModelId) { - this.vehicleModelId = vehicleModelId; - } - - public int getCost() { - return cost; - } - - public void setCost(int cost) { - this.cost = cost; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getSpawnX() { - return spawnX; - } - - public void setSpawnX(double spawnX) { - this.spawnX = spawnX; - } - - public double getSpawnY() { - return spawnY; - } - - public void setSpawnY(double spawnY) { - this.spawnY = spawnY; - } - - public double getSpawnZ() { - return spawnZ; - } - - public void setSpawnZ(double spawnZ) { - this.spawnZ = spawnZ; - } - - public boolean isNear(Player player) { - return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 350; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/OutfitPoint.java b/src/main/java/fr/yuki/YukiRPFramework/model/OutfitPoint.java deleted file mode 100644 index 92b01ab..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/OutfitPoint.java +++ /dev/null @@ -1,50 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class OutfitPoint { - private int id; - private double x; - private double y; - private double z; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/PhoneContact.java b/src/main/java/fr/yuki/YukiRPFramework/model/PhoneContact.java deleted file mode 100644 index 3c78da7..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/PhoneContact.java +++ /dev/null @@ -1,40 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -public class PhoneContact { - private int id; - private int accountId; - private String name; - private String number; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getAccountId() { - return accountId; - } - - public void setAccountId(int accountId) { - this.accountId = accountId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Seller.java b/src/main/java/fr/yuki/YukiRPFramework/model/Seller.java deleted file mode 100644 index f3b8c9d..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Seller.java +++ /dev/null @@ -1,123 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.NPC; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class Seller { - private int id; - private String name; - private double x; - private double y; - private double z; - private double h; - private int npcClothing; - private String itemList; - private String jobRequired; - private int jobLevelRequired; - private NPC npc; - - public ArrayList decodeItems() { - return new Gson().fromJson(this.itemList, - new TypeToken>(){}.getType()); - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getH() { - return h; - } - - public void setH(double h) { - this.h = h; - } - - public int getNpcClothing() { - return npcClothing; - } - - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; - } - - public String getItemList() { - return itemList; - } - - public void setItemList(String itemList) { - this.itemList = itemList; - } - - public NPC getNpc() { - return npc; - } - - public void setNpc(NPC npc) { - this.npc = npc; - } - - public String getJobRequired() { - return jobRequired; - } - - public void setJobRequired(String jobRequired) { - this.jobRequired = jobRequired; - } - - public int getJobLevelRequired() { - return jobLevelRequired; - } - - public void setJobLevelRequired(int jobLevelRequired) { - this.jobLevelRequired = jobLevelRequired; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleGarage.java b/src/main/java/fr/yuki/YukiRPFramework/model/VehicleGarage.java deleted file mode 100644 index 8366f7f..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleGarage.java +++ /dev/null @@ -1,174 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.dao.VehicleGarageDAO; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Vehicle; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; - -public class VehicleGarage { - private int vehicleGarageId; - private String uuid; - private int owner; - private int garageId; - private int garageLastId; - private int modelId; - private String damage; - private double health; - private String licencePlate; - private String color; - private Date createdAt; - private Date updateAt; - private boolean isRental; - - public int getVehicleGarageId() { - return vehicleGarageId; - } - - public void setVehicleGarageId(int vehicleGarageId) { - this.vehicleGarageId = vehicleGarageId; - } - - public int getGarageId() { - return garageId; - } - - public void setGarageId(int garageId) { - this.garageId = garageId; - } - - public int getGarageLastId() { - return garageLastId; - } - - public void setGarageLastId(int garageLastId) { - this.garageLastId = garageLastId; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getDamage() { - return damage; - } - - public void setDamage(String damage) { - this.damage = damage; - } - - public String getLicencePlate() { - return licencePlate; - } - - public void setLicencePlate(String licencePlate) { - this.licencePlate = licencePlate; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } - - public Date getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(Date createdAt) { - this.createdAt = createdAt; - } - - public Date getUpdateAt() { - return updateAt; - } - - public void setUpdateAt(Date updateAt) { - this.updateAt = updateAt; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public int getOwner() { - return owner; - } - - public void setOwner(int owner) { - this.owner = owner; - } - - public void save() { - try { - if(!isRental) VehicleGarageDAO.saveVehicleGarage(this); - } catch (Exception ex) { - Onset.print("Can't save vehicle: " + ex.toString()); - } - } - - public boolean isRental() { - return isRental; - } - - public void setRental(boolean rental) { - isRental = rental; - } - - public void destroy() { - for(Vehicle vehicle : Onset.getVehicles()) { - if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { - vehicle.destroy(); - return; - } - } - } - - public Vehicle getVehicle() { - for(Vehicle vehicle : Onset.getVehicles()) { - if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { - return vehicle; - } - } - return null; - } - - public void applyDamages(Vehicle vehicle) { - ArrayList damages = new Gson().fromJson(this.damage, new TypeToken>(){}.getType()); - for(int i = 0; i < damages.size(); i++) { - vehicle.setDamage(i + 1, damages.get(i)); - } - vehicle.setHealth(this.health); - } - - public void computeDamages(Vehicle vehicle) { - this.health = vehicle.getHealth(); - ArrayList damages = new ArrayList<>(); - for(int i = 0; i < 8; i++) { - damages.add(vehicle.getDamage(i + 1)); - } - this.damage = new Gson().toJson(damages); - } - - public double getHealth() { - return health; - } - - public void setHealth(double health) { - this.health = health; - } -} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleSeller.java b/src/main/java/fr/yuki/YukiRPFramework/model/VehicleSeller.java deleted file mode 100644 index 40b8004..0000000 --- a/src/main/java/fr/yuki/YukiRPFramework/model/VehicleSeller.java +++ /dev/null @@ -1,124 +0,0 @@ -package fr.yuki.YukiRPFramework.model; - -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class VehicleSeller { - private int id; - private String name; - private int npcClothing; - private double x; - private double y; - private double z; - private double h; - private double sX; - private double sY; - private double sZ; - private double sH; - private ArrayList sellList; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getNpcClothing() { - return npcClothing; - } - - public void setNpcClothing(int npcClothing) { - this.npcClothing = npcClothing; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public ArrayList getSellList() { - return sellList; - } - - public void setSellList(ArrayList sellList) { - this.sellList = sellList; - } - - public double getH() { - return h; - } - - public void setH(double h) { - this.h = h; - } - - public double getsX() { - return sX; - } - - public void setsX(double sX) { - this.sX = sX; - } - - public double getsY() { - return sY; - } - - public void setsY(double sY) { - this.sY = sY; - } - - public double getsZ() { - return sZ; - } - - public void setsZ(double sZ) { - this.sZ = sZ; - } - - public double getsH() { - return sH; - } - - public void setsH(double sH) { - this.sH = sH; - } - - public boolean isNear(Player player) { - if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { - return true; - } - return false; - } -} diff --git a/src/main/java/fr/yuki/yrpf/Database.java b/src/main/java/fr/yuki/yrpf/Database.java new file mode 100644 index 0000000..b1ec60a --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/Database.java @@ -0,0 +1,57 @@ +package fr.yuki.yrpf; + +import eu.bebendorf.ajorm.AJORM; +import eu.bebendorf.ajorm.AJORMConfig; +import eu.bebendorf.ajorm.wrapper.MySQL; +import eu.bebendorf.ajorm.wrapper.SQL; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.utils.ServerConfig; +import net.onfirenetwork.onsetjava.Onset; + +public class Database { + + private static SQL sql; + + public static SQL getRaw() { + return sql; + } + + /** + * Initialize the connection with the database + */ + public static void init() { + try { + ServerConfig serverConfig = WorldManager.getServerConfig(); + sql = new MySQL(serverConfig.getSqlHost(), 3306, serverConfig.getSqlDb(), serverConfig.getSqlUsername(), serverConfig.getSqlPassword()); + AJORMConfig config = new AJORMConfig() + .setDefaultSize(255); + // @Yuki you can optionally add .migrate() behind the register calls to enable migration + AJORM.register(Account.class, sql, config); + AJORM.register(ATM.class, sql, config); + AJORM.register(AccountJobWhitelist.class, sql, config); + AJORM.register(Company.class, sql, config); + AJORM.register(VehicleSeller.class, sql, config); + AJORM.register(Garage.class, sql, config); + AJORM.register(House.class, sql, config); + AJORM.register(HouseItemObject.class, sql, config); + AJORM.register(FuelPoint.class, sql, config); + AJORM.register(Seller.class, sql, config); + AJORM.register(PhoneContact.class, sql, config); + AJORM.register(VehicleGarage.class, sql, config); + AJORM.register(Inventory.class, sql, config); + AJORM.register(JobNPC.class, sql, config); + AJORM.register(JobLevel.class, sql, config); + AJORM.register(ItemTemplate.class, sql, config); + AJORM.register(OutfitPoint.class, sql, config); + AJORM.register(GrowboxModel.class, sql, config); + AJORM.register(JobTool.class, sql, config); + AJORM.register(JobVehicleRental.class, sql, config); + AJORM.register(JobOutfit.class, sql, config); + Onset.print("Connected to the database with success"); + } catch (Exception e) { + Onset.print("Error with database connection: " + e.toString()); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java b/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java rename to src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java index d9e3913..f2e3f32 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java +++ b/src/main/java/fr/yuki/yrpf/YukiRPFrameworkPlugin.java @@ -1,664 +1,672 @@ -package fr.yuki.YukiRPFramework; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.luaapi.LuaAPIManager; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.commands.*; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.dao.InventoryDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.modding.ModdingCustomModel; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import fr.yuki.YukiRPFramework.world.RestrictedZone; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.data.Weapon; -import net.onfirenetwork.onsetjava.plugin.Plugin; -import net.onfirenetwork.onsetjava.plugin.event.EventHandler; -import net.onfirenetwork.onsetjava.plugin.event.player.*; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.HashMap; -import java.util.Map; - -@Plugin(name = "YukiRPFramework", author = "Yuki") -public class YukiRPFrameworkPlugin { - - public void onEnable() { - try { - WorldManager.initServerConfig(); - I18n.init(); - Database.init(); - Onset.registerListener(this); - ModdingManager.init(); - MapManager.init(); - InventoryManager.init(); - ItemManager.init(); - CharacterManager.init(); - VehicleManager.init(); - GarageManager.init(); - SoundManager.init(); - WorldManager.init(); - JobManager.init(); - AccountManager.init(); - GrowboxManager.init(); - FuelManager.init(); - PhoneManager.init(); - HouseManager.init(); - TimeManager.init(); - CompagnyManager.init(); - TebexManager.init(); - LuaAPIManager.init(); - - // Register commands - Onset.registerCommand("item", new ItemCommand()); - Onset.registerCommand("loc", new LocCommand()); - Onset.registerCommand("v", new VCommand()); - Onset.registerCommand("vmove", new MoveCommand()); - Onset.registerCommand("dv", new DVCommand()); - Onset.registerCommand("addgatheritem", new AddGatherItemCommand()); - Onset.registerCommand("listgatheritem", new ShowGatherItemListCommand()); - Onset.registerCommand("dct", new DebugCharacterToolCommand()); - Onset.registerCommand("dvsl", new DebugVehicleStorageLayoutCommand()); - Onset.registerCommand("adddelivery", new AddDeliveryPointCommand()); - Onset.registerCommand("setadmin", new SetAdminLevelCommand()); - Onset.registerCommand("ban", new BanCommand()); - Onset.registerCommand("goto", new GotoCommand()); - Onset.registerCommand("bring", new BringCommand()); - Onset.registerCommand("flip", new FlipCommand()); - Onset.registerCommand("lang", new SetLangCommand()); - Onset.registerCommand("dop", new DebugObjectPlacementCommand()); - Onset.registerCommand("setwhitelist", new SetWhitelistCommand()); - Onset.registerCommand("cuff", new CuffCommand()); - Onset.registerCommand("revive", new ReviveCommand()); - Onset.registerCommand("nitro", new NitroCommand()); - Onset.registerCommand("dhouse", new DebugHouseCommand()); - Onset.registerCommand("chouse", new CreateHouseCommand()); - Onset.registerCommand("fhouse", new FreeHouseCommand()); - Onset.registerCommand("houseprops", new SetHousePropsCommand()); - Onset.registerCommand("givehousekey", new GiveHouseKeyCommand()); - Onset.registerCommand("settime", new SetTimeCommand()); - Onset.registerCommand("getid", new GetIdCommand()); - Onset.registerCommand("setcommandlevel", new SetCommandLevelCommand()); - Onset.registerCommand("requestcreation", new RequestCharacterCreationCommand()); - Onset.registerCommand("invis", new InvisCommand()); - Onset.registerCommand("regenphone", new RegenPhoneNumberCommand()); - Onset.registerCommand("ann", new AnnCommand()); - Onset.registerCommand("itemall", new AddItemAllCommand()); - Onset.registerCommand("fgc", new ForceGarbageCommand()); - Onset.registerCommand("debugtest", new DebugTestCommand()); - Onset.registerCommand("kick", new KickCommand()); - Onset.registerCommand("setclothe", new SetClotheCommand()); - Onset.registerCommand("setcharacterscale", new SetCharacterScaleCommand()); - - // Register remote events - Onset.registerRemoteEvent("GlobalUI:ToogleWindow"); - Onset.registerRemoteEvent("Inventory:RequestContent"); - Onset.registerRemoteEvent("Inventory:UseItem"); - Onset.registerRemoteEvent("Object:Interact"); - Onset.registerRemoteEvent("ATM:Deposit"); - Onset.registerRemoteEvent("ATM:Withdraw"); - Onset.registerRemoteEvent("Vehicle:RequestLockToogle"); - Onset.registerRemoteEvent("Garage:RequestVehicle"); - Onset.registerRemoteEvent("Garage:BuyVehicle"); - Onset.registerRemoteEvent("Character:Style:SavePart"); - Onset.registerRemoteEvent("Character:Style:CustomDone"); - Onset.registerRemoteEvent("Global:UIReady"); - Onset.registerRemoteEvent("Job:WearObject"); - Onset.registerRemoteEvent("Job:CharacterJobRequest"); - Onset.registerRemoteEvent("Character:RequestWearFromVehicleChest"); - Onset.registerRemoteEvent("Inventory:ThrowItem"); - Onset.registerRemoteEvent("Seller:BuySellItem"); - Onset.registerRemoteEvent("Object:EditPlacementCancel"); - Onset.registerRemoteEvent("Object:EditPlacement"); - Onset.registerRemoteEvent("Object:EditPlacementDone"); - Onset.registerRemoteEvent("Job:UseJobTool"); - Onset.registerRemoteEvent("Growbox:FillWaterPot"); - Onset.registerRemoteEvent("Growbox:FillSeedPot"); - Onset.registerRemoteEvent("Growbox:HarvestPot"); - Onset.registerRemoteEvent("Growbox:TakePot"); - Onset.registerRemoteEvent("Phone:AddContact"); - Onset.registerRemoteEvent("Phone:RequestContacts"); - Onset.registerRemoteEvent("Phone:RequestSendMessage"); - Onset.registerRemoteEvent("Phone:RequestConversation"); - Onset.registerRemoteEvent("Phone:RequestConversationsList"); - Onset.registerRemoteEvent("House:RequestHouseMenu"); - Onset.registerRemoteEvent("House:RequestBuy"); - Onset.registerRemoteEvent("Object:EditExistingPlacement"); - Onset.registerRemoteEvent("Phone:RequestBuyItemShop"); - Onset.registerRemoteEvent("Weapon:StoreWeapon"); - Onset.registerRemoteEvent("Growbox:Destroy"); - Onset.registerRemoteEvent("ATM:GetInfos"); - Onset.registerRemoteEvent("Phone:RequestCall"); - Onset.registerRemoteEvent("Phone:RequestAnswer"); - Onset.registerRemoteEvent("Phone:RequestEndCall"); - Onset.registerRemoteEvent("Phone:RequestAttachPhone"); - Onset.registerRemoteEvent("SetPlayerEditor"); - Onset.registerRemoteEvent("Phone:RequestUrgency"); - Onset.registerRemoteEvent("Phone:RequestListUrgency"); - Onset.registerRemoteEvent("Phone:SolveUrgency"); - Onset.registerRemoteEvent("Compagny:Create"); - Onset.registerRemoteEvent("Compagny:InviteEmployee"); - Onset.registerRemoteEvent("Compagny:AcceptInvitation"); - Onset.registerRemoteEvent("Compagny:DeclineInvitation"); - Onset.registerRemoteEvent("Compagny:KickEmployee"); - Onset.registerRemoteEvent("Character:Interact"); - Onset.registerRemoteEvent("Character:InspectCharacter"); - Onset.registerRemoteEvent("GenericMenu:Dismiss"); - Onset.registerRemoteEvent("Character:GiveHouseKey"); - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't start the plugin because : " + ex.toString()); - } - } - - @EventHandler - public void onJoin(PlayerSteamAuthEvent evt) { - // Create or update the account - try { - Onset.print("Player joining steamId=" + evt.getPlayer().getSteamId()); - Account account = AccountDAO.findAccountBySteamId(evt.getPlayer().getSteamId()); - ServerConfig serverConfig = WorldManager.getServerConfig(); - - // Clear state - CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); - if(state != null) { - state.setCurrentPhoneCall(null); - state.setCurrentObjectPlacementInstance(null); - state.setCuffed(false); - } - - // Create the account if doesnt exist - if(account == null) { - Onset.print("Create the account for the steamId=" + evt.getPlayer().getSteamId()); - account = AccountDAO.createAccount(evt.getPlayer()); - WorldManager.getAccounts().put(account.getId(), account); - - // Set spawn location - evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), serverConfig.getSpawnPointH()); - evt.getPlayer().setLocation(new Vector(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ())); - evt.getPlayer().setHeading(serverConfig.getSpawnPointH()); - CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); - - // Create the default inventory for character - Inventory inventory = InventoryDAO.createInventory(); - Onset.print("Inventory created id=" + inventory.getId()); - inventory.setInventoryType(1); - inventory.setCharacterId(account.getId()); - InventoryManager.getInventories().put(inventory.getId(), inventory); - inventory.save(); - - // Set properties for the player - evt.getPlayer().setProperty("accountId", account.getId(), true); - } - else { - if(account.getIsBanned()==1) { - evt.getPlayer().kick("You have been banned, bye bye"); - return; - } - - // Set properties for the player - evt.getPlayer().setProperty("accountId", account.getId(), true); - - // evt.getPlayer().setLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ())); - CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(account.getSaveX(), - account.getSaveY(), - account.getSaveZ() + 50, - account.getSaveH())); - - if(account.getCharacterName().equals("Unknown")) { // Recovery - account.setCharacterCreationRequest(1); - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - account.setBankMoney(4000); - Onset.print("Phone number generated : " + account.getPhoneNumber()); - - evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), 0); - CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), - serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); - } else { - evt.getPlayer().setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); - //Onset.broadcast("" + account.getCharacterName() + " est de retour !"); - } - - if(account.getOriginalStyle().equals("")) { - account.setOriginalStyle(account.getCharacterStyle()); - } - // Set weapons - for(Map.Entry weaponEntry : - ((HashMap)new Gson().fromJson(account.getWeapons(), new TypeToken>(){}.getType())).entrySet()) { - evt.getPlayer().setWeapon(weaponEntry.getKey(), weaponEntry.getValue()); - } - } - - // Insert the account in the cache if not exist - if(!WorldManager.getAccounts().containsKey(account.getId())) { - WorldManager.getAccounts().put(account.getId(), account); - } - - JobManager.initCharacterJobs(evt.getPlayer()); - if(CharacterManager.getCharacterStateByPlayer(evt.getPlayer()) == null) - CharacterManager.getCharacterStates().put(evt.getPlayer().getSteamId(), new CharacterState()); - - // Generate a phone number for the player - if(account.getPhoneNumber().trim().equals("")) { - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - AccountDAO.updateAccount(account, null); - Onset.print("Phone number generated : " + account.getPhoneNumber()); - } - - // Attach bag - if(account.getBagId() != -1) { - Account finalAccount = account; - Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == finalAccount.getBagId()) - .findFirst().orElse(null); - state.attachBag(bag, evt.getPlayer()); - } - - // If the player is dead - if(account.getIsDead() == 1) { - evt.getPlayer().setHealth(0); - } else { - evt.getPlayer().setHealth(account.getHealth()); - } - - // Set current time - TimeManager.setCurrentHourForPlayer(evt.getPlayer()); - - // Set modding objects - for(ModdingCustomModel customModel : ModdingManager.getModdingFile().getCustomModels()) { - evt.getPlayer().callRemoteEvent("Modding:AddCustomObject", customModel.getId(), customModel.getPath()); - } - } catch (Exception e) { - e.printStackTrace(); - evt.getPlayer().kick("There is a error for retrieving your account: " + e.toString()); - } - } - - @EventHandler - public void onQuit(PlayerQuitEvent evt) { - Onset.print("Player quit steamId=" + evt.getPlayer().getSteamId()); - WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - Location location = evt.getPlayer().getLocationAndHeading(); - account.setSaveX(location.getX()); - account.setSaveY(location.getY()); - account.setSaveZ(location.getZ()); - account.setSaveH(location.getHeading()); - CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); - if(state != null) { - if(state.getCurrentPhoneCall() != null ){ - state.getCurrentPhoneCall().end(); - } - CharacterManager.getCharacterStates().remove(evt.getPlayer().getSteamId()); - } - WorldManager.savePlayer(evt.getPlayer()); - } - - @EventHandler - public void onRemoteEvent(PlayerRemoteEvent evt) { - try { - Onset.print("Receive remote event name=" + evt.getName()); - switch (evt.getName()) { - case "Inventory:RequestContent": - InventoryManager.handleRequestContent(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestInventoryContentPayload.class)); - break; - - case "Inventory:UseItem": - ItemManager.handleItemUse(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestUseItemPayload.class)); - break; - - case "GlobalUI:ToogleWindow": - UIStateManager.handleUIToogle(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Object:Interact": - WorldManager.handleInteract(evt.getPlayer()); - break; - - case "ATM:Deposit": - ATMManager.handleATMDeposit(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); - break; - - case "ATM:Withdraw": - ATMManager.handleATMWithdraw(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); - break; - - case "ATM:GetInfos": - ATMManager.handleATMGetInfos(evt.getPlayer()); - break; - - case "Vehicle:RequestLockToogle": - VehicleManager.handleVehicleLockRequest(evt.getPlayer()); - break; - - case "Garage:RequestVehicle": - GarageManager.handleRequestVehicle(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Garage:BuyVehicle": - GarageManager.handleRequestBuyVehicle(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestBuyVehiclePayload.class)); - break; - - case "Character:Style:SavePart": - CharacterManager.handleStyleSavePart(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - StyleSavePartPayload.class)); - break; - - case "Character:Style:CustomDone": - CharacterManager.handleCharacterCustomDone(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Global:UIReady": - UIStateManager.handleUIReady(evt.getPlayer()); - break; - - case "Job:WearObject": - JobManager.handleWearObjectRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Character:RequestWearFromVehicleChest": - VehicleManager.handleRequestWearFromVehicleChest(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Inventory:ThrowItem": - InventoryManager.handleThrowItem(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestThrowItemPayload.class)); - break; - - case "Job:CharacterJobRequest": - JobManager.handleRequestCharacterJobs(evt.getPlayer()); - break; - - case "Seller:BuySellItem": - WorldManager.handleBuySellItemSeller(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - BuySellItemRequestPayload.class)); - break; - - case "Object:EditPlacement": - WorldManager.handleObjectRequestPlacement(evt.getPlayer()); - break; - - case "Object:EditPlacementCancel": - WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); - break; - - case "Object:EditPlacementDone": - WorldManager.handleObjectPlacementDone(evt.getPlayer(), - new Vector(Double.parseDouble((evt.getArgs()[0]).toString()), - Double.parseDouble((evt.getArgs()[1]).toString()), Double.parseDouble((evt.getArgs()[2]).toString())), - new Vector(Double.parseDouble((evt.getArgs()[3]).toString()), - Double.parseDouble((evt.getArgs()[4]).toString()), Double.parseDouble((evt.getArgs()[5]).toString()))); - break; - - case "Job:UseJobTool": - JobManager.handleUseJobTool(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Growbox:Destroy": - GrowboxManager.handleGrowboxDestroy(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Growbox:FillWaterPot": - GrowboxManager.handleGrowboxFillWaterPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Growbox:FillSeedPot": - GrowboxManager.handleGrowboxFillSeedPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Growbox:HarvestPot": - GrowboxManager.handleGrowboxHarvestRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Growbox:TakePot": - GrowboxManager.handleGrowboxTakePotRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - GrowboxFillWaterPotPayload.class)); - break; - - case "Phone:RequestContacts": - PhoneManager.handleRequestPhoneContacts(evt.getPlayer()); - break; - - case "Phone:AddContact": - PhoneManager.handleAddPhoneContact(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - PhoneAddContactPayload.class)); - break; - - case "Phone:RequestSendMessage": - PhoneManager.handleRequestSendMessage(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - RequestPhoneSendMessagePayload.class)); - break; - - case "Phone:RequestConversation": - PhoneManager.handleRequestConversation(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Phone:RequestConversationsList": - PhoneManager.handleRequestConversationsList(evt.getPlayer()); - break; - - case "House:RequestHouseMenu": - HouseManager.handleHouseMenu(evt.getPlayer(), evt.getPlayer().getLocation()); - break; - - case "House:RequestBuy": - HouseManager.handleBuyHouseRequest(evt.getPlayer()); - break; - - case "Object:EditExistingPlacement": - WorldManager.handleEditExistingPlacement(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - - case "Phone:RequestBuyItemShop": - HouseManager.handleRequestBuyItemShop(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - - case "Weapon:StoreWeapon": - WeaponManager.storeWeapon(evt.getPlayer()); - break; - - case "Phone:RequestCall": - PhoneManager.handleRequestCall(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Phone:RequestAnswer": - PhoneManager.handleCallAnswer(evt.getPlayer()); - break; - - case "Phone:RequestEndCall": - PhoneManager.handleCallEnd(evt.getPlayer()); - break; - - case "Phone:RequestAttachPhone": - PhoneManager.handleAttachPhone(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "SetPlayerEditor": - ModdingManager.onEditorOpen(evt.getPlayer()); - break; - - case "Phone:RequestUrgency": - PhoneManager.handleUrgencyRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - UrgencyRequestPayload.class)); - break; - - case "Phone:RequestListUrgency": - PhoneManager.handleUrgencyListRequest(evt.getPlayer()); - break; - - case "Phone:SolveUrgency": - PhoneManager.handleUrgencySolveRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), - SolveUrgencyPayload.class)); - break; - - case "Compagny:Create": - CompagnyManager.handleCreateRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Compagny:InviteEmployee": - CompagnyManager.handleInviteEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Compagny:AcceptInvitation": - CompagnyManager.handleAcceptInvitation(evt.getPlayer()); - break; - - case "Compagny:DeclineInvitation": - CompagnyManager.handleDeclineInvitation(evt.getPlayer()); - break; - - case "Compagny:KickEmployee": - CompagnyManager.handleKickEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); - break; - - case "Character:Interact": - CharacterManager.handleCharacterInteract(evt.getPlayer()); - break; - - case "GenericMenu:Dismiss": - CharacterManager.handleGenericMenuDismiss(evt.getPlayer()); - break; - - case "Character:InspectCharacter": - CharacterManager.handleInspectCharacter(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - - case "Character:GiveHouseKey": - HouseManager.handleGiveHouseKey(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); - break; - } - } - catch (Exception ex) { - StringWriter sw = new StringWriter(); - ex.printStackTrace(new PrintWriter(sw)); - Onset.print(sw.toString()); - } - } - - @EventHandler - public void onPlayerVehicleEnter(PlayerEnterVehicleEvent evt) { - Onset.print("Player entered in the vehicle seat="+evt.getSeat()); - VehicleManager.onPlayerEnterVehicle(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); - } - - @EventHandler - public void onPlayerVehicleExit(PlayerExitVehicleEvent evt) { - Onset.print("Player exit in the vehicle seat="+evt.getSeat()); - VehicleManager.onPlayerVehicleExit(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); - } - - @EventHandler - public void onPlayerInteractDoor(PlayerInteractDoorEvent evt) { - House house = HouseManager.getHouseAtLocation(evt.getDoor().getLocation()); - if(house != null) { - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - if(house.getAccountId() == -1) { - HouseManager.handleHouseMenu(evt.getPlayer(), evt.getDoor().getLocation()); - return; - } - if(!HouseManager.canBuildInHouse(evt.getPlayer(), house) && house.isLocked()) { - SoundManager.playSound3D("sounds/toctoc.mp3", evt.getPlayer().getLocation(), 800, 1); - UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.dont_own_it")); - return; - } - } - - // Check Restricted Zone - for(RestrictedZone restrictedZone : WorldManager.getRestrictedZones()) { - if(!restrictedZone.canInteractWithDoor(evt.getPlayer(), evt.getDoor())) { - UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, "Vous n'avez pas le droit d'intéragir avec cette porte"); - return; - } - } - - if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) != null) { - if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) - .getLocation().distance(evt.getPlayer().getLocation()) < VehicleManager.getInteractionDistance(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()))) { - return; - } else { - - evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); - } - } else { - evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); - } - } - - @EventHandler - public void onPlayerDead(PlayerDeathEvent evt) { - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - Location location = evt.getPlayer().getLocationAndHeading(); - account.setSaveX(location.getX()); - account.setSaveY(location.getY()); - account.setSaveZ(location.getZ()); - account.setSaveH(location.getHeading()); - - CharacterManager.onPlayerDeath(evt.getPlayer(), evt.getKiller()); - } - - @EventHandler - public void onPlayerSpawn(PlayerSpawnEvent evt) { - Onset.print("Player spawn steamid="+evt.getPlayer().getSteamId()); - CharacterManager.onPlayerSpawn(evt.getPlayer()); - } - - @EventHandler - public void onPlayerChatMessage(PlayerChatEvent evt) { - Onset.print("Player chat message="+evt.getMessage()); - Account account = WorldManager.getPlayerAccount(evt.getPlayer()); - if(account.getAdminLevel() > 0) { - String color = "ff0000"; - String name = "Staff"; - switch (account.getCommandLevel()) { - case 1: - color = "984fff"; - name = "Helpeur"; - break; - - case 2: - color = "0c42f2"; - name = "Modérateur"; - break; - - case 3: - color = "577eff"; - name = "Modérateur+"; - break; - - case 4: - color = "fc0097"; - name = "Administrateur"; - break; - - case 5: - color = "00ff2a"; - name = "Fondateur"; - break; - } - Onset.broadcast("[" + name + "] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " - + evt.getMessage()); - } else { - Onset.broadcast("[Citoyen] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " - + evt.getMessage()); - } - } -} +package fr.yuki.yrpf; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.luaapi.LuaAPIManager; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.commands.*; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.modding.ModdingCustomModel; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.*; +import fr.yuki.yrpf.utils.ServerConfig; +import fr.yuki.yrpf.world.RestrictedZone; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.data.Weapon; +import net.onfirenetwork.onsetjava.plugin.Plugin; +import net.onfirenetwork.onsetjava.plugin.event.EventHandler; +import net.onfirenetwork.onsetjava.plugin.event.player.*; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.HashMap; +import java.util.Map; + +@Plugin(name = "YukiRPFramework", author = "Yuki") +public class YukiRPFrameworkPlugin { + + public void onEnable() { + try { + WorldManager.initServerConfig(); + I18n.init(); + Database.init(); + Onset.registerListener(this); + ModdingManager.init(); + MapManager.init(); + InventoryManager.init(); + ItemManager.init(); + CharacterManager.init(); + VehicleManager.init(); + GarageManager.init(); + SoundManager.init(); + WorldManager.init(); + JobManager.init(); + AccountManager.init(); + GrowboxManager.init(); + FuelManager.init(); + PhoneManager.init(); + HouseManager.init(); + TimeManager.init(); + CompanyManager.init(); + TebexManager.init(); + LuaAPIManager.init(); + + // Register commands + Onset.registerCommand("item", new ItemCommand()); + Onset.registerCommand("loc", new LocCommand()); + Onset.registerCommand("v", new VCommand()); + Onset.registerCommand("vmove", new MoveCommand()); + Onset.registerCommand("dv", new DVCommand()); + Onset.registerCommand("addgatheritem", new AddGatherItemCommand()); + Onset.registerCommand("listgatheritem", new ShowGatherItemListCommand()); + Onset.registerCommand("dct", new DebugCharacterToolCommand()); + Onset.registerCommand("dvsl", new DebugVehicleStorageLayoutCommand()); + Onset.registerCommand("adddelivery", new AddDeliveryPointCommand()); + Onset.registerCommand("setadmin", new SetAdminLevelCommand()); + Onset.registerCommand("ban", new BanCommand()); + Onset.registerCommand("goto", new GotoCommand()); + Onset.registerCommand("bring", new BringCommand()); + Onset.registerCommand("flip", new FlipCommand()); + Onset.registerCommand("lang", new SetLangCommand()); + Onset.registerCommand("dop", new DebugObjectPlacementCommand()); + Onset.registerCommand("setwhitelist", new SetWhitelistCommand()); + Onset.registerCommand("cuff", new CuffCommand()); + Onset.registerCommand("revive", new ReviveCommand()); + Onset.registerCommand("nitro", new NitroCommand()); + Onset.registerCommand("dhouse", new DebugHouseCommand()); + Onset.registerCommand("chouse", new CreateHouseCommand()); + Onset.registerCommand("fhouse", new FreeHouseCommand()); + Onset.registerCommand("houseprops", new SetHousePropsCommand()); + Onset.registerCommand("givehousekey", new GiveHouseKeyCommand()); + Onset.registerCommand("settime", new SetTimeCommand()); + Onset.registerCommand("getid", new GetIdCommand()); + Onset.registerCommand("setcommandlevel", new SetCommandLevelCommand()); + Onset.registerCommand("requestcreation", new RequestCharacterCreationCommand()); + Onset.registerCommand("invis", new InvisCommand()); + Onset.registerCommand("regenphone", new RegenPhoneNumberCommand()); + Onset.registerCommand("ann", new AnnCommand()); + Onset.registerCommand("itemall", new AddItemAllCommand()); + Onset.registerCommand("fgc", new ForceGarbageCommand()); + Onset.registerCommand("debugtest", new DebugTestCommand()); + Onset.registerCommand("kick", new KickCommand()); + Onset.registerCommand("setclothe", new SetClotheCommand()); + Onset.registerCommand("setcharacterscale", new SetCharacterScaleCommand()); + + // Register remote events + Onset.registerRemoteEvent("GlobalUI:ToogleWindow"); + Onset.registerRemoteEvent("Inventory:RequestContent"); + Onset.registerRemoteEvent("Inventory:UseItem"); + Onset.registerRemoteEvent("Object:Interact"); + Onset.registerRemoteEvent("ATM:Deposit"); + Onset.registerRemoteEvent("ATM:Withdraw"); + Onset.registerRemoteEvent("Vehicle:RequestLockToogle"); + Onset.registerRemoteEvent("Garage:RequestVehicle"); + Onset.registerRemoteEvent("Garage:BuyVehicle"); + Onset.registerRemoteEvent("Character:Style:SavePart"); + Onset.registerRemoteEvent("Character:Style:CustomDone"); + Onset.registerRemoteEvent("Global:UIReady"); + Onset.registerRemoteEvent("Job:WearObject"); + Onset.registerRemoteEvent("Job:CharacterJobRequest"); + Onset.registerRemoteEvent("Character:RequestWearFromVehicleChest"); + Onset.registerRemoteEvent("Inventory:ThrowItem"); + Onset.registerRemoteEvent("Seller:BuySellItem"); + Onset.registerRemoteEvent("Object:EditPlacementCancel"); + Onset.registerRemoteEvent("Object:EditPlacement"); + Onset.registerRemoteEvent("Object:EditPlacementDone"); + Onset.registerRemoteEvent("Job:UseJobTool"); + Onset.registerRemoteEvent("Growbox:FillWaterPot"); + Onset.registerRemoteEvent("Growbox:FillSeedPot"); + Onset.registerRemoteEvent("Growbox:HarvestPot"); + Onset.registerRemoteEvent("Growbox:TakePot"); + Onset.registerRemoteEvent("Phone:AddContact"); + Onset.registerRemoteEvent("Phone:RequestContacts"); + Onset.registerRemoteEvent("Phone:RequestSendMessage"); + Onset.registerRemoteEvent("Phone:RequestConversation"); + Onset.registerRemoteEvent("Phone:RequestConversationsList"); + Onset.registerRemoteEvent("House:RequestHouseMenu"); + Onset.registerRemoteEvent("House:RequestBuy"); + Onset.registerRemoteEvent("Object:EditExistingPlacement"); + Onset.registerRemoteEvent("Phone:RequestBuyItemShop"); + Onset.registerRemoteEvent("Weapon:StoreWeapon"); + Onset.registerRemoteEvent("Growbox:Destroy"); + Onset.registerRemoteEvent("ATM:GetInfos"); + Onset.registerRemoteEvent("Phone:RequestCall"); + Onset.registerRemoteEvent("Phone:RequestAnswer"); + Onset.registerRemoteEvent("Phone:RequestEndCall"); + Onset.registerRemoteEvent("Phone:RequestAttachPhone"); + Onset.registerRemoteEvent("SetPlayerEditor"); + Onset.registerRemoteEvent("Phone:RequestUrgency"); + Onset.registerRemoteEvent("Phone:RequestListUrgency"); + Onset.registerRemoteEvent("Phone:SolveUrgency"); + Onset.registerRemoteEvent("Compagny:Create"); + Onset.registerRemoteEvent("Compagny:InviteEmployee"); + Onset.registerRemoteEvent("Compagny:AcceptInvitation"); + Onset.registerRemoteEvent("Compagny:DeclineInvitation"); + Onset.registerRemoteEvent("Compagny:KickEmployee"); + Onset.registerRemoteEvent("Character:Interact"); + Onset.registerRemoteEvent("Character:InspectCharacter"); + Onset.registerRemoteEvent("GenericMenu:Dismiss"); + Onset.registerRemoteEvent("Character:GiveHouseKey"); + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't start the plugin because : " + ex.toString()); + } + } + + @EventHandler + public void onJoin(PlayerSteamAuthEvent evt) { + // Create or update the account + try { + Onset.print("Player joining steamId=" + evt.getPlayer().getSteamId()); + Account account = Repo.get(Account.class).where("steamId", evt.getPlayer().getSteamId()).get(); + ServerConfig serverConfig = WorldManager.getServerConfig(); + + // Clear state + CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); + if(state != null) { + state.setCurrentPhoneCall(null); + state.setCurrentObjectPlacementInstance(null); + state.setCuffed(false); + } + + // Create the account if doesnt exist + if(account == null) { + Onset.print("Create the account for the steamId=" + evt.getPlayer().getSteamId()); + + account = new Account(); + account.setSteamName(evt.getPlayer().getName()); + account.setSteamId(evt.getPlayer().getSteamId()); + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.setSaveX(serverConfig.getSpawnPointX()); + account.setSaveY(serverConfig.getSpawnPointY()); + account.setSaveZ(serverConfig.getSpawnPointZ()); + account.setSaveH(serverConfig.getSpawnPointH()); + account.save(); + WorldManager.getAccounts().put(account.getId(), account); + + // Set spawn location + evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), serverConfig.getSpawnPointH()); + evt.getPlayer().setLocation(new Vector(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ())); + evt.getPlayer().setHeading(serverConfig.getSpawnPointH()); + CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); + + // Create the default inventory for character + Inventory inventory = new Inventory(); + inventory.save(); + Onset.print("Inventory created id=" + inventory.getId()); + inventory.setInventoryType(1); + inventory.setCharacterId(account.getId()); + InventoryManager.getInventories().put(inventory.getId(), inventory); + inventory.save(); + + // Set properties for the player + evt.getPlayer().setProperty("accountId", account.getId(), true); + } + else { + if(account.isBanned()) { + evt.getPlayer().kick("You have been banned, bye bye"); + return; + } + + // Set properties for the player + evt.getPlayer().setProperty("accountId", account.getId(), true); + + // evt.getPlayer().setLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ())); + CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(account.getSaveX(), + account.getSaveY(), + account.getSaveZ() + 50, + account.getSaveH())); + + if(account.getCharacterName().equals("Unknown")) { // Recovery + account.setCharacterCreationRequest(true); + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.setBankMoney(4000); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + + evt.getPlayer().setSpawnLocation(new Vector(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ()), 0); + CharacterManager.teleportWithLevelLoading(evt.getPlayer(), new Location(serverConfig.getSpawnPointX(), + serverConfig.getSpawnPointY(), serverConfig.getSpawnPointZ(), serverConfig.getSpawnPointH())); + } else { + evt.getPlayer().setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); + //Onset.broadcast("" + account.getCharacterName() + " est de retour !"); + } + + if(account.getOriginalStyle().equals("")) { + account.setOriginalStyle(account.getCharacterStyle()); + } + // Set weapons + for(Map.Entry weaponEntry : + ((HashMap)new Gson().fromJson(account.getWeapons(), new TypeToken>(){}.getType())).entrySet()) { + evt.getPlayer().setWeapon(weaponEntry.getKey(), weaponEntry.getValue()); + } + } + + // Insert the account in the cache if not exist + if(!WorldManager.getAccounts().containsKey(account.getId())) { + WorldManager.getAccounts().put(account.getId(), account); + } + + JobManager.initCharacterJobs(evt.getPlayer()); + if(CharacterManager.getCharacterStateByPlayer(evt.getPlayer()) == null) + CharacterManager.getCharacterStates().put(evt.getPlayer().getSteamId(), new CharacterState()); + + // Generate a phone number for the player + if(account.getPhoneNumber().trim().equals("")) { + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.save(); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + } + + // Attach bag + if(account.getBagId() != -1) { + Account finalAccount = account; + Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == finalAccount.getBagId()) + .findFirst().orElse(null); + state.attachBag(bag, evt.getPlayer()); + } + + // If the player is dead + if(account.isDead()) { + evt.getPlayer().setHealth(0); + } else { + evt.getPlayer().setHealth(account.getHealth()); + } + + // Set current time + TimeManager.setCurrentHourForPlayer(evt.getPlayer()); + + // Set modding objects + for(ModdingCustomModel customModel : ModdingManager.getModdingFile().getCustomModels()) { + evt.getPlayer().callRemoteEvent("Modding:AddCustomObject", customModel.getId(), customModel.getPath()); + } + } catch (Exception e) { + e.printStackTrace(); + evt.getPlayer().kick("There is a error for retrieving your account: " + e.toString()); + } + } + + @EventHandler + public void onQuit(PlayerQuitEvent evt) { + Onset.print("Player quit steamId=" + evt.getPlayer().getSteamId()); + WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + Location location = evt.getPlayer().getLocationAndHeading(); + account.setSaveX(location.getX()); + account.setSaveY(location.getY()); + account.setSaveZ(location.getZ()); + account.setSaveH(location.getHeading()); + CharacterState state = CharacterManager.getCharacterStateByPlayer(evt.getPlayer()); + if(state != null) { + if(state.getCurrentPhoneCall() != null ){ + state.getCurrentPhoneCall().end(); + } + CharacterManager.getCharacterStates().remove(evt.getPlayer().getSteamId()); + } + WorldManager.savePlayer(evt.getPlayer()); + } + + @EventHandler + public void onRemoteEvent(PlayerRemoteEvent evt) { + try { + Onset.print("Receive remote event name=" + evt.getName()); + switch (evt.getName()) { + case "Inventory:RequestContent": + InventoryManager.handleRequestContent(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestInventoryContentPayload.class)); + break; + + case "Inventory:UseItem": + ItemManager.handleItemUse(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestUseItemPayload.class)); + break; + + case "GlobalUI:ToogleWindow": + UIStateManager.handleUIToogle(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Object:Interact": + WorldManager.handleInteract(evt.getPlayer()); + break; + + case "ATM:Deposit": + ATMManager.handleATMDeposit(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); + break; + + case "ATM:Withdraw": + ATMManager.handleATMWithdraw(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString())); + break; + + case "ATM:GetInfos": + ATMManager.handleATMGetInfos(evt.getPlayer()); + break; + + case "Vehicle:RequestLockToogle": + VehicleManager.handleVehicleLockRequest(evt.getPlayer()); + break; + + case "Garage:RequestVehicle": + GarageManager.handleRequestVehicle(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Garage:BuyVehicle": + GarageManager.handleRequestBuyVehicle(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestBuyVehiclePayload.class)); + break; + + case "Character:Style:SavePart": + CharacterManager.handleStyleSavePart(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + StyleSavePartPayload.class)); + break; + + case "Character:Style:CustomDone": + CharacterManager.handleCharacterCustomDone(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Global:UIReady": + UIStateManager.handleUIReady(evt.getPlayer()); + break; + + case "Job:WearObject": + JobManager.handleWearObjectRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Character:RequestWearFromVehicleChest": + VehicleManager.handleRequestWearFromVehicleChest(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Inventory:ThrowItem": + InventoryManager.handleThrowItem(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestThrowItemPayload.class)); + break; + + case "Job:CharacterJobRequest": + JobManager.handleRequestCharacterJobs(evt.getPlayer()); + break; + + case "Seller:BuySellItem": + WorldManager.handleBuySellItemSeller(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + BuySellItemRequestPayload.class)); + break; + + case "Object:EditPlacement": + WorldManager.handleObjectRequestPlacement(evt.getPlayer()); + break; + + case "Object:EditPlacementCancel": + WorldManager.handleObjectEditPlacementCancel(evt.getPlayer()); + break; + + case "Object:EditPlacementDone": + WorldManager.handleObjectPlacementDone(evt.getPlayer(), + new Vector(Double.parseDouble((evt.getArgs()[0]).toString()), + Double.parseDouble((evt.getArgs()[1]).toString()), Double.parseDouble((evt.getArgs()[2]).toString())), + new Vector(Double.parseDouble((evt.getArgs()[3]).toString()), + Double.parseDouble((evt.getArgs()[4]).toString()), Double.parseDouble((evt.getArgs()[5]).toString()))); + break; + + case "Job:UseJobTool": + JobManager.handleUseJobTool(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Growbox:Destroy": + GrowboxManager.handleGrowboxDestroy(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Growbox:FillWaterPot": + GrowboxManager.handleGrowboxFillWaterPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Growbox:FillSeedPot": + GrowboxManager.handleGrowboxFillSeedPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Growbox:HarvestPot": + GrowboxManager.handleGrowboxHarvestRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Growbox:TakePot": + GrowboxManager.handleGrowboxTakePotRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + GrowboxFillWaterPotPayload.class)); + break; + + case "Phone:RequestContacts": + PhoneManager.handleRequestPhoneContacts(evt.getPlayer()); + break; + + case "Phone:AddContact": + PhoneManager.handleAddPhoneContact(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + PhoneAddContactPayload.class)); + break; + + case "Phone:RequestSendMessage": + PhoneManager.handleRequestSendMessage(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + RequestPhoneSendMessagePayload.class)); + break; + + case "Phone:RequestConversation": + PhoneManager.handleRequestConversation(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Phone:RequestConversationsList": + PhoneManager.handleRequestConversationsList(evt.getPlayer()); + break; + + case "House:RequestHouseMenu": + HouseManager.handleHouseMenu(evt.getPlayer(), evt.getPlayer().getLocation()); + break; + + case "House:RequestBuy": + HouseManager.handleBuyHouseRequest(evt.getPlayer()); + break; + + case "Object:EditExistingPlacement": + WorldManager.handleEditExistingPlacement(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + + case "Phone:RequestBuyItemShop": + HouseManager.handleRequestBuyItemShop(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + + case "Weapon:StoreWeapon": + WeaponManager.storeWeapon(evt.getPlayer()); + break; + + case "Phone:RequestCall": + PhoneManager.handleRequestCall(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Phone:RequestAnswer": + PhoneManager.handleCallAnswer(evt.getPlayer()); + break; + + case "Phone:RequestEndCall": + PhoneManager.handleCallEnd(evt.getPlayer()); + break; + + case "Phone:RequestAttachPhone": + PhoneManager.handleAttachPhone(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "SetPlayerEditor": + ModdingManager.onEditorOpen(evt.getPlayer()); + break; + + case "Phone:RequestUrgency": + PhoneManager.handleUrgencyRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + UrgencyRequestPayload.class)); + break; + + case "Phone:RequestListUrgency": + PhoneManager.handleUrgencyListRequest(evt.getPlayer()); + break; + + case "Phone:SolveUrgency": + PhoneManager.handleUrgencySolveRequest(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(), + SolveUrgencyPayload.class)); + break; + + case "Compagny:Create": + CompanyManager.handleCreateRequest(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Compagny:InviteEmployee": + CompanyManager.handleInviteEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Compagny:AcceptInvitation": + CompanyManager.handleAcceptInvitation(evt.getPlayer()); + break; + + case "Compagny:DeclineInvitation": + CompanyManager.handleDeclineInvitation(evt.getPlayer()); + break; + + case "Compagny:KickEmployee": + CompanyManager.handleKickEmployee(evt.getPlayer(), (evt.getArgs()[0]).toString()); + break; + + case "Character:Interact": + CharacterManager.handleCharacterInteract(evt.getPlayer()); + break; + + case "GenericMenu:Dismiss": + CharacterManager.handleGenericMenuDismiss(evt.getPlayer()); + break; + + case "Character:InspectCharacter": + CharacterManager.handleInspectCharacter(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + + case "Character:GiveHouseKey": + HouseManager.handleGiveHouseKey(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString())); + break; + } + } + catch (Exception ex) { + StringWriter sw = new StringWriter(); + ex.printStackTrace(new PrintWriter(sw)); + Onset.print(sw.toString()); + } + } + + @EventHandler + public void onPlayerVehicleEnter(PlayerEnterVehicleEvent evt) { + Onset.print("Player entered in the vehicle seat="+evt.getSeat()); + VehicleManager.onPlayerEnterVehicle(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); + } + + @EventHandler + public void onPlayerVehicleExit(PlayerExitVehicleEvent evt) { + Onset.print("Player exit in the vehicle seat="+evt.getSeat()); + VehicleManager.onPlayerVehicleExit(evt.getPlayer(), evt.getVehicle(), evt.getSeat()); + } + + @EventHandler + public void onPlayerInteractDoor(PlayerInteractDoorEvent evt) { + House house = HouseManager.getHouseAtLocation(evt.getDoor().getLocation()); + if(house != null) { + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + if(house.getAccountId() == -1) { + HouseManager.handleHouseMenu(evt.getPlayer(), evt.getDoor().getLocation()); + return; + } + if(!HouseManager.canBuildInHouse(evt.getPlayer(), house) && house.isLocked()) { + SoundManager.playSound3D("sounds/toctoc.mp3", evt.getPlayer().getLocation(), 800, 1); + UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.dont_own_it")); + return; + } + } + + // Check Restricted Zone + for(RestrictedZone restrictedZone : WorldManager.getRestrictedZones()) { + if(!restrictedZone.canInteractWithDoor(evt.getPlayer(), evt.getDoor())) { + UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, "Vous n'avez pas le droit d'intéragir avec cette porte"); + return; + } + } + + if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) != null) { + if(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()) + .getLocation().distance(evt.getPlayer().getLocation()) < VehicleManager.getInteractionDistance(VehicleManager.getNearestVehicle(evt.getPlayer().getLocation()))) { + return; + } else { + + evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); + } + } else { + evt.getDoor().setOpen(evt.getDoor().isOpen() ? false : true); + } + } + + @EventHandler + public void onPlayerDead(PlayerDeathEvent evt) { + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + Location location = evt.getPlayer().getLocationAndHeading(); + account.setSaveX(location.getX()); + account.setSaveY(location.getY()); + account.setSaveZ(location.getZ()); + account.setSaveH(location.getHeading()); + + CharacterManager.onPlayerDeath(evt.getPlayer(), evt.getKiller()); + } + + @EventHandler + public void onPlayerSpawn(PlayerSpawnEvent evt) { + Onset.print("Player spawn steamid="+evt.getPlayer().getSteamId()); + CharacterManager.onPlayerSpawn(evt.getPlayer()); + } + + @EventHandler + public void onPlayerChatMessage(PlayerChatEvent evt) { + Onset.print("Player chat message="+evt.getMessage()); + Account account = WorldManager.getPlayerAccount(evt.getPlayer()); + if(account.getAdminLevel() > 0) { + String color = "ff0000"; + String name = "Staff"; + switch (account.getCommandLevel()) { + case 1: + color = "984fff"; + name = "Helpeur"; + break; + + case 2: + color = "0c42f2"; + name = "Modérateur"; + break; + + case 3: + color = "577eff"; + name = "Modérateur+"; + break; + + case 4: + color = "fc0097"; + name = "Administrateur"; + break; + + case 5: + color = "00ff2a"; + name = "Fondateur"; + break; + } + Onset.broadcast("[" + name + "] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " + + evt.getMessage()); + } else { + Onset.broadcast("[Citoyen] " + account.getCharacterName() + "(" + evt.getPlayer().getId() + "): " + + evt.getMessage()); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterJobLevel.java b/src/main/java/fr/yuki/yrpf/character/CharacterJobLevel.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterJobLevel.java rename to src/main/java/fr/yuki/yrpf/character/CharacterJobLevel.java index ff4b0ce..518ad21 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterJobLevel.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterJobLevel.java @@ -1,40 +1,40 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.JobLevel; - -import java.util.ArrayList; -import java.util.stream.Collectors; - -public class CharacterJobLevel { - private String jobId; - private int exp; - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public int getExp() { - return exp; - } - - public void setExp(int exp) { - this.exp = exp; - } - - public JobLevel getJobLevel() { - ArrayList levels = new ArrayList<>(JobManager.getJobLevels().stream() - .filter(x -> x.getJobId().equals(this.getJobId())).collect(Collectors.toList())); - JobLevel level = levels.get(0); - for(JobLevel l : levels) { - if(l.getLevel() > level.getLevel() && this.getExp() >= l.getExpFloor()) { - level = l; - } - } - return level; - } -} +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.JobLevel; + +import java.util.ArrayList; +import java.util.stream.Collectors; + +public class CharacterJobLevel { + private String jobId; + private int exp; + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public int getExp() { + return exp; + } + + public void setExp(int exp) { + this.exp = exp; + } + + public JobLevel getJobLevel() { + ArrayList levels = new ArrayList<>(JobManager.getJobLevels().stream() + .filter(x -> x.getJobId().equals(this.getJobId())).collect(Collectors.toList())); + JobLevel level = levels.get(0); + for(JobLevel l : levels) { + if(l.getLevel() > level.getLevel() && this.getExp() >= l.getExpFloor()) { + level = l; + } + } + return level; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterLoopAnimation.java b/src/main/java/fr/yuki/yrpf/character/CharacterLoopAnimation.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterLoopAnimation.java rename to src/main/java/fr/yuki/yrpf/character/CharacterLoopAnimation.java index 145a86e..b19206a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterLoopAnimation.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterLoopAnimation.java @@ -1,139 +1,139 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class CharacterLoopAnimation { - private Player player; - private String animation; - private int loopInterval; - private int loopAmount; - private String loopSound; - private boolean isActive = false; - private CharacterToolAnimation characterToolAnimation; - - public CharacterLoopAnimation(String animation, int loopInterval, int loopAmount, - String loopSound) { - this.animation = animation; - this.loopInterval = loopInterval; - this.loopAmount = loopAmount; - this.loopSound = loopSound; - } - - public CharacterLoopAnimation(Player player, String animation, int loopInterval, int loopAmount, - String loopSound) { - this.player = player; - this.animation = animation.toString(); - this.loopInterval = loopInterval; - this.loopAmount = loopAmount; - this.loopSound = loopSound; - } - - public CharacterLoopAnimation(Player player, Animation animation, int loopInterval, int loopAmount, - String loopSound) { - this.player = player; - this.animation = animation.toString(); - this.loopInterval = loopInterval; - this.loopAmount = loopAmount; - this.loopSound = loopSound; - } - - public void start() { - this.isActive = true; - if(!loopSound.equals("")) { - SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); - } - - // Attach the tool - if(characterToolAnimation != null) { - this.attachTool(); - } - - this.player.setAnimation(this.animation); - for(int i = 1; i <= loopAmount; i++) { - int currentI = i; - Onset.delay(loopInterval * i, () -> { - if (!this.isActive) return; - this.player.setAnimation(this.animation); - - if(!loopSound.equals("") && currentI != loopAmount) { - SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); - } - }); - } - } - - private void attachTool() { - this.characterToolAnimation.attach(this.player); - } - - public void setTool(CharacterToolAnimation characterToolAnimation) { - this.characterToolAnimation = characterToolAnimation; - } - - public void stop() { - this.isActive = false; - if(characterToolAnimation != null) { - this.characterToolAnimation.unAttach(); - } - this.player.setAnimation(Animation.STOP); - } - - public Player getPlayer() { - return player; - } - - public void setPlayer(Player player) { - this.player = player; - } - - public String getAnimation() { - return animation; - } - - public void setAnimation(String animation) { - this.animation = animation; - } - - public int getLoopInterval() { - return loopInterval; - } - - public void setLoopInterval(int loopInterval) { - this.loopInterval = loopInterval; - } - - public int getLoopAmount() { - return loopAmount; - } - - public void setLoopAmount(int loopAmount) { - this.loopAmount = loopAmount; - } - - public String getLoopSound() { - return loopSound; - } - - public void setLoopSound(String loopSound) { - this.loopSound = loopSound; - } - - public boolean isActive() { - return isActive; - } - - public void setActive(boolean active) { - isActive = active; - } - - public CharacterToolAnimation getCharacterToolAnimation() { - return characterToolAnimation; - } - - public void setCharacterToolAnimation(CharacterToolAnimation characterToolAnimation) { - this.characterToolAnimation = characterToolAnimation; - } -} +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.manager.SoundManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +public class CharacterLoopAnimation { + private Player player; + private String animation; + private int loopInterval; + private int loopAmount; + private String loopSound; + private boolean isActive = false; + private CharacterToolAnimation characterToolAnimation; + + public CharacterLoopAnimation(String animation, int loopInterval, int loopAmount, + String loopSound) { + this.animation = animation; + this.loopInterval = loopInterval; + this.loopAmount = loopAmount; + this.loopSound = loopSound; + } + + public CharacterLoopAnimation(Player player, String animation, int loopInterval, int loopAmount, + String loopSound) { + this.player = player; + this.animation = animation.toString(); + this.loopInterval = loopInterval; + this.loopAmount = loopAmount; + this.loopSound = loopSound; + } + + public CharacterLoopAnimation(Player player, Animation animation, int loopInterval, int loopAmount, + String loopSound) { + this.player = player; + this.animation = animation.toString(); + this.loopInterval = loopInterval; + this.loopAmount = loopAmount; + this.loopSound = loopSound; + } + + public void start() { + this.isActive = true; + if(!loopSound.equals("")) { + SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); + } + + // Attach the tool + if(characterToolAnimation != null) { + this.attachTool(); + } + + this.player.setAnimation(this.animation); + for(int i = 1; i <= loopAmount; i++) { + int currentI = i; + Onset.delay(loopInterval * i, () -> { + if (!this.isActive) return; + this.player.setAnimation(this.animation); + + if(!loopSound.equals("") && currentI != loopAmount) { + SoundManager.playSound3D(this.loopSound, this.player.getLocation(), 1500, 1); + } + }); + } + } + + private void attachTool() { + this.characterToolAnimation.attach(this.player); + } + + public void setTool(CharacterToolAnimation characterToolAnimation) { + this.characterToolAnimation = characterToolAnimation; + } + + public void stop() { + this.isActive = false; + if(characterToolAnimation != null) { + this.characterToolAnimation.unAttach(); + } + this.player.setAnimation(Animation.STOP); + } + + public Player getPlayer() { + return player; + } + + public void setPlayer(Player player) { + this.player = player; + } + + public String getAnimation() { + return animation; + } + + public void setAnimation(String animation) { + this.animation = animation; + } + + public int getLoopInterval() { + return loopInterval; + } + + public void setLoopInterval(int loopInterval) { + this.loopInterval = loopInterval; + } + + public int getLoopAmount() { + return loopAmount; + } + + public void setLoopAmount(int loopAmount) { + this.loopAmount = loopAmount; + } + + public String getLoopSound() { + return loopSound; + } + + public void setLoopSound(String loopSound) { + this.loopSound = loopSound; + } + + public boolean isActive() { + return isActive; + } + + public void setActive(boolean active) { + isActive = active; + } + + public CharacterToolAnimation getCharacterToolAnimation() { + return characterToolAnimation; + } + + public void setCharacterToolAnimation(CharacterToolAnimation characterToolAnimation) { + this.characterToolAnimation = characterToolAnimation; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java b/src/main/java/fr/yuki/yrpf/character/CharacterState.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java rename to src/main/java/fr/yuki/yrpf/character/CharacterState.java index 781fb59..dd01aee 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterState.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterState.java @@ -1,235 +1,225 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Bag; -import fr.yuki.YukiRPFramework.model.Mask; -import fr.yuki.YukiRPFramework.phone.PhoneCall; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class CharacterState { - private WearableWorldObject wearableWorldObject; - private boolean isDead = false; - private boolean firstSpawn = true; - private boolean hasUIReady = false; - private ObjectPlacementInstance currentObjectPlacementInstance = null; - private boolean cuffed = false; - private UIState uiState = null; - private Line3D currentDisplayedLine3D = null; - private ArrayList lastLocationsRequest = new ArrayList<>(); - private Mask currentMask = null; - private WorldObject maskWorldObject = null; - private Bag currentBag = null; - private WorldObject bagWorldObject = null; - private PhoneCall currentPhoneCall = null; - private int currentCompagnyInvited = -1; - private CharacterToolAnimation currentPhoneAttached = null; - private GenericMenu currentGenericMenu = null; - private boolean isInvisible = false; - - public CharacterState() { - this.uiState = new UIState(); - } - - public WearableWorldObject getWearableWorldObject() { - return wearableWorldObject; - } - - public void setWearableWorldObject(Player player, WearableWorldObject wearableWorldObject) { - this.wearableWorldObject = wearableWorldObject; - if(this.wearableWorldObject != null) { - player.setProperty("wearId", this.wearableWorldObject.getUuid(), true); - } else { - player.setProperty("wearId", "", true); - } - } - - public boolean isDead() { - return isDead; - } - - public void setDead(boolean dead) { - isDead = dead; - } - - public boolean isFirstSpawn() { - return firstSpawn; - } - - public void setFirstSpawn(boolean firstSpawn) { - Onset.print("FirstSpawn: " + firstSpawn); - this.firstSpawn = firstSpawn; - } - - public ObjectPlacementInstance getCurrentObjectPlacementInstance() { - return currentObjectPlacementInstance; - } - - public void setCurrentObjectPlacementInstance(ObjectPlacementInstance currentObjectPlacementInstance) { - this.currentObjectPlacementInstance = currentObjectPlacementInstance; - } - - public boolean isCuffed() { - return cuffed; - } - - public void setCuffed(boolean cuffed) { - this.cuffed = cuffed; - } - - public boolean canInteract() { - if(this.isDead) return false; - if(this.cuffed) return false; - if(this.getCurrentObjectPlacementInstance() != null) return false; - return true; - } - - public UIState getUiState() { - return uiState; - } - - public Line3D getCurrentDisplayedLine3D() { - return currentDisplayedLine3D; - } - - public void setCurrentDisplayedLine3D(Line3D currentDisplayedLine3D) { - this.currentDisplayedLine3D = currentDisplayedLine3D; - } - - public ArrayList getLastLocationsRequest() { - return lastLocationsRequest; - } - - public void setLastLocationsRequest(ArrayList lastLocationsRequest) { - this.lastLocationsRequest = lastLocationsRequest; - } - - public void attachMask(Mask mask, Player player) { - if(this.maskWorldObject != null) { - this.maskWorldObject.destroy(); - } - this.currentMask = mask; - Onset.print("Attach mask id: " + mask.getModelId()); - this.maskWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), mask.getModelId()); - this.maskWorldObject.attach(player, new Vector(mask.getX(), mask.getY(), mask.getZ()), new Vector(mask.getRx(), mask.getRy(), mask.getRz()), mask.getSocket()); - if(ModdingManager.isCustomModelId(mask.getModelId())) ModdingManager.assignCustomModel(this.maskWorldObject, mask.getModelId()); - this.maskWorldObject.setScale(new Vector(mask.getSx(), mask.getSy(), mask.getSz())); - } - - public void unattachMask() { - if(this.maskWorldObject != null) { - this.maskWorldObject.destroy(); - } - this.currentMask = null; - } - - public void attachBag(Bag bag, Player player) { - if(this.bagWorldObject != null) { - this.bagWorldObject.destroy(); - } - Account account = WorldManager.getPlayerAccount(player); - this.currentBag = bag; - Onset.print("Attach bag id: " + bag.getModelId()); - this.bagWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), bag.getModelId()); - this.bagWorldObject.attach(player, new Vector(bag.getX(), bag.getY(), bag.getZ()), new Vector(bag.getRx(), bag.getRy(), bag.getRz()), bag.getSocket()); - if(ModdingManager.isCustomModelId(bag.getModelId())) ModdingManager.assignCustomModel(this.bagWorldObject, bag.getModelId()); - this.bagWorldObject.setScale(new Vector(bag.getSx(), bag.getSy(), bag.getSz())); - account.setBagId(this.currentBag.getModelId()); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } - - public void unattachBag(Player player) { - if(this.bagWorldObject != null) { - this.bagWorldObject.destroy(); - } - Account account = WorldManager.getPlayerAccount(player); - this.currentBag = null; - account.setBagId(-1); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } - - public Mask getCurrentMask() { - return currentMask; - } - - public void setCurrentMask(Mask currentMask) { - this.currentMask = currentMask; - } - - public Bag getCurrentBag() { - return currentBag; - } - - public void setCurrentBag(Bag currentBag) { - this.currentBag = currentBag; - } - - public boolean isHasUIReady() { - return hasUIReady; - } - - public void setHasUIReady(boolean hasUIReady) { - this.hasUIReady = hasUIReady; - } - - public PhoneCall getCurrentPhoneCall() { - return currentPhoneCall; - } - - public void setCurrentPhoneCall(PhoneCall currentPhoneCall) { - this.currentPhoneCall = currentPhoneCall; - } - - public CharacterToolAnimation getCurrentPhoneAttached() { - return currentPhoneAttached; - } - - public void setCurrentPhoneAttached(CharacterToolAnimation currentPhoneAttached) { - this.currentPhoneAttached = currentPhoneAttached; - } - - public int getCurrentCompagnyInvited() { - return currentCompagnyInvited; - } - - public void setCurrentCompagnyInvited(int currentCompagnyInvited) { - this.currentCompagnyInvited = currentCompagnyInvited; - } - - public GenericMenu getCurrentGenericMenu() { - return currentGenericMenu; - } - - public void setCurrentGenericMenu(GenericMenu currentGenericMenu) { - this.currentGenericMenu = currentGenericMenu; - } - - public boolean isInvisible() { - return isInvisible; - } - - public void setInvisible(boolean invisible) { - isInvisible = invisible; - } -} +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Bag; +import fr.yuki.yrpf.model.Mask; +import fr.yuki.yrpf.phone.PhoneCall; +import fr.yuki.yrpf.ui.GenericMenu; +import fr.yuki.yrpf.ui.UIState; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.ArrayList; + +public class CharacterState { + private WearableWorldObject wearableWorldObject; + private boolean isDead = false; + private boolean firstSpawn = true; + private boolean hasUIReady = false; + private ObjectPlacementInstance currentObjectPlacementInstance = null; + private boolean cuffed = false; + private UIState uiState = null; + private Line3D currentDisplayedLine3D = null; + private ArrayList lastLocationsRequest = new ArrayList<>(); + private Mask currentMask = null; + private WorldObject maskWorldObject = null; + private Bag currentBag = null; + private WorldObject bagWorldObject = null; + private PhoneCall currentPhoneCall = null; + private int currentCompagnyInvited = -1; + private CharacterToolAnimation currentPhoneAttached = null; + private GenericMenu currentGenericMenu = null; + private boolean isInvisible = false; + + public CharacterState() { + this.uiState = new UIState(); + } + + public WearableWorldObject getWearableWorldObject() { + return wearableWorldObject; + } + + public void setWearableWorldObject(Player player, WearableWorldObject wearableWorldObject) { + this.wearableWorldObject = wearableWorldObject; + if(this.wearableWorldObject != null) { + player.setProperty("wearId", this.wearableWorldObject.getUuid(), true); + } else { + player.setProperty("wearId", "", true); + } + } + + public boolean isDead() { + return isDead; + } + + public void setDead(boolean dead) { + isDead = dead; + } + + public boolean isFirstSpawn() { + return firstSpawn; + } + + public void setFirstSpawn(boolean firstSpawn) { + Onset.print("FirstSpawn: " + firstSpawn); + this.firstSpawn = firstSpawn; + } + + public ObjectPlacementInstance getCurrentObjectPlacementInstance() { + return currentObjectPlacementInstance; + } + + public void setCurrentObjectPlacementInstance(ObjectPlacementInstance currentObjectPlacementInstance) { + this.currentObjectPlacementInstance = currentObjectPlacementInstance; + } + + public boolean isCuffed() { + return cuffed; + } + + public void setCuffed(boolean cuffed) { + this.cuffed = cuffed; + } + + public boolean canInteract() { + if(this.isDead) return false; + if(this.cuffed) return false; + if(this.getCurrentObjectPlacementInstance() != null) return false; + return true; + } + + public UIState getUiState() { + return uiState; + } + + public Line3D getCurrentDisplayedLine3D() { + return currentDisplayedLine3D; + } + + public void setCurrentDisplayedLine3D(Line3D currentDisplayedLine3D) { + this.currentDisplayedLine3D = currentDisplayedLine3D; + } + + public ArrayList getLastLocationsRequest() { + return lastLocationsRequest; + } + + public void setLastLocationsRequest(ArrayList lastLocationsRequest) { + this.lastLocationsRequest = lastLocationsRequest; + } + + public void attachMask(Mask mask, Player player) { + if(this.maskWorldObject != null) { + this.maskWorldObject.destroy(); + } + this.currentMask = mask; + Onset.print("Attach mask id: " + mask.getModelId()); + this.maskWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), mask.getModelId()); + this.maskWorldObject.attach(player, new Vector(mask.getX(), mask.getY(), mask.getZ()), new Vector(mask.getRx(), mask.getRy(), mask.getRz()), mask.getSocket()); + if(ModdingManager.isCustomModelId(mask.getModelId())) ModdingManager.assignCustomModel(this.maskWorldObject, mask.getModelId()); + this.maskWorldObject.setScale(new Vector(mask.getSx(), mask.getSy(), mask.getSz())); + } + + public void unattachMask() { + if(this.maskWorldObject != null) { + this.maskWorldObject.destroy(); + } + this.currentMask = null; + } + + public void attachBag(Bag bag, Player player) { + if(this.bagWorldObject != null) { + this.bagWorldObject.destroy(); + } + Account account = WorldManager.getPlayerAccount(player); + this.currentBag = bag; + Onset.print("Attach bag id: " + bag.getModelId()); + this.bagWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), bag.getModelId()); + this.bagWorldObject.attach(player, new Vector(bag.getX(), bag.getY(), bag.getZ()), new Vector(bag.getRx(), bag.getRy(), bag.getRz()), bag.getSocket()); + if(ModdingManager.isCustomModelId(bag.getModelId())) ModdingManager.assignCustomModel(this.bagWorldObject, bag.getModelId()); + this.bagWorldObject.setScale(new Vector(bag.getSx(), bag.getSy(), bag.getSz())); + account.setBagId(this.currentBag.getModelId()); + account.save(); + } + + public void unattachBag(Player player) { + if(this.bagWorldObject != null) { + this.bagWorldObject.destroy(); + } + Account account = WorldManager.getPlayerAccount(player); + this.currentBag = null; + account.setBagId(-1); + account.save(); + } + + public Mask getCurrentMask() { + return currentMask; + } + + public void setCurrentMask(Mask currentMask) { + this.currentMask = currentMask; + } + + public Bag getCurrentBag() { + return currentBag; + } + + public void setCurrentBag(Bag currentBag) { + this.currentBag = currentBag; + } + + public boolean isHasUIReady() { + return hasUIReady; + } + + public void setHasUIReady(boolean hasUIReady) { + this.hasUIReady = hasUIReady; + } + + public PhoneCall getCurrentPhoneCall() { + return currentPhoneCall; + } + + public void setCurrentPhoneCall(PhoneCall currentPhoneCall) { + this.currentPhoneCall = currentPhoneCall; + } + + public CharacterToolAnimation getCurrentPhoneAttached() { + return currentPhoneAttached; + } + + public void setCurrentPhoneAttached(CharacterToolAnimation currentPhoneAttached) { + this.currentPhoneAttached = currentPhoneAttached; + } + + public int getCurrentCompagnyInvited() { + return currentCompagnyInvited; + } + + public void setCurrentCompagnyInvited(int currentCompagnyInvited) { + this.currentCompagnyInvited = currentCompagnyInvited; + } + + public GenericMenu getCurrentGenericMenu() { + return currentGenericMenu; + } + + public void setCurrentGenericMenu(GenericMenu currentGenericMenu) { + this.currentGenericMenu = currentGenericMenu; + } + + public boolean isInvisible() { + return isInvisible; + } + + public void setInvisible(boolean invisible) { + isInvisible = invisible; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterStyle.java b/src/main/java/fr/yuki/yrpf/character/CharacterStyle.java similarity index 95% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterStyle.java rename to src/main/java/fr/yuki/yrpf/character/CharacterStyle.java index 4135425..f9e9a2a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterStyle.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterStyle.java @@ -1,91 +1,91 @@ -package fr.yuki.YukiRPFramework.character; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -public class CharacterStyle { - private String gender; - private String body; - private String hair; - private String hairColor; - private String top; - private String pant; - private String shoes; - - public void attachStyleToPlayer(Player player) { - Onset.print("Attach player style to character"); - player.setProperty("gender", this.gender, true); - player.setProperty("body", this.body, true); - player.setProperty("hair", this.hair, true); - player.setProperty("hairColor", this.hairColor.substring(1), true); - player.setProperty("top", this.top, true); - player.setProperty("pant", this.pant, true); - player.setProperty("shoes", this.shoes, true); - - for(Player otherPlayer : Onset.getPlayers()) { - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "gender", this.gender); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "body", this.body); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hair", this.hair); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hairColor", this.hairColor.substring(1)); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "top", this.top); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "pant", this.pant); - otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "shoes", this.shoes); - } - } - - public String getGender() { - return gender; - } - - public void setGender(String gender) { - this.gender = gender; - } - - public String getBody() { - return body; - } - - public void setBody(String body) { - this.body = body; - } - - public String getHair() { - return hair; - } - - public void setHair(String hair) { - this.hair = hair; - } - - public String getHairColor() { - return hairColor; - } - - public void setHairColor(String hairColor) { - this.hairColor = hairColor; - } - - public String getTop() { - return top; - } - - public void setTop(String top) { - this.top = top; - } - - public String getPant() { - return pant; - } - - public void setPant(String pant) { - this.pant = pant; - } - - public String getShoes() { - return shoes; - } - - public void setShoes(String shoes) { - this.shoes = shoes; - } -} +package fr.yuki.yrpf.character; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +public class CharacterStyle { + private String gender; + private String body; + private String hair; + private String hairColor; + private String top; + private String pant; + private String shoes; + + public void attachStyleToPlayer(Player player) { + Onset.print("Attach player style to character"); + player.setProperty("gender", this.gender, true); + player.setProperty("body", this.body, true); + player.setProperty("hair", this.hair, true); + player.setProperty("hairColor", this.hairColor.substring(1), true); + player.setProperty("top", this.top, true); + player.setProperty("pant", this.pant, true); + player.setProperty("shoes", this.shoes, true); + + for(Player otherPlayer : Onset.getPlayers()) { + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "gender", this.gender); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "body", this.body); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hair", this.hair); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "hairColor", this.hairColor.substring(1)); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "top", this.top); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "pant", this.pant); + otherPlayer.callRemoteEvent("Character:Style:SetPart", player.getId(), "shoes", this.shoes); + } + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public String getHair() { + return hair; + } + + public void setHair(String hair) { + this.hair = hair; + } + + public String getHairColor() { + return hairColor; + } + + public void setHairColor(String hairColor) { + this.hairColor = hairColor; + } + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public String getPant() { + return pant; + } + + public void setPant(String pant) { + this.pant = pant; + } + + public String getShoes() { + return shoes; + } + + public void setShoes(String shoes) { + this.shoes = shoes; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterToolAnimation.java b/src/main/java/fr/yuki/yrpf/character/CharacterToolAnimation.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/character/CharacterToolAnimation.java rename to src/main/java/fr/yuki/yrpf/character/CharacterToolAnimation.java index 8c0fde1..cc964ab 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/character/CharacterToolAnimation.java +++ b/src/main/java/fr/yuki/yrpf/character/CharacterToolAnimation.java @@ -1,42 +1,41 @@ -package fr.yuki.YukiRPFramework.character; - -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.AttachType; - -public class CharacterToolAnimation { - private WorldObject toolObject; - private int modelId; - private Vector position; - private Vector rotation; - private Vector scale; - private String attachSocket; - - public CharacterToolAnimation(int modelId, Vector position, Vector rotation, Vector scale, String attachSocket) { - this.modelId = modelId; - this.position = position; - this.rotation = rotation; - this.scale = scale; - this.attachSocket = attachSocket; - } - - public void attach(Player player) { - this.toolObject = Onset.getServer().createObject(new Vector(0, 0, 0), this.modelId); - if(ModdingManager.isCustomModelId(this.modelId)) { - ModdingManager.assignCustomModel(this.toolObject, this.modelId); - } - this.toolObject.attach(player, this.position, this.rotation, this.attachSocket); - this.toolObject.setScale(this.scale); - } - - public void unAttach() { - this.toolObject.destroy(); - } - - public Vector getScale() { - return scale; - } -} +package fr.yuki.yrpf.character; + +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +public class CharacterToolAnimation { + private WorldObject toolObject; + private int modelId; + private Vector position; + private Vector rotation; + private Vector scale; + private String attachSocket; + + public CharacterToolAnimation(int modelId, Vector position, Vector rotation, Vector scale, String attachSocket) { + this.modelId = modelId; + this.position = position; + this.rotation = rotation; + this.scale = scale; + this.attachSocket = attachSocket; + } + + public void attach(Player player) { + this.toolObject = Onset.getServer().createObject(new Vector(0, 0, 0), this.modelId); + if(ModdingManager.isCustomModelId(this.modelId)) { + ModdingManager.assignCustomModel(this.toolObject, this.modelId); + } + this.toolObject.attach(player, this.position, this.rotation, this.attachSocket); + this.toolObject.setScale(this.scale); + } + + public void unAttach() { + this.toolObject.destroy(); + } + + public Vector getScale() { + return scale; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AddDeliveryPointCommand.java b/src/main/java/fr/yuki/yrpf/commands/AddDeliveryPointCommand.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AddDeliveryPointCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AddDeliveryPointCommand.java index fbdeb60..3cca456 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AddDeliveryPointCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AddDeliveryPointCommand.java @@ -1,26 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class AddDeliveryPointCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); - jobSpawnPosition.setX(player.getLocation().getX()); - jobSpawnPosition.setY(player.getLocation().getY()); - jobSpawnPosition.setZ(player.getLocation().getZ()); - JobManager.getDeliveryPointConfig().getPoints().get(args[0]).add(jobSpawnPosition); - JobManager.saveDeliveryPoints(); - player.sendMessage("Add new delivery location at this location"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class AddDeliveryPointCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); + jobSpawnPosition.setX(player.getLocation().getX()); + jobSpawnPosition.setY(player.getLocation().getY()); + jobSpawnPosition.setZ(player.getLocation().getZ()); + JobManager.getDeliveryPointConfig().getPoints().get(args[0]).add(jobSpawnPosition); + JobManager.saveDeliveryPoints(); + player.sendMessage("Add new delivery location at this location"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AddGatherItemCommand.java b/src/main/java/fr/yuki/yrpf/commands/AddGatherItemCommand.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AddGatherItemCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AddGatherItemCommand.java index 0100af5..5debea9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AddGatherItemCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AddGatherItemCommand.java @@ -1,37 +1,34 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.util.ArrayList; -import java.util.Map; - -public class AddGatherItemCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Job job = new ArrayList(JobManager.getJobs().values()).get(Integer.parseInt(args[0])); - JobSpawn jobSpawn = job.getJobConfig().getResources().get(Integer.parseInt(args[1])); - JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); - Vector playerLocation = player.getLocation(); - jobSpawnPosition.setX(playerLocation.getX()); - jobSpawnPosition.setY(playerLocation.getY()); - jobSpawnPosition.setZ(playerLocation.getZ()); - jobSpawn.getSpawns().add(jobSpawnPosition); - job.saveConfig(); - player.sendMessage("Added " + jobSpawn.getName() + " at this location"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.JobSpawn; +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +import java.util.ArrayList; + +public class AddGatherItemCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Job job = new ArrayList(JobManager.getJobs().values()).get(Integer.parseInt(args[0])); + JobSpawn jobSpawn = job.getJobConfig().getResources().get(Integer.parseInt(args[1])); + JobSpawnPosition jobSpawnPosition = new JobSpawnPosition(); + Vector playerLocation = player.getLocation(); + jobSpawnPosition.setX(playerLocation.getX()); + jobSpawnPosition.setY(playerLocation.getY()); + jobSpawnPosition.setZ(playerLocation.getZ()); + jobSpawn.getSpawns().add(jobSpawnPosition); + job.saveConfig(); + player.sendMessage("Added " + jobSpawn.getName() + " at this location"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AddItemAllCommand.java b/src/main/java/fr/yuki/yrpf/commands/AddItemAllCommand.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AddItemAllCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AddItemAllCommand.java index 753264a..ec77995 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AddItemAllCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AddItemAllCommand.java @@ -1,33 +1,30 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class AddItemAllCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Player other : Onset.getPlayers()) { - try{ - Account otherAccount = WorldManager.getPlayerAccount(other); - if(otherAccount == null) continue; - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); - InventoryManager.addItemToPlayer(other, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); - player.sendMessage("Added item to " + other.getName()); - }catch (Exception ex) {} - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.ItemTemplate; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class AddItemAllCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Player other : Onset.getPlayers()) { + try{ + Account otherAccount = WorldManager.getPlayerAccount(other); + if(otherAccount == null) continue; + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); + InventoryManager.addItemToPlayer(other, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); + player.sendMessage("Added item to " + other.getName()); + }catch (Exception ex) {} + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/AnnCommand.java b/src/main/java/fr/yuki/yrpf/commands/AnnCommand.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/commands/AnnCommand.java rename to src/main/java/fr/yuki/yrpf/commands/AnnCommand.java index 7c74a81..6dd5d24 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/AnnCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/AnnCommand.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class AnnCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Player other : Onset.getPlayers()) { - try{ - UIStateManager.sendNotification(other, ToastTypeEnum.DEFAULT, "Par " + WorldManager.getPlayerAccount(player).getCharacterName() + - " : " + String.join(" ", strings)); - SoundManager.playSound2D(other, "notif", "sounds/success_1.mp3", 0.8); - }catch (Exception ex) {} - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.manager.SoundManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class AnnCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Player other : Onset.getPlayers()) { + try{ + UIStateManager.sendNotification(other, ToastTypeEnum.DEFAULT, "Par " + WorldManager.getPlayerAccount(player).getCharacterName() + + " : " + String.join(" ", strings)); + SoundManager.playSound2D(other, "notif", "sounds/success_1.mp3", 0.8); + }catch (Exception ex) {} + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java b/src/main/java/fr/yuki/yrpf/commands/BanCommand.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java rename to src/main/java/fr/yuki/yrpf/commands/BanCommand.java index e73268f..07f2e03 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/BanCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/BanCommand.java @@ -1,27 +1,27 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class BanCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setIsBanned(1); - WorldManager.savePlayer(playerTarget); - playerTarget.kick("You have been banned, bye bye"); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class BanCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setBanned(true); + WorldManager.savePlayer(playerTarget); + playerTarget.kick("You have been banned, bye bye"); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/BringCommand.java b/src/main/java/fr/yuki/yrpf/commands/BringCommand.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/commands/BringCommand.java rename to src/main/java/fr/yuki/yrpf/commands/BringCommand.java index e828dbb..dd6e575 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/BringCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/BringCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class BringCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - playerTarget.setLocation(player.getLocation()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class BringCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + playerTarget.setLocation(player.getLocation()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/CreateHouseCommand.java b/src/main/java/fr/yuki/yrpf/commands/CreateHouseCommand.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/commands/CreateHouseCommand.java rename to src/main/java/fr/yuki/yrpf/commands/CreateHouseCommand.java index c7d48bb..fcfa7bf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/CreateHouseCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/CreateHouseCommand.java @@ -1,53 +1,46 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class CreateHouseCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - //if(state.getCurrentDisplayedLine3D() == null) return true; - - Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); - Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); - - Account account = WorldManager.getPlayerAccount(player); - House house = new House(); - house.setAccountId(account.getId()); - house.setPrice(2500); - house.setName("Maison"); - house.setSx(firstLoc.getX()); - house.setSy(firstLoc.getY()); - house.setSz(firstLoc.getZ()); - house.setEx(secondLoc.getX()); - house.setEy(secondLoc.getY()); - house.setEz(secondLoc.getZ()); - HouseManager.getHouses().add(house); - try { - HouseDAO.insertHouse(house); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - Onset.print("House created id: " + house.getId()); - player.sendMessage("House created id: " + house.getId()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.House; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class CreateHouseCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + //if(state.getCurrentDisplayedLine3D() == null) return true; + + Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); + Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); + + Account account = WorldManager.getPlayerAccount(player); + House house = new House(); + house.setAccountId(account.getId()); + house.setPrice(2500); + house.setName("Maison"); + house.setSx(firstLoc.getX()); + house.setSy(firstLoc.getY()); + house.setSz(firstLoc.getZ()); + house.setEx(secondLoc.getX()); + house.setEy(secondLoc.getY()); + house.setEz(secondLoc.getZ()); + HouseManager.getHouses().add(house); + house.save(); + Onset.print("House created id: " + house.getId()); + player.sendMessage("House created id: " + house.getId()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/CuffCommand.java b/src/main/java/fr/yuki/yrpf/commands/CuffCommand.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/commands/CuffCommand.java rename to src/main/java/fr/yuki/yrpf/commands/CuffCommand.java index 6412b6d..a166860 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/CuffCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/CuffCommand.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class CuffCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - WorldManager.cuffPlayer(playerTarget); - CharacterManager.setCharacterFreeze(playerTarget, false); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class CuffCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + WorldManager.cuffPlayer(playerTarget); + CharacterManager.setCharacterFreeze(playerTarget, false); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DVCommand.java b/src/main/java/fr/yuki/yrpf/commands/DVCommand.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DVCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DVCommand.java index 48dc41e..c990218 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DVCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DVCommand.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.GarageManager; -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.VehicleGarage; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DVCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return true; - VehicleGarage vehicleGarage = GarageManager.getVehicleGarages().stream() - .filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) - .findFirst().orElse(null); - if(vehicleGarage == null) return true; - if(!vehicleGarage.isRental()) { - vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); - vehicleGarage.save(); - } - if(vehicle.getDriver() != null) vehicle.getDriver().exitVehicle(); - - Onset.delay(1000, () -> { - vehicle.destroy(); - }); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.GarageManager; +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.VehicleGarage; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DVCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return true; + VehicleGarage vehicleGarage = GarageManager.getVehicleGarages().stream() + .filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) + .findFirst().orElse(null); + if(vehicleGarage == null) return true; + if(!vehicleGarage.isRental()) { + vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); + vehicleGarage.save(); + } + if(vehicle.getDriver() != null) vehicle.getDriver().exitVehicle(); + + Onset.delay(1000, () -> { + vehicle.destroy(); + }); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugCharacterToolCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugCharacterToolCommand.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugCharacterToolCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugCharacterToolCommand.java index 4994844..7c360aa 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugCharacterToolCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugCharacterToolCommand.java @@ -1,27 +1,27 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugCharacterToolCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - CharacterToolAnimation characterToolAnimation = - new CharacterToolAnimation(Integer.parseInt(args[0]), - new Vector(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])), - new Vector(Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6])), - new Vector(Double.parseDouble(args[7]), Double.parseDouble(args[8]), Double.parseDouble(args[9])), - args[10]); - characterToolAnimation.attach(player); - player.setAnimation(args[11]); - Onset.delay(10000, () -> { - characterToolAnimation.unAttach(); - }); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugCharacterToolCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + CharacterToolAnimation characterToolAnimation = + new CharacterToolAnimation(Integer.parseInt(args[0]), + new Vector(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])), + new Vector(Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6])), + new Vector(Double.parseDouble(args[7]), Double.parseDouble(args[8]), Double.parseDouble(args[9])), + args[10]); + characterToolAnimation.attach(player); + player.setAnimation(args[11]); + Onset.delay(10000, () -> { + characterToolAnimation.unAttach(); + }); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugHouseCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugHouseCommand.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugHouseCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugHouseCommand.java index 4a171dd..cd8ee3a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugHouseCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugHouseCommand.java @@ -1,46 +1,43 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugHouseCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); - Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); - - Line3D line3D = new Line3D(firstLoc.getX(), firstLoc.getY(), firstLoc.getZ(), - secondLoc.getX(), secondLoc.getY(), secondLoc.getZ(), 5); - if(state.getCurrentDisplayedLine3D() != null) { - state.getCurrentDisplayedLine3D().hide(player); - } - state.setCurrentDisplayedLine3D(line3D); - line3D.show(player); - player.sendMessage("IsInside : " + line3D.isInside(player.getLocation())); - for(Door door : line3D.getDoorsInside()) { - player.sendMessage("DoorId: " + door.getId()); - if(!door.isOpen()) { - door.open(); - } else { - door.close(); - } - } - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugHouseCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1); + Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2); + + Line3D line3D = new Line3D(firstLoc.getX(), firstLoc.getY(), firstLoc.getZ(), + secondLoc.getX(), secondLoc.getY(), secondLoc.getZ(), 5); + if(state.getCurrentDisplayedLine3D() != null) { + state.getCurrentDisplayedLine3D().hide(player); + } + state.setCurrentDisplayedLine3D(line3D); + line3D.show(player); + player.sendMessage("IsInside : " + line3D.isInside(player.getLocation())); + for(Door door : line3D.getDoorsInside()) { + player.sendMessage("DoorId: " + door.getId()); + if(!door.isOpen()) { + door.open(); + } else { + door.close(); + } + } + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugObjectPlacementCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugObjectPlacementCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugObjectPlacementCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugObjectPlacementCommand.java index 548b55c..c80c1c6 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugObjectPlacementCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugObjectPlacementCommand.java @@ -1,27 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GrowBoxPlacementInstance; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugObjectPlacementCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), Integer.parseInt(args[0]), 0); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GenericPlacementInstance; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugObjectPlacementCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), Integer.parseInt(args[0]), 0); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugTestCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugTestCommand.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugTestCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugTestCommand.java index 3bf0395..1613381 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugTestCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugTestCommand.java @@ -1,27 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.util.Map; - -public class DebugTestCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Map.Entry job : JobManager.getJobs().entrySet()) { - player.sendMessage(job.getKey() + " : (" + job.getValue().getWorldHarvestObjects().size() + ")"); - } - player.sendMessage("States : (" + CharacterManager.getCharacterStates().size() + ")"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +import java.util.Map; + +public class DebugTestCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Map.Entry job : JobManager.getJobs().entrySet()) { + player.sendMessage(job.getKey() + " : (" + job.getValue().getWorldHarvestObjects().size() + ")"); + } + player.sendMessage("States : (" + CharacterManager.getCharacterStates().size() + ")"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugVehicleStorageLayoutCommand.java b/src/main/java/fr/yuki/yrpf/commands/DebugVehicleStorageLayoutCommand.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/commands/DebugVehicleStorageLayoutCommand.java rename to src/main/java/fr/yuki/yrpf/commands/DebugVehicleStorageLayoutCommand.java index 0ef69b3..828cf70 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/DebugVehicleStorageLayoutCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/DebugVehicleStorageLayoutCommand.java @@ -1,38 +1,37 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class DebugVehicleStorageLayoutCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return true; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - - StoreLayoutTransform storeLayoutTransform = new StoreLayoutTransform(0, new Vector(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])), - new Vector(Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5])), - new Vector(Double.parseDouble(args[6]), Double.parseDouble(args[7]), Double.parseDouble(args[8]))); - - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() - .storeInVehicle(vehicle, storeLayoutTransform); - - Onset.delay(10000, () -> { - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().getWorldObject().destroy(); - }); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class DebugVehicleStorageLayoutCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return true; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + + StoreLayoutTransform storeLayoutTransform = new StoreLayoutTransform(0, new Vector(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])), + new Vector(Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5])), + new Vector(Double.parseDouble(args[6]), Double.parseDouble(args[7]), Double.parseDouble(args[8]))); + + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() + .storeInVehicle(vehicle, storeLayoutTransform); + + Onset.delay(10000, () -> { + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().getWorldObject().destroy(); + }); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/FlipCommand.java b/src/main/java/fr/yuki/yrpf/commands/FlipCommand.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/commands/FlipCommand.java rename to src/main/java/fr/yuki/yrpf/commands/FlipCommand.java index e811ada..b2c5f55 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/FlipCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/FlipCommand.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class FlipCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return true; - vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class FlipCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return true; + vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ForceGarbageCommand.java b/src/main/java/fr/yuki/yrpf/commands/ForceGarbageCommand.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ForceGarbageCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ForceGarbageCommand.java index 94f6243..a6de58a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ForceGarbageCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ForceGarbageCommand.java @@ -1,20 +1,20 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class ForceGarbageCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - System.gc (); - System.runFinalization (); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class ForceGarbageCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + System.gc (); + System.runFinalization (); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/FreeHouseCommand.java b/src/main/java/fr/yuki/yrpf/commands/FreeHouseCommand.java similarity index 69% rename from src/main/java/fr/yuki/YukiRPFramework/commands/FreeHouseCommand.java rename to src/main/java/fr/yuki/yrpf/commands/FreeHouseCommand.java index 5418553..fe14522 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/FreeHouseCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/FreeHouseCommand.java @@ -1,43 +1,36 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.HouseItemObject; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class FreeHouseCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) { - house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); - } - if(house == null) return true; - house.setAccountId(-1); - for(Door door : house.getLine3D().getDoorsInside()) { - door.close(); - } - for(HouseItemObject houseItemObject : house.getHouseItemObjects()) { - houseItemObject.destroy(); - } - try { - HouseDAO.saveHouse(house); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - player.sendMessage("This house is free now"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.House; +import fr.yuki.yrpf.model.HouseItemObject; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class FreeHouseCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) { + house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); + } + if(house == null) return true; + house.setAccountId(-1); + for(Door door : house.getLine3D().getDoorsInside()) { + door.close(); + } + for(HouseItemObject houseItemObject : house.getHouseItemObjects()) { + houseItemObject.destroy(); + } + house.save(); + + player.sendMessage("This house is free now"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/GetIdCommand.java b/src/main/java/fr/yuki/yrpf/commands/GetIdCommand.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/commands/GetIdCommand.java rename to src/main/java/fr/yuki/yrpf/commands/GetIdCommand.java index ead82c1..8f80377 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/GetIdCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/GetIdCommand.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class GetIdCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - for(Player p : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(p); - if(account != null) { - if(account.getCharacterName().toLowerCase().contains(strings[0].toLowerCase())) { - player.sendMessage(account.getCharacterName() + " -> " + p.getId() + " (" + p.getSteamId() + ")"); - } - } - } catch (Exception ex) {} - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class GetIdCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + for(Player p : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(p); + if(account != null) { + if(account.getCharacterName().toLowerCase().contains(strings[0].toLowerCase())) { + player.sendMessage(account.getCharacterName() + " -> " + p.getId() + " (" + p.getSteamId() + ")"); + } + } + } catch (Exception ex) {} + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/GiveHouseKeyCommand.java b/src/main/java/fr/yuki/yrpf/commands/GiveHouseKeyCommand.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/commands/GiveHouseKeyCommand.java rename to src/main/java/fr/yuki/yrpf/commands/GiveHouseKeyCommand.java index b267c38..3a1e0b5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/GiveHouseKeyCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/GiveHouseKeyCommand.java @@ -1,29 +1,29 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class GiveHouseKeyCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) return true; - if(!HouseManager.canBuildInHouse(player, house)) return true; - Account targetAccount = WorldManager.getPlayerAccount(playerTarget); - - if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return true; - - house.getAllowedPlayers().add(targetAccount.getId()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.House; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class GiveHouseKeyCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) return true; + if(!HouseManager.canBuildInHouse(player, house)) return true; + Account targetAccount = WorldManager.getPlayerAccount(playerTarget); + + if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return true; + + house.getAllowedPlayers().add(targetAccount.getId()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/GotoCommand.java b/src/main/java/fr/yuki/yrpf/commands/GotoCommand.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/commands/GotoCommand.java rename to src/main/java/fr/yuki/yrpf/commands/GotoCommand.java index a5b4275..d3f08ab 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/GotoCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/GotoCommand.java @@ -1,20 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class GotoCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - player.setLocation(playerTarget.getLocation()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class GotoCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + player.setLocation(playerTarget.getLocation()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/InvisCommand.java b/src/main/java/fr/yuki/yrpf/commands/InvisCommand.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/commands/InvisCommand.java rename to src/main/java/fr/yuki/yrpf/commands/InvisCommand.java index e76a1a1..a76b65f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/InvisCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/InvisCommand.java @@ -1,45 +1,45 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class InvisCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - - if(state.isInvisible()) { - player.sendMessage("You are now visible"); - CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - player.setProperty("isInvisible", "false", true); - state.setInvisible(false); - } else { - player.sendMessage("You are now invisible"); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - characterStyle.setBody(""); - characterStyle.setHair(""); - characterStyle.setTop(""); - characterStyle.setPant(""); - characterStyle.setShoes(""); - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - player.setProperty("isInvisible", "true", true); - state.setInvisible(true); - } - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class InvisCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + + if(state.isInvisible()) { + player.sendMessage("You are now visible"); + CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + player.setProperty("isInvisible", "false", true); + state.setInvisible(false); + } else { + player.sendMessage("You are now invisible"); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + characterStyle.setBody(""); + characterStyle.setHair(""); + characterStyle.setTop(""); + characterStyle.setPant(""); + characterStyle.setShoes(""); + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + player.setProperty("isInvisible", "true", true); + state.setInvisible(true); + } + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ItemCommand.java b/src/main/java/fr/yuki/yrpf/commands/ItemCommand.java similarity index 69% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ItemCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ItemCommand.java index 435ed5f..978e006 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ItemCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ItemCommand.java @@ -1,25 +1,22 @@ -package fr.yuki.YukiRPFramework.commands; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.net.payload.SetWindowStatePayload; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class ItemCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); - InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); - player.sendMessage("Add item " + itemTemplate.getName() + " to your inventory"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.ItemTemplate; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class ItemCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(Integer.parseInt(args[0])); + InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), Integer.parseInt(args[1]), true); + player.sendMessage("Add item " + itemTemplate.getName() + " to your inventory"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/KickCommand.java b/src/main/java/fr/yuki/yrpf/commands/KickCommand.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/commands/KickCommand.java rename to src/main/java/fr/yuki/yrpf/commands/KickCommand.java index 1c2f476..d627b91 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/KickCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/KickCommand.java @@ -1,24 +1,23 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class KickCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - playerTarget.kick("Kick : " + String.join(" ", args)); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class KickCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + playerTarget.kick("Kick : " + String.join(" ", args)); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/LocCommand.java b/src/main/java/fr/yuki/yrpf/commands/LocCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/LocCommand.java rename to src/main/java/fr/yuki/yrpf/commands/LocCommand.java index 7c4b1cb..67d562e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/LocCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/LocCommand.java @@ -1,22 +1,20 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class LocCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Location loc = player.getLocationAndHeading(); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - state.getLastLocationsRequest().add(player.getLocation()); - player.sendMessage("Current loc x=" + loc.getX() + ", y=" + loc.getY() + ", z=" + loc.getZ() + ", h=" + loc.getHeading()); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class LocCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Location loc = player.getLocationAndHeading(); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + state.getLastLocationsRequest().add(player.getLocation()); + player.sendMessage("Current loc x=" + loc.getX() + ", y=" + loc.getY() + ", z=" + loc.getZ() + ", h=" + loc.getHeading()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/MoveCommand.java b/src/main/java/fr/yuki/yrpf/commands/MoveCommand.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/commands/MoveCommand.java rename to src/main/java/fr/yuki/yrpf/commands/MoveCommand.java index 6be3caa..2869d76 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/MoveCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/MoveCommand.java @@ -1,21 +1,21 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class MoveCommand implements CommandExecutor { - - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - vehicle.setLocation(new Vector(player.getLocation().getX() + 250, player.getLocation().getY() + 250, player.getLocation().getZ())); - Onset.print("Vehicle positon moved"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class MoveCommand implements CommandExecutor { + + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + vehicle.setLocation(new Vector(player.getLocation().getX() + 250, player.getLocation().getY() + 250, player.getLocation().getZ())); + Onset.print("Vehicle positon moved"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/NitroCommand.java b/src/main/java/fr/yuki/yrpf/commands/NitroCommand.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/commands/NitroCommand.java rename to src/main/java/fr/yuki/yrpf/commands/NitroCommand.java index 6f21436..3e4ae38 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/NitroCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/NitroCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class NitroCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - if(player.getVehicle() == null) return true; - player.getVehicle().setNitro(true); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class NitroCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + if(player.getVehicle() == null) return true; + player.getVehicle().setNitro(true); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java b/src/main/java/fr/yuki/yrpf/commands/RegenPhoneNumberCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java rename to src/main/java/fr/yuki/yrpf/commands/RegenPhoneNumberCommand.java index bfc733e..7b36e43 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/RegenPhoneNumberCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/RegenPhoneNumberCommand.java @@ -1,35 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.manager.PhoneManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class RegenPhoneNumberCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - Onset.print("Phone number generated : " + account.getPhoneNumber()); - - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.PhoneManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class RegenPhoneNumberCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.save(); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java b/src/main/java/fr/yuki/yrpf/commands/RequestCharacterCreationCommand.java similarity index 64% rename from src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java rename to src/main/java/fr/yuki/yrpf/commands/RequestCharacterCreationCommand.java index e053782..3d43188 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/RequestCharacterCreationCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/RequestCharacterCreationCommand.java @@ -1,35 +1,28 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class RequestCharacterCreationCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setCharacterCreationRequest(1); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - UIStateManager.handleUIToogle(playerTarget, "customCharacter"); - return false; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class RequestCharacterCreationCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setCharacterCreationRequest(true); + account.save(); + + UIStateManager.handleUIToogle(playerTarget, "customCharacter"); + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ReviveCommand.java b/src/main/java/fr/yuki/yrpf/commands/ReviveCommand.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ReviveCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ReviveCommand.java index 834c69f..8527525 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ReviveCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ReviveCommand.java @@ -1,24 +1,24 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class ReviveCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - WorldManager.revive(player, playerTarget); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class ReviveCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + WorldManager.revive(player, playerTarget); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetAdminLevelCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetAdminLevelCommand.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetAdminLevelCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetAdminLevelCommand.java index cc7a4e2..4815574 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetAdminLevelCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetAdminLevelCommand.java @@ -1,27 +1,27 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetAdminLevelCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setAdminLevel(1); - WorldManager.savePlayer(playerTarget); - - player.sendMessage("Set admin " + account.getCharacterName()); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetAdminLevelCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setAdminLevel(1); + WorldManager.savePlayer(playerTarget); + + player.sendMessage("Set admin " + account.getCharacterName()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCharacterScaleCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetCharacterScaleCommand.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetCharacterScaleCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetCharacterScaleCommand.java index aee767a..dc8163d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCharacterScaleCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetCharacterScaleCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetCharacterScaleCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - player.setProperty("characterScale", args[0].toString(), true); - player.sendMessage("Scale set"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetCharacterScaleCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + player.setProperty("characterScale", args[0].toString(), true); + player.sendMessage("Scale set"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetClotheCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetClotheCommand.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetClotheCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetClotheCommand.java index 7c06a0d..14f0cdf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetClotheCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetClotheCommand.java @@ -1,54 +1,54 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetClotheCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player targetPlayer = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - Account account = WorldManager.getPlayerAccount(targetPlayer); - CharacterState state = CharacterManager.getCharacterStateByPlayer(targetPlayer); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - switch (args[1].toLowerCase().toString()) { - case "body": - characterStyle.setBody(args[2]); - break; - - case "top": - characterStyle.setTop(args[2]); - break; - - case "pant": - characterStyle.setPant(args[2]); - break; - - case "shoes": - characterStyle.setShoes(args[2]); - break; - - case "clear": - characterStyle.setBody(""); - characterStyle.setHair(""); - characterStyle.setTop(""); - characterStyle.setPant(""); - characterStyle.setShoes(""); - break; - } - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(targetPlayer); - return false; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetClotheCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player targetPlayer = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + Account account = WorldManager.getPlayerAccount(targetPlayer); + CharacterState state = CharacterManager.getCharacterStateByPlayer(targetPlayer); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + switch (args[1].toLowerCase().toString()) { + case "body": + characterStyle.setBody(args[2]); + break; + + case "top": + characterStyle.setTop(args[2]); + break; + + case "pant": + characterStyle.setPant(args[2]); + break; + + case "shoes": + characterStyle.setShoes(args[2]); + break; + + case "clear": + characterStyle.setBody(""); + characterStyle.setHair(""); + characterStyle.setTop(""); + characterStyle.setPant(""); + characterStyle.setShoes(""); + break; + } + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(targetPlayer); + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetCommandLevelCommand.java similarity index 71% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetCommandLevelCommand.java index deb3f76..1101561 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetCommandLevelCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetCommandLevelCommand.java @@ -1,33 +1,26 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class SetCommandLevelCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - account.setCommandLevel(Integer.parseInt(args[1])); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - player.sendMessage("Command level set to " + args[1] + " for " + account.getCharacterName()); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetCommandLevelCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + account.setCommandLevel(Integer.parseInt(args[1])); + account.save(); + player.sendMessage("Command level set to " + args[1] + " for " + account.getCharacterName()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetHousePropsCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetHousePropsCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetHousePropsCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetHousePropsCommand.java index 2ebc555..fdc5b81 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetHousePropsCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetHousePropsCommand.java @@ -1,37 +1,30 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.House; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class SetHousePropsCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) { - house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); - } - if(house == null) return true; - - house.setPrice(Integer.parseInt(args[0])); - house.setName(args[1]); - try { - HouseDAO.saveHouse(house); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - player.sendMessage("House props set"); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.House; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetHousePropsCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) { + house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); + } + if(house == null) return true; + + house.setPrice(Integer.parseInt(args[0])); + house.setName(args[1]); + house.save(); + + player.sendMessage("House props set"); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetLangCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetLangCommand.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetLangCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetLangCommand.java index eb35e93..25aa664 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetLangCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetLangCommand.java @@ -1,26 +1,24 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetLangCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(args.length == 0) { - player.sendMessage("You must provide a lang FR, EN or DE - /lang [lang]"); - return true; - } - if(args[0].toLowerCase().equals("de") || args[0].toLowerCase().equals("fr") || args[0].toLowerCase().equals("en")) { - UIStateManager.setLang(player, args[0].toLowerCase()); - WorldManager.savePlayer(player); - return true; - } else { - player.sendMessage("Invalide lang, only FR, EN or DE is supported - /lang [lang]"); - return true; - } - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetLangCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(args.length == 0) { + player.sendMessage("You must provide a lang FR, EN or DE - /lang [lang]"); + return true; + } + if(args[0].toLowerCase().equals("de") || args[0].toLowerCase().equals("fr") || args[0].toLowerCase().equals("en")) { + UIStateManager.setLang(player, args[0].toLowerCase()); + WorldManager.savePlayer(player); + return true; + } else { + player.sendMessage("Invalide lang, only FR, EN or DE is supported - /lang [lang]"); + return true; + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetTimeCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetTimeCommand.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetTimeCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetTimeCommand.java index b88dc31..ac65cf6 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetTimeCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetTimeCommand.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.TimeManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class SetTimeCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - TimeManager.setCurrentHour(Integer.parseInt(args[0])); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.TimeManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetTimeCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + TimeManager.setCurrentHour(Integer.parseInt(args[0])); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/SetWhitelistCommand.java b/src/main/java/fr/yuki/yrpf/commands/SetWhitelistCommand.java similarity index 74% rename from src/main/java/fr/yuki/YukiRPFramework/commands/SetWhitelistCommand.java rename to src/main/java/fr/yuki/yrpf/commands/SetWhitelistCommand.java index eb1efe5..b6ff29f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/SetWhitelistCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/SetWhitelistCommand.java @@ -1,49 +1,42 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.dao.AccountJobWhitelistDAO; -import fr.yuki.YukiRPFramework.manager.AccountManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.sql.SQLException; - -public class SetWhitelistCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) - .findFirst().orElse(null); - if(playerTarget == null) return true; - Account account = WorldManager.getPlayerAccount(playerTarget); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(args[1].toUpperCase())) - .findFirst().orElse(null); - if(accountJobWhitelist != null) { - player.sendMessage("Job already whitelisted for this player"); - return true; - } - accountJobWhitelist = new AccountJobWhitelist(); - accountJobWhitelist.setAccountId(account.getId()); - accountJobWhitelist.setJobId(args[1].toUpperCase()); - accountJobWhitelist.setJobLevel(Integer.parseInt(args[2]) <= 1 ? 2 : Integer.parseInt(args[2])); - AccountManager.getAccountJobWhitelists().add(accountJobWhitelist); - try { - AccountJobWhitelistDAO.insertAccountJobWhiteList(accountJobWhitelist); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - player.sendMessage("Job whitelisted for this player"); - - WorldManager.savePlayer(playerTarget); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.AccountManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.AccountJobWhitelist; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class SetWhitelistCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 2) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0])) + .findFirst().orElse(null); + if(playerTarget == null) return true; + Account account = WorldManager.getPlayerAccount(playerTarget); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(args[1].toUpperCase())) + .findFirst().orElse(null); + if(accountJobWhitelist != null) { + player.sendMessage("Job already whitelisted for this player"); + return true; + } + accountJobWhitelist = new AccountJobWhitelist(); + accountJobWhitelist.setAccountId(account.getId()); + accountJobWhitelist.setJobId(args[1].toUpperCase()); + accountJobWhitelist.setJobLevel(Integer.parseInt(args[2]) <= 1 ? 2 : Integer.parseInt(args[2])); + AccountManager.getAccountJobWhitelists().add(accountJobWhitelist); + accountJobWhitelist.save(); + + player.sendMessage("Job whitelisted for this player"); + + WorldManager.savePlayer(playerTarget); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/ShowGatherItemListCommand.java b/src/main/java/fr/yuki/yrpf/commands/ShowGatherItemListCommand.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/commands/ShowGatherItemListCommand.java rename to src/main/java/fr/yuki/yrpf/commands/ShowGatherItemListCommand.java index bbe5a6e..8d9231d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/ShowGatherItemListCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/ShowGatherItemListCommand.java @@ -1,33 +1,30 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -import java.util.Map; - -public class ShowGatherItemListCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] strings) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - for(Map.Entry job : JobManager.getJobs().entrySet()) { - player.sendMessage("=========> " + job.getKey()); - int i2 = 0; - for(JobSpawn jobSpawn : job.getValue().getJobConfig().getResources()) { - player.sendMessage(jobSpawn.getName() + " (" + i2 + ")"); - } - } - return true; - } - -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.JobSpawn; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +import java.util.Map; + +public class ShowGatherItemListCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] strings) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 5) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + for(Map.Entry job : JobManager.getJobs().entrySet()) { + player.sendMessage("=========> " + job.getKey()); + int i2 = 0; + for(JobSpawn jobSpawn : job.getValue().getJobConfig().getResources()) { + player.sendMessage(jobSpawn.getName() + " (" + i2 + ")"); + } + } + return true; + } + +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/commands/VCommand.java b/src/main/java/fr/yuki/yrpf/commands/VCommand.java similarity index 77% rename from src/main/java/fr/yuki/YukiRPFramework/commands/VCommand.java rename to src/main/java/fr/yuki/yrpf/commands/VCommand.java index 42e598c..c4d8c05 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/commands/VCommand.java +++ b/src/main/java/fr/yuki/yrpf/commands/VCommand.java @@ -1,22 +1,21 @@ -package fr.yuki.YukiRPFramework.commands; - -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.CommandExecutor; - -public class VCommand implements CommandExecutor { - @Override - public boolean onCommand(Player player, String s, String[] args) { - if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; - if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { - player.sendMessage("You don't have the level required for this command"); - return true; - } - int modelId = Integer.parseInt(args[0]); - VehicleManager.createVehicle(modelId, player.getLocation(), - player.getLocationAndHeading().getHeading(), player, null, false); - return true; - } -} +package fr.yuki.yrpf.commands; + +import fr.yuki.yrpf.manager.VehicleManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.CommandExecutor; + +public class VCommand implements CommandExecutor { + @Override + public boolean onCommand(Player player, String s, String[] args) { + if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false; + if(WorldManager.getPlayerAccount(player).getCommandLevel() < 3) { + player.sendMessage("You don't have the level required for this command"); + return true; + } + int modelId = Integer.parseInt(args[0]); + VehicleManager.createVehicle(modelId, player.getLocation(), + player.getLocationAndHeading().getHeading(), player, null, false); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/enums/ItemTemplateEnum.java b/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/enums/ItemTemplateEnum.java rename to src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java index f9c587b..91266e0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/enums/ItemTemplateEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/ItemTemplateEnum.java @@ -1,36 +1,36 @@ -package fr.yuki.YukiRPFramework.enums; - -public enum ItemTemplateEnum { - APPLE("1"), - CASH("2"), - VKEY("3"), - LUMBERJACK_HATCHET_1("4"), - MINER_PICKAXE_1("5"), - BANANAS("6"), - FISHING_ROD("7"), - SALMON("8"), - WEED_SEED("9"), - TICKET_DELIVERY_GROW_BOX("10"), - POT("11"), - WATER("12"), - WEED("13"), - TICKET_DELIVERY_GENERATOR("14"), - JERRICAN_FUEL("15"), - CUFF("16"), - DEFIBRILATOR("17"), - LIGHTSABER("18"), - DESERT_EAGLE("19"), - AMMO("20"), - GLOCK("21"), - SHOTGUN("22"), - RABBIT_MASK("23"), - LUFFY_HAT("24"), - BANDANA("25"), - TURTLE("26"); - - public final String id; - - private ItemTemplateEnum(String id) { - this.id = id; - } -} +package fr.yuki.yrpf.enums; + +public enum ItemTemplateEnum { + APPLE("1"), + CASH("2"), + VKEY("3"), + LUMBERJACK_HATCHET_1("4"), + MINER_PICKAXE_1("5"), + BANANAS("6"), + FISHING_ROD("7"), + SALMON("8"), + WEED_SEED("9"), + TICKET_DELIVERY_GROW_BOX("10"), + POT("11"), + WATER("12"), + WEED("13"), + TICKET_DELIVERY_GENERATOR("14"), + JERRICAN_FUEL("15"), + CUFF("16"), + DEFIBRILATOR("17"), + LIGHTSABER("18"), + DESERT_EAGLE("19"), + AMMO("20"), + GLOCK("21"), + SHOTGUN("22"), + RABBIT_MASK("23"), + LUFFY_HAT("24"), + BANDANA("25"), + TURTLE("26"); + + public final String id; + + ItemTemplateEnum(String id) { + this.id = id; + } +} diff --git a/src/main/java/fr/yuki/yrpf/enums/JobEnum.java b/src/main/java/fr/yuki/yrpf/enums/JobEnum.java new file mode 100644 index 0000000..e33671c --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/enums/JobEnum.java @@ -0,0 +1,12 @@ +package fr.yuki.yrpf.enums; + +public enum JobEnum { + LUMBERJACK, + DELIVERY, + MINER, + FISHER, + POLICE, + WEED, + GARBAGE, + EMS +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/enums/ToastTypeEnum.java b/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java similarity index 67% rename from src/main/java/fr/yuki/YukiRPFramework/enums/ToastTypeEnum.java rename to src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java index e44b7a8..53366d1 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/enums/ToastTypeEnum.java +++ b/src/main/java/fr/yuki/yrpf/enums/ToastTypeEnum.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.enums; - -public enum ToastTypeEnum { - INFO("info"), - SUCCESS("success"), - WARN("warn"), - ERROR("error"), - DEFAULT("default"); - - public final String type; - - private ToastTypeEnum(String type) { - this.type = type; - } -} +package fr.yuki.yrpf.enums; + +public enum ToastTypeEnum { + INFO("info"), + SUCCESS("success"), + WARN("warn"), + ERROR("error"), + DEFAULT("default"); + + public final String type; + + ToastTypeEnum(String type) { + this.type = type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ATMBehavior.java b/src/main/java/fr/yuki/yrpf/house/itembehavior/ATMBehavior.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ATMBehavior.java rename to src/main/java/fr/yuki/yrpf/house/itembehavior/ATMBehavior.java index 13b38ea..17d87b7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ATMBehavior.java +++ b/src/main/java/fr/yuki/yrpf/house/itembehavior/ATMBehavior.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.house.itembehavior; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -public class ATMBehavior extends ItemBehavior { - private ATM atm; - - public ATMBehavior(HouseItemObject houseItemObject) { - super(houseItemObject); - } - - @Override - public void onSpawn() { - this.atm = new ATM(); - atm.setX((float)this.houseItemObject.getX()); - atm.setY((float)this.houseItemObject.getY()); - atm.setZ((float)this.houseItemObject.getZ()); - WorldManager.getAtms().add(atm); - } - - @Override - public void onDestroy() { - WorldManager.getAtms().remove(this.atm); - } - - @Override - public void onInteract() { - - } -} +package fr.yuki.yrpf.house.itembehavior; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.ATM; +import fr.yuki.yrpf.model.HouseItemObject; + +public class ATMBehavior extends ItemBehavior { + private ATM atm; + + public ATMBehavior(HouseItemObject houseItemObject) { + super(houseItemObject); + } + + @Override + public void onSpawn() { + this.atm = new ATM(); + atm.setX((float)this.houseItemObject.getX()); + atm.setY((float)this.houseItemObject.getY()); + atm.setZ((float)this.houseItemObject.getZ()); + WorldManager.getAtms().add(atm); + } + + @Override + public void onDestroy() { + WorldManager.getAtms().remove(this.atm); + } + + @Override + public void onInteract() { + + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ItemBehavior.java b/src/main/java/fr/yuki/yrpf/house/itembehavior/ItemBehavior.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ItemBehavior.java rename to src/main/java/fr/yuki/yrpf/house/itembehavior/ItemBehavior.java index 7adc84a..61d1fc0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/ItemBehavior.java +++ b/src/main/java/fr/yuki/yrpf/house/itembehavior/ItemBehavior.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.house.itembehavior; - -import fr.yuki.YukiRPFramework.model.HouseItemObject; - -public abstract class ItemBehavior { - protected HouseItemObject houseItemObject; - - public ItemBehavior(HouseItemObject houseItemObject) { - this.houseItemObject = houseItemObject; - } - - public abstract void onSpawn(); - public abstract void onDestroy(); - public abstract void onInteract(); -} +package fr.yuki.yrpf.house.itembehavior; + +import fr.yuki.yrpf.model.HouseItemObject; + +public abstract class ItemBehavior { + protected HouseItemObject houseItemObject; + + public ItemBehavior(HouseItemObject houseItemObject) { + this.houseItemObject = houseItemObject; + } + + public abstract void onSpawn(); + public abstract void onDestroy(); + public abstract void onInteract(); +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/RadioBehavior.java b/src/main/java/fr/yuki/yrpf/house/itembehavior/RadioBehavior.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/RadioBehavior.java rename to src/main/java/fr/yuki/yrpf/house/itembehavior/RadioBehavior.java index f28173d..490acd7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/house/itembehavior/RadioBehavior.java +++ b/src/main/java/fr/yuki/yrpf/house/itembehavior/RadioBehavior.java @@ -1,45 +1,45 @@ -package fr.yuki.YukiRPFramework.house.itembehavior; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.model.HouseItemObject; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public class RadioBehavior extends ItemBehavior { - private String soundId; - private WorldObject soundObject; - - public RadioBehavior(HouseItemObject houseItemObject) { - super(houseItemObject); - this.soundId = "radio-" + UUID.randomUUID().toString(); - } - - @Override - public void onSpawn() { - String songName = ""; - switch (houseItemObject.getModelId()) { - case 1194: - songName = "sounds/shop_ambiant2.mp3"; - break; - - default: - songName = "sounds/shop_ambiant.mp3"; - break; - } - this.soundObject = SoundManager.createAmbiantSound(this.soundId, songName, - houseItemObject.getPosition(), 800, 0.3); - } - - @Override - public void onDestroy() { - this.soundObject.destroy(); - this.soundObject = null; - SoundManager.getAmbiantSounds().remove(this.soundId); - } - - @Override - public void onInteract() { - - } -} +package fr.yuki.yrpf.house.itembehavior; + +import fr.yuki.yrpf.manager.SoundManager; +import fr.yuki.yrpf.model.HouseItemObject; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +public class RadioBehavior extends ItemBehavior { + private String soundId; + private WorldObject soundObject; + + public RadioBehavior(HouseItemObject houseItemObject) { + super(houseItemObject); + this.soundId = "radio-" + UUID.randomUUID().toString(); + } + + @Override + public void onSpawn() { + String songName = ""; + switch (houseItemObject.getModelId()) { + case 1194: + songName = "sounds/shop_ambiant2.mp3"; + break; + + default: + songName = "sounds/shop_ambiant.mp3"; + break; + } + this.soundObject = SoundManager.createAmbiantSound(this.soundId, songName, + houseItemObject.getPosition(), 800, 0.3); + } + + @Override + public void onDestroy() { + this.soundObject.destroy(); + this.soundObject = null; + SoundManager.getAmbiantSounds().remove(this.soundId); + } + + @Override + public void onInteract() { + + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/i18n/I18n.java b/src/main/java/fr/yuki/yrpf/i18n/I18n.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/i18n/I18n.java rename to src/main/java/fr/yuki/yrpf/i18n/I18n.java index 50c85ca..7600126 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/i18n/I18n.java +++ b/src/main/java/fr/yuki/yrpf/i18n/I18n.java @@ -1,43 +1,40 @@ -package fr.yuki.YukiRPFramework.i18n; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.HashMap; - -public class I18n { - private static HashMap> langs; - - public static void init() throws IOException { - langs = new HashMap<>(); - for (final File fileEntry : new File(WorldManager.getServerConfig().getLangPath()).listFiles()) { - String fileString = new String(Files.readAllBytes(Paths.get(fileEntry.getPath())), StandardCharsets.UTF_8); - - Gson gson = new GsonBuilder().disableHtmlEscaping().create(); - langs.put(fileEntry.getName().split("\\.")[0], gson.fromJson(fileString, - new TypeToken>(){}.getType())); - } - Onset.print("Loaded " + langs.size() + " i18n file(s)"); - } - - public static String t(String lang, String key, String... params) { - if(!langs.containsKey(lang)) return key; - if(!langs.get(lang).containsKey(key)) return key; - String value = langs.get(lang).get(key); - for(int i = 0; i < params.length; i++) { - value = value.replace("{" + i + "}", params[i]); - } - return value; - } -} +package fr.yuki.yrpf.i18n; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashMap; + +public class I18n { + private static HashMap> langs; + + public static void init() throws IOException { + langs = new HashMap<>(); + for (final File fileEntry : new File(WorldManager.getServerConfig().getLangPath()).listFiles()) { + String fileString = new String(Files.readAllBytes(Paths.get(fileEntry.getPath())), StandardCharsets.UTF_8); + + Gson gson = new GsonBuilder().disableHtmlEscaping().create(); + langs.put(fileEntry.getName().split("\\.")[0], gson.fromJson(fileString, + new TypeToken>(){}.getType())); + } + Onset.print("Loaded " + langs.size() + " i18n file(s)"); + } + + public static String t(String lang, String key, String... params) { + if(!langs.containsKey(lang)) return key; + if(!langs.get(lang).containsKey(key)) return key; + String value = langs.get(lang).get(key); + for(int i = 0; i < params.length; i++) { + value = value.replace("{" + i + "}", params[i]); + } + return value; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/inventory/Inventory.java b/src/main/java/fr/yuki/yrpf/inventory/Inventory.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/inventory/Inventory.java rename to src/main/java/fr/yuki/yrpf/inventory/Inventory.java index cdb2e5a..5a4112c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/inventory/Inventory.java +++ b/src/main/java/fr/yuki/yrpf/inventory/Inventory.java @@ -1,297 +1,245 @@ -package fr.yuki.YukiRPFramework.inventory; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.InventoryDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.ItemManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Bag; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.net.payload.AddItemInventoryPayload; -import fr.yuki.YukiRPFramework.net.payload.RemoteItemInventoryPayload; -import fr.yuki.YukiRPFramework.net.payload.UpdateInventoryWeightPayload; -import fr.yuki.YukiRPFramework.net.payload.UpdateItemInventoryPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; -import java.util.stream.Collectors; - -public class Inventory { - private int id; - private int inventoryType; - private int inventoryItemType; - private int characterId; - private int vehicleId; - private String content; - private ArrayList inventoryItems; - - public Inventory() { - this.inventoryItems = new ArrayList(); - } - - /** - * Try to add the inventory item to the inventory, return a existing item if its stacked - * @param inventoryItem The item - * @return The inventory item affected - */ - public InventoryItem addItem(InventoryItem inventoryItem) { - for(InventoryItem inventoryItemEntry : this.inventoryItems) { - if(inventoryItemEntry.canStack(inventoryItem)) { - inventoryItemEntry.setAmount - (inventoryItemEntry.getAmount() + inventoryItem.getAmount()); - this.updateItemPlayerView(inventoryItemEntry); - - // Display the notification - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), - ToastTypeEnum.SUCCESS, - "+" + inventoryItem.getAmount() + " " + - I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); - } - - return inventoryItemEntry; - } - } - this.inventoryItems.add(inventoryItem); - this.addItemPlayerView(inventoryItem); - - // Display the notification - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), - ToastTypeEnum.SUCCESS, - "+" + inventoryItem.getAmount() + " " + - I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); - } - - return inventoryItem; - } - - /** - * Display the new item to the client - * @param inventoryItem The item - */ - public void addItemPlayerView(InventoryItem inventoryItem) { - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; - Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); - if(player == null) return; - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddItemInventoryPayload(inventoryItem))); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - /** - * Update a existing item to the client - * @param inventoryItem The item - */ - public void updateItemPlayerView(InventoryItem inventoryItem) { - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; - Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); - if(player == null) return; - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateItemInventoryPayload(inventoryItem))); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - /** - * Compute the content and save it into the database - */ - public void save() { - try { - if(this.getId() <= 0) return; - this.content = new Gson().toJson(this.inventoryItems); - InventoryDAO.updateInventory(this); - } catch (Exception ex) { - Onset.print("Can't save the inventory: " + ex.toString()); - } - } - - /** - * Clean all items that don't need to be loaded. - */ - public void cleanUnusableItems() { - for(InventoryItem inventoryItem : this.inventoryItems.stream().collect(Collectors.toList())) { - if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) { - this.inventoryItems.remove(inventoryItem); - } - } - this.save(); - } - - /** - * Parse the content into a item array list - */ - public void parseContent() { - this.inventoryItems = new Gson().fromJson(this.content, - new TypeToken>(){}.getType()); - this.cleanUnusableItems(); - } - - /** - * Send all the items to the client - * @param player The player - */ - public void sendInventoryContent(Player player) { - for(InventoryItem inventoryItem : this.inventoryItems) { - this.addItemPlayerView(inventoryItem); - } - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - /** - * Get the max weight of the inventory - * @return The max weight - */ - public float getMaxWeight() { - Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - float baseMaxWeight = 55; - if(state.getCurrentBag() != null) { - Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == state.getCurrentBag().getModelId()) - .findFirst().orElse(null); - return (float) (baseMaxWeight + bag.getBonusWeight()); - } else { - return baseMaxWeight; - } - } - - /** - * Get the current weight of the inventory - * @return The current weight - */ - public float getCurrentWeight() { - float weight = 0; - for(InventoryItem inventoryItem : this.inventoryItems) { - weight += inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount(); - } - return weight; - } - - /** - * Find a item by the type - * @param type Type item id - * @return The inventory item - */ - public InventoryItem getItemByType(String type) { - return this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).findFirst().orElse(null); - } - - public InventoryItem getItem(String id) { - return this.inventoryItems.stream().filter(x -> x.getId().equals(id)).findFirst().orElse(null); - } - - public ArrayList getItemsByType(String type) { - return new ArrayList<>(this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).collect(Collectors.toList())); - } - - /** - * Get the cash amount on the player - * @return The cash amount - */ - public int getCashAmount() { - InventoryItem cashItem = this.getItemByType(ItemTemplateEnum.CASH.id); - if(cashItem == null) return 0; - return cashItem.getAmount(); - } - - /** - * Remove item amount to the inventory, delete it if the amount if higher than the item amount - * @param item The item - * @param amount The amount - */ - public void removeItem(InventoryItem item, int amount) { - if(amount >= item.getAmount()) { - this.inventoryItems.remove(item); - this.save(); - - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - WorldManager.findPlayerByAccountId(this.getCharacterId()) - .callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(item.getId()))); - } - } else { - item.setAmount(item.getAmount() - amount); - this.updateItemPlayerView(item); - this.save(); - } - - // Display the notification - if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { - Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); - WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), - ToastTypeEnum.WARN, - "-" + amount + " " + I18n.t(account.getLang(), "item.name." + item.getTemplateId())); - } - } - - public void updateWeightView() { - WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); - } - - public void throwItem(InventoryItem item, int quantity) { - - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getInventoryType() { - return inventoryType; - } - - public void setInventoryType(int inventoryType) { - this.inventoryType = inventoryType; - } - - public int getInventoryItemType() { - return inventoryItemType; - } - - public void setInventoryItemType(int inventoryItemType) { - this.inventoryItemType = inventoryItemType; - } - - public int getCharacterId() { - return characterId; - } - - public void setCharacterId(int characterId) { - this.characterId = characterId; - } - - public int getVehicleId() { - return vehicleId; - } - - public void setVehicleId(int vehicleId) { - this.vehicleId = vehicleId; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public ArrayList getInventoryItems() { - return inventoryItems; - } - - public void setInventoryItems(ArrayList inventoryItems) { - this.inventoryItems = inventoryItems; - } -} +package fr.yuki.yrpf.inventory; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.ItemManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Bag; +import fr.yuki.yrpf.net.payload.AddItemInventoryPayload; +import fr.yuki.yrpf.net.payload.RemoteItemInventoryPayload; +import fr.yuki.yrpf.net.payload.UpdateInventoryWeightPayload; +import fr.yuki.yrpf.net.payload.UpdateItemInventoryPayload; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Getter @Setter @Table("tbl_inventory") +public class Inventory extends Model { + @Column(column = "id_inventory") + private int id; + @Column + private int inventoryType = -1; + @Column + private int inventoryItemType = -1; + @Column + private int characterId = -1; + @Column + private int vehicleId = -1; + @Column(size = 0) + private String content = "[]"; + + private ArrayList inventoryItems = new ArrayList<>(); + + /** + * Try to add the inventory item to the inventory, return a existing item if its stacked + * @param inventoryItem The item + * @return The inventory item affected + */ + public InventoryItem addItem(InventoryItem inventoryItem) { + for(InventoryItem inventoryItemEntry : this.inventoryItems) { + if(inventoryItemEntry.canStack(inventoryItem)) { + inventoryItemEntry.setAmount + (inventoryItemEntry.getAmount() + inventoryItem.getAmount()); + this.updateItemPlayerView(inventoryItemEntry); + + // Display the notification + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), + ToastTypeEnum.SUCCESS, + "+" + inventoryItem.getAmount() + " " + + I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); + } + + return inventoryItemEntry; + } + } + this.inventoryItems.add(inventoryItem); + this.addItemPlayerView(inventoryItem); + + // Display the notification + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), + ToastTypeEnum.SUCCESS, + "+" + inventoryItem.getAmount() + " " + + I18n.t(account.getLang(), "item.name." + inventoryItem.getTemplateId())); + } + + return inventoryItem; + } + + /** + * Display the new item to the client + * @param inventoryItem The item + */ + public void addItemPlayerView(InventoryItem inventoryItem) { + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; + Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); + if(player == null) return; + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddItemInventoryPayload(inventoryItem))); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + /** + * Update a existing item to the client + * @param inventoryItem The item + */ + public void updateItemPlayerView(InventoryItem inventoryItem) { + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) == null) return; + Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); + if(player == null) return; + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateItemInventoryPayload(inventoryItem))); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + /** + * Compute the content and save it into the database + */ + public void save() { + if(this.getId() < 0) return; + this.content = new Gson().toJson(this.inventoryItems); + super.save(); + } + + /** + * Clean all items that don't need to be loaded. + */ + public void cleanUnusableItems() { + for(InventoryItem inventoryItem : this.inventoryItems.stream().collect(Collectors.toList())) { + if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) { + this.inventoryItems.remove(inventoryItem); + } + } + this.save(); + } + + /** + * Parse the content into a item array list + */ + public void parseContent() { + this.inventoryItems = new Gson().fromJson(this.content, + new TypeToken>(){}.getType()); + this.cleanUnusableItems(); + } + + /** + * Send all the items to the client + * @param player The player + */ + public void sendInventoryContent(Player player) { + for(InventoryItem inventoryItem : this.inventoryItems) { + this.addItemPlayerView(inventoryItem); + } + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + /** + * Get the max weight of the inventory + * @return The max weight + */ + public float getMaxWeight() { + Player player = WorldManager.findPlayerByAccountId(this.getCharacterId()); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + float baseMaxWeight = 55; + if(state.getCurrentBag() != null) { + Bag bag = ItemManager.bags.stream().filter(x -> x.getModelId() == state.getCurrentBag().getModelId()) + .findFirst().orElse(null); + return (float) (baseMaxWeight + bag.getBonusWeight()); + } else { + return baseMaxWeight; + } + } + + /** + * Get the current weight of the inventory + * @return The current weight + */ + public float getCurrentWeight() { + float weight = 0; + for(InventoryItem inventoryItem : this.inventoryItems) { + weight += inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount(); + } + return weight; + } + + /** + * Find a item by the type + * @param type Type item id + * @return The inventory item + */ + public InventoryItem getItemByType(String type) { + return this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).findFirst().orElse(null); + } + + public InventoryItem getItem(String id) { + return this.inventoryItems.stream().filter(x -> x.getId().equals(id)).findFirst().orElse(null); + } + + public List getItemsByType(String type) { + return new ArrayList<>(this.inventoryItems.stream().filter(x -> x.getTemplateId().equals(type)).collect(Collectors.toList())); + } + + /** + * Get the cash amount on the player + * @return The cash amount + */ + public int getCashAmount() { + InventoryItem cashItem = this.getItemByType(ItemTemplateEnum.CASH.id); + if(cashItem == null) return 0; + return cashItem.getAmount(); + } + + /** + * Remove item amount to the inventory, delete it if the amount if higher than the item amount + * @param item The item + * @param amount The amount + */ + public void removeItem(InventoryItem item, int amount) { + if(amount >= item.getAmount()) { + this.inventoryItems.remove(item); + this.save(); + + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + WorldManager.findPlayerByAccountId(this.getCharacterId()) + .callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(item.getId()))); + } + } else { + item.setAmount(item.getAmount() - amount); + this.updateItemPlayerView(item); + this.save(); + } + + // Display the notification + if(WorldManager.findPlayerByAccountId(this.getCharacterId()) != null) { + Account account = WorldManager.getPlayerAccount(WorldManager.findPlayerByAccountId(this.getCharacterId())); + WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(this.getCharacterId()), + ToastTypeEnum.WARN, + "-" + amount + " " + I18n.t(account.getLang(), "item.name." + item.getTemplateId())); + } + } + + public void updateWeightView() { + WorldManager.findPlayerByAccountId(this.getCharacterId()).callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new UpdateInventoryWeightPayload(this.getCurrentWeight(), this.getMaxWeight()))); + } + + public void throwItem(InventoryItem item, int quantity) { + // TODO + } + +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/inventory/InventoryItem.java b/src/main/java/fr/yuki/yrpf/inventory/InventoryItem.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/inventory/InventoryItem.java rename to src/main/java/fr/yuki/yrpf/inventory/InventoryItem.java index 10a37e2..7429a12 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/inventory/InventoryItem.java +++ b/src/main/java/fr/yuki/yrpf/inventory/InventoryItem.java @@ -1,70 +1,70 @@ -package fr.yuki.YukiRPFramework.inventory; - -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; - -import java.util.HashMap; -import java.util.UUID; - -public class InventoryItem { - private String id; - private String templateId; - private int amount; - private HashMap extraProperties; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getTemplateId() { - return templateId; - } - - public void setTemplateId(String templateId) { - this.templateId = templateId; - } - - public int getAmount() { - return amount; - } - - public void setAmount(int amount) { - this.amount = amount; - } - - public ItemTemplate getTemplate() { - return InventoryManager.getItemTemplates().get(Integer.parseInt(this.templateId)); - } - - public HashMap getExtraProperties() { - return extraProperties; - } - - public void setExtraProperties(HashMap extraProperties) { - this.extraProperties = extraProperties; - } - - /** - * Check if the inventory item is the same and then can be stacked - * @param inventoryItem The inventory item to stack - * @return Can be stack - */ - public boolean canStack(InventoryItem inventoryItem) { - if(!templateId.equals(inventoryItem.getTemplateId())) return false; - if(!this.getExtraProperties().equals(inventoryItem.getExtraProperties())) return false; - return true; - } - - public InventoryItem copy() { - InventoryItem inventoryItem = new InventoryItem(); - inventoryItem.setId(UUID.randomUUID().toString()); - inventoryItem.setTemplateId(this.templateId); - inventoryItem.setAmount(this.amount); - inventoryItem.setExtraProperties(this.extraProperties); - return inventoryItem; - } -} +package fr.yuki.yrpf.inventory; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.model.ItemTemplate; + +import java.util.HashMap; +import java.util.UUID; + +public class InventoryItem { + private String id; + private String templateId; + private int amount; + private HashMap extraProperties; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTemplateId() { + return templateId; + } + + public void setTemplateId(String templateId) { + this.templateId = templateId; + } + + public int getAmount() { + return amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public ItemTemplate getTemplate() { + return InventoryManager.getItemTemplates().get(Integer.parseInt(this.templateId)); + } + + public HashMap getExtraProperties() { + return extraProperties; + } + + public void setExtraProperties(HashMap extraProperties) { + this.extraProperties = extraProperties; + } + + /** + * Check if the inventory item is the same and then can be stacked + * @param inventoryItem The inventory item to stack + * @return Can be stack + */ + public boolean canStack(InventoryItem inventoryItem) { + if(!templateId.equals(inventoryItem.getTemplateId())) return false; + if(!this.getExtraProperties().equals(inventoryItem.getExtraProperties())) return false; + return true; + } + + public InventoryItem copy() { + InventoryItem inventoryItem = new InventoryItem(); + inventoryItem.setId(UUID.randomUUID().toString()); + inventoryItem.setTemplateId(this.templateId); + inventoryItem.setAmount(this.amount); + inventoryItem.setExtraProperties(this.extraProperties); + return inventoryItem; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/CustomJob.java b/src/main/java/fr/yuki/yrpf/job/CustomJob.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/job/CustomJob.java rename to src/main/java/fr/yuki/yrpf/job/CustomJob.java index 2d7d0d7..6325e4c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/CustomJob.java +++ b/src/main/java/fr/yuki/yrpf/job/CustomJob.java @@ -1,34 +1,32 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.job.harvest.Garbage; - -import java.util.ArrayList; - -public class CustomJob extends Job { - private String jobName; - private int refillInterval; - - public CustomJob(String jobName, int refillInterval) { - this.jobName = jobName; - this.refillInterval = refillInterval; - this.harvestableObjectsTemplate = new ArrayList<>(); - if(this.setup()) { - this.load(); - } - } - - @Override - public String getJobType() { - return this.jobName; - } - - @Override - public int getRefillInterval() { - return this.refillInterval; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; + +public class CustomJob extends Job { + private String jobName; + private int refillInterval; + + public CustomJob(String jobName, int refillInterval) { + this.jobName = jobName; + this.refillInterval = refillInterval; + this.harvestableObjectsTemplate = new ArrayList<>(); + if(this.setup()) { + this.load(); + } + } + + @Override + public String getJobType() { + return this.jobName; + } + + @Override + public int getRefillInterval() { + return this.refillInterval; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryJob.java b/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java similarity index 67% rename from src/main/java/fr/yuki/YukiRPFramework/job/DeliveryJob.java rename to src/main/java/fr/yuki/yrpf/job/DeliveryJob.java index a18e12c..4ccbc4f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryJob.java +++ b/src/main/java/fr/yuki/yrpf/job/DeliveryJob.java @@ -1,36 +1,35 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.DeliveryPackage; -import fr.yuki.YukiRPFramework.job.harvest.Garbage; - -import java.util.ArrayList; - -public class DeliveryJob extends Job { - public DeliveryJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new DeliveryPackage()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - @Override - public String getJobType() { - return JobEnum.DELIVERY.type; - } - - @Override - public int getRefillInterval() { - return 60000*5; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.DeliveryPackage; + +import java.util.ArrayList; + +public class DeliveryJob extends Job { + public DeliveryJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new DeliveryPackage()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + @Override + public String getJobType() { + return JobEnum.DELIVERY.name(); + } + + @Override + public int getRefillInterval() { + return 60000*5; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryPointConfig.java b/src/main/java/fr/yuki/yrpf/job/DeliveryPointConfig.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/job/DeliveryPointConfig.java rename to src/main/java/fr/yuki/yrpf/job/DeliveryPointConfig.java index ad5feae..c507223 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/DeliveryPointConfig.java +++ b/src/main/java/fr/yuki/yrpf/job/DeliveryPointConfig.java @@ -1,17 +1,17 @@ -package fr.yuki.YukiRPFramework.job; - -import java.util.ArrayList; -import java.util.HashMap; - -public class DeliveryPointConfig { - private HashMap> points; - - - public HashMap> getPoints() { - return points; - } - - public void setPoints(HashMap> points) { - this.points = points; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; +import java.util.HashMap; + +public class DeliveryPointConfig { + private HashMap> points; + + + public HashMap> getPoints() { + return points; + } + + public void setPoints(HashMap> points) { + this.points = points; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/EMSJob.java b/src/main/java/fr/yuki/yrpf/job/EMSJob.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/job/EMSJob.java rename to src/main/java/fr/yuki/yrpf/job/EMSJob.java index 3ce963a..0eebde4 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/EMSJob.java +++ b/src/main/java/fr/yuki/yrpf/job/EMSJob.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; - -import java.util.ArrayList; - -public class EMSJob extends Job { - - public EMSJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - - if(this.setup()) { - this.load(); - } - } - - @Override - public String getJobType() { - return JobEnum.EMS.type; - } - - @Override - public int getRefillInterval() { - return 0; - } - - @Override - public boolean isWhitelisted() { - return true; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; + +import java.util.ArrayList; + +public class EMSJob extends Job { + + public EMSJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + + if(this.setup()) { + this.load(); + } + } + + @Override + public String getJobType() { + return JobEnum.EMS.name(); + } + + @Override + public int getRefillInterval() { + return 0; + } + + @Override + public boolean isWhitelisted() { + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/FisherJob.java b/src/main/java/fr/yuki/yrpf/job/FisherJob.java similarity index 66% rename from src/main/java/fr/yuki/YukiRPFramework/job/FisherJob.java rename to src/main/java/fr/yuki/yrpf/job/FisherJob.java index fa538cc..efc455c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/FisherJob.java +++ b/src/main/java/fr/yuki/yrpf/job/FisherJob.java @@ -1,39 +1,38 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.CooperOre; -import fr.yuki.YukiRPFramework.job.harvest.Salmon; -import fr.yuki.YukiRPFramework.job.harvest.Turtle; - -import java.util.ArrayList; - -public class FisherJob extends Job { - public FisherJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new Salmon()); - this.harvestableObjectsTemplate.add(new Turtle()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - - @Override - public String getJobType() { - return JobEnum.FISHER.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 3; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.Salmon; +import fr.yuki.yrpf.job.harvest.Turtle; + +import java.util.ArrayList; + +public class FisherJob extends Job { + public FisherJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new Salmon()); + this.harvestableObjectsTemplate.add(new Turtle()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + + @Override + public String getJobType() { + return JobEnum.FISHER.name(); + } + + @Override + public int getRefillInterval() { + return 60000 * 3; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/GarbageJob.java b/src/main/java/fr/yuki/yrpf/job/GarbageJob.java similarity index 67% rename from src/main/java/fr/yuki/YukiRPFramework/job/GarbageJob.java rename to src/main/java/fr/yuki/yrpf/job/GarbageJob.java index 1c68969..6269bd7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/GarbageJob.java +++ b/src/main/java/fr/yuki/yrpf/job/GarbageJob.java @@ -1,36 +1,35 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.Garbage; -import fr.yuki.YukiRPFramework.job.harvest.LumberjackTreeCommon; - -import java.util.ArrayList; - -public class GarbageJob extends Job { - public GarbageJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new Garbage()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - @Override - public String getJobType() { - return JobEnum.GARBAGE.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 10; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.Garbage; + +import java.util.ArrayList; + +public class GarbageJob extends Job { + public GarbageJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new Garbage()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + @Override + public String getJobType() { + return JobEnum.GARBAGE.name(); + } + + @Override + public int getRefillInterval() { + return 60000 * 10; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/Job.java b/src/main/java/fr/yuki/yrpf/job/Job.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/job/Job.java rename to src/main/java/fr/yuki/yrpf/job/Job.java index 8df2e37..b004ab4 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/Job.java +++ b/src/main/java/fr/yuki/yrpf/job/Job.java @@ -1,185 +1,180 @@ -package fr.yuki.YukiRPFramework.job; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.model.JobNPC; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.NPC; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.stream.Collectors; - -public abstract class Job { - public abstract String getJobType(); - public abstract int getRefillInterval(); - public abstract boolean isWhitelisted(); - - protected ArrayList harvestableObjectsTemplate; - protected JobConfig jobConfig; - protected ArrayList worldHarvestObjects; - protected ArrayList jobTools; - - public Job() { - this.worldHarvestObjects = new ArrayList<>(); - this.spawnNpcs(); - this.spawnTools(); - - if(this.getRefillInterval() > 0) { - Onset.timer(this.getRefillInterval(), () -> { - refillHarvestResources(); - }); - } - } - - /** - * Spawn npcs for this job - */ - private void spawnNpcs() { - for(JobNPC jobNPC : JobManager.getJobNPCS().stream().filter(x -> x.getJobId().equals(this.getJobType())).collect(Collectors.toList())) { - NPC npc = Onset.getServer().createNPC(new Vector(jobNPC.getX(), jobNPC.getY(), jobNPC.getZ()), jobNPC.getH()); - Onset.getServer().createText3D(jobNPC.getName() + " [Utiliser]", 20, jobNPC.getX(), - jobNPC.getY(), jobNPC.getZ() + 150, 0 , 0 ,0); - npc.setProperty("clothing", jobNPC.getNpcClothing(), true); - npc.setRespawnTime(1); - npc.setHealth(999999); - jobNPC.setNpc(npc); - } - } - - /** - * Spawn tools for the job - */ - private void spawnTools() { - this.jobTools = new ArrayList<>(JobManager.getJobTools().stream() - .filter(x -> x.getJobType().equals(this.getJobType())).collect(Collectors.toList())); - for(JobTool tool : this.jobTools) { - tool.spawn(this); - } - } - - /** - * Setup the job - * @return If the job has been setuo - */ - protected boolean setup() { - try { - new File("yrpf").mkdir(); - if(new File("yrpf/" + this.getJobType() + ".json").exists()) return true; - new File("yrpf/" + this.getJobType() + ".json").createNewFile(); - FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); - - // Create job config file first - this.jobConfig = new JobConfig(); - for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { - Onset.print("Add " + harvestableObject.getName() + " to job config file"); - JobSpawn jobSpawn = new JobSpawn(); - jobSpawn.setName(harvestableObject.getName()); - this.jobConfig.getResources().add(jobSpawn); - } - fileWriter.write(new Gson().toJson(this.jobConfig)); - fileWriter.close(); - return false; - } catch (Exception e) { - e.printStackTrace(); - Onset.print("Can't create job cache: " + e.toString()); - return false; - } - } - - /** - * Load resources for the job and the config - */ - protected void load() { - try { - new File("yrpf").mkdir(); - this.jobConfig = new Gson().fromJson(new FileReader("yrpf/" + this.getJobType() + ".json"), JobConfig.class); - for(JobSpawn jobSpawn : this.jobConfig.getResources()) { - Onset.print("Loaded " + jobSpawn.getName() + " from the job file " + this.getJobType() + " with " + jobSpawn.getSpawns().size() + " spawn point(s)"); - } - - // Check missing ressources with new update - for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { - if(this.jobConfig.getResources().stream() - .filter(x -> x.getName().equals(harvestableObject.getName())).findFirst().orElse(null) == null) { - JobSpawn jobSpawn = new JobSpawn(); - jobSpawn.setName(harvestableObject.getName()); - this.jobConfig.getResources().add(jobSpawn); - this.saveConfig(); - Onset.print("Add missing job ressource: " + harvestableObject.getName()); - } - } - } catch (Exception e) { - Onset.print("Can't load job cache: " + e.toString()); - } - } - - /** - * Save the job config as a json file - */ - public void saveConfig() { - try { - FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); - fileWriter.write(new Gson().toJson(this.jobConfig)); - fileWriter.close(); - } catch (Exception e) { - Onset.print("Can't save the job config: " + e.toString()); - } - } - - /** - * Refill all resources for this job - */ - public void refillHarvestResources() { - Onset.print("Refill resources for job=" + this.getJobType()); - for(JobSpawn jobSpawn : this.jobConfig.getResources()) { - HarvestableObject harvestableObject = this.harvestableObjectsTemplate.stream() - .filter(x -> x.getName().equals(jobSpawn.getName())).findFirst().orElse(null); - for(JobSpawnPosition jobSpawnPosition : jobSpawn.getSpawns()) { - if(this.worldHarvestObjects.stream().filter(x -> x.getJobSpawnPosition().getUuid().equals(jobSpawnPosition.getUuid())) - .findFirst().orElse(null) != null) { - continue; - } - WorldObject worldObject = Onset.getServer().createObject(new Vector(jobSpawnPosition.getX(), - jobSpawnPosition.getY(), jobSpawnPosition.getZ() - 100), harvestableObject.getModelId()); - worldObject.setScale(harvestableObject.getScale()); - worldObject.setProperty("harvestable", 1, true); - worldObject.setProperty("harvestableResourceName", harvestableObject.getName(), true); - worldObject.setProperty("harvestableInteractDistance", harvestableObject.distanceToInteract(), true); - if(ModdingManager.isCustomModelId(harvestableObject.getModelId())) - ModdingManager.assignCustomModel(worldObject, harvestableObject.getModelId()); - WorldHarvestObject worldHarvestObject = new WorldHarvestObject(jobSpawn, jobSpawnPosition, - harvestableObject, worldObject, this); - this.worldHarvestObjects.add(worldHarvestObject); - } - } - } - - public ArrayList getWorldHarvestObjects() { - return worldHarvestObjects; - } - - public ArrayList getHarvestableObjectsTemplate() { - return harvestableObjectsTemplate; - } - - public JobConfig getJobConfig() { - return jobConfig; - } - - public ArrayList getJobTools() { - return jobTools; - } -} +package fr.yuki.yrpf.job; + +import com.google.gson.Gson; +import fr.yuki.yrpf.job.harvest.HarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.model.JobNPC; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.NPC; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.util.ArrayList; +import java.util.stream.Collectors; + +public abstract class Job { + public abstract String getJobType(); + public abstract int getRefillInterval(); + public abstract boolean isWhitelisted(); + + protected ArrayList harvestableObjectsTemplate; + protected JobConfig jobConfig; + protected ArrayList worldHarvestObjects; + protected ArrayList jobTools; + + public Job() { + this.worldHarvestObjects = new ArrayList<>(); + this.spawnNpcs(); + this.spawnTools(); + + if(this.getRefillInterval() > 0) { + Onset.timer(this.getRefillInterval(), () -> { + refillHarvestResources(); + }); + } + } + + /** + * Spawn npcs for this job + */ + private void spawnNpcs() { + for(JobNPC jobNPC : JobManager.getJobNPCS().stream().filter(x -> x.getJobId().equals(this.getJobType())).collect(Collectors.toList())) { + NPC npc = Onset.getServer().createNPC(new Vector(jobNPC.getX(), jobNPC.getY(), jobNPC.getZ()), jobNPC.getH()); + Onset.getServer().createText3D(jobNPC.getName() + " [Utiliser]", 20, jobNPC.getX(), + jobNPC.getY(), jobNPC.getZ() + 150, 0 , 0 ,0); + npc.setProperty("clothing", jobNPC.getNpcClothing(), true); + npc.setRespawnTime(1); + npc.setHealth(999999); + jobNPC.setNpc(npc); + } + } + + /** + * Spawn tools for the job + */ + private void spawnTools() { + this.jobTools = new ArrayList<>(JobManager.getJobTools().stream() + .filter(x -> x.getJobType().equals(this.getJobType())).collect(Collectors.toList())); + for(JobTool tool : this.jobTools) { + tool.spawn(this); + } + } + + /** + * Setup the job + * @return If the job has been setuo + */ + protected boolean setup() { + try { + new File("yrpf").mkdir(); + if(new File("yrpf/" + this.getJobType() + ".json").exists()) return true; + new File("yrpf/" + this.getJobType() + ".json").createNewFile(); + FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); + + // Create job config file first + this.jobConfig = new JobConfig(); + for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { + Onset.print("Add " + harvestableObject.getName() + " to job config file"); + JobSpawn jobSpawn = new JobSpawn(); + jobSpawn.setName(harvestableObject.getName()); + this.jobConfig.getResources().add(jobSpawn); + } + fileWriter.write(new Gson().toJson(this.jobConfig)); + fileWriter.close(); + return false; + } catch (Exception e) { + e.printStackTrace(); + Onset.print("Can't create job cache: " + e.toString()); + return false; + } + } + + /** + * Load resources for the job and the config + */ + protected void load() { + try { + new File("yrpf").mkdir(); + this.jobConfig = new Gson().fromJson(new FileReader("yrpf/" + this.getJobType() + ".json"), JobConfig.class); + for(JobSpawn jobSpawn : this.jobConfig.getResources()) { + Onset.print("Loaded " + jobSpawn.getName() + " from the job file " + this.getJobType() + " with " + jobSpawn.getSpawns().size() + " spawn point(s)"); + } + + // Check missing ressources with new update + for(HarvestableObject harvestableObject : this.harvestableObjectsTemplate) { + if(this.jobConfig.getResources().stream() + .filter(x -> x.getName().equals(harvestableObject.getName())).findFirst().orElse(null) == null) { + JobSpawn jobSpawn = new JobSpawn(); + jobSpawn.setName(harvestableObject.getName()); + this.jobConfig.getResources().add(jobSpawn); + this.saveConfig(); + Onset.print("Add missing job ressource: " + harvestableObject.getName()); + } + } + } catch (Exception e) { + Onset.print("Can't load job cache: " + e.toString()); + } + } + + /** + * Save the job config as a json file + */ + public void saveConfig() { + try { + FileWriter fileWriter = new FileWriter("yrpf/" + this.getJobType() + ".json"); + fileWriter.write(new Gson().toJson(this.jobConfig)); + fileWriter.close(); + } catch (Exception e) { + Onset.print("Can't save the job config: " + e.toString()); + } + } + + /** + * Refill all resources for this job + */ + public void refillHarvestResources() { + Onset.print("Refill resources for job=" + this.getJobType()); + for(JobSpawn jobSpawn : this.jobConfig.getResources()) { + HarvestableObject harvestableObject = this.harvestableObjectsTemplate.stream() + .filter(x -> x.getName().equals(jobSpawn.getName())).findFirst().orElse(null); + for(JobSpawnPosition jobSpawnPosition : jobSpawn.getSpawns()) { + if(this.worldHarvestObjects.stream().filter(x -> x.getJobSpawnPosition().getUuid().equals(jobSpawnPosition.getUuid())) + .findFirst().orElse(null) != null) { + continue; + } + WorldObject worldObject = Onset.getServer().createObject(new Vector(jobSpawnPosition.getX(), + jobSpawnPosition.getY(), jobSpawnPosition.getZ() - 100), harvestableObject.getModelId()); + worldObject.setScale(harvestableObject.getScale()); + worldObject.setProperty("harvestable", 1, true); + worldObject.setProperty("harvestableResourceName", harvestableObject.getName(), true); + worldObject.setProperty("harvestableInteractDistance", harvestableObject.distanceToInteract(), true); + if(ModdingManager.isCustomModelId(harvestableObject.getModelId())) + ModdingManager.assignCustomModel(worldObject, harvestableObject.getModelId()); + WorldHarvestObject worldHarvestObject = new WorldHarvestObject(jobSpawn, jobSpawnPosition, + harvestableObject, worldObject, this); + this.worldHarvestObjects.add(worldHarvestObject); + } + } + } + + public ArrayList getWorldHarvestObjects() { + return worldHarvestObjects; + } + + public ArrayList getHarvestableObjectsTemplate() { + return harvestableObjectsTemplate; + } + + public JobConfig getJobConfig() { + return jobConfig; + } + + public ArrayList getJobTools() { + return jobTools; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/JobConfig.java b/src/main/java/fr/yuki/yrpf/job/JobConfig.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/job/JobConfig.java rename to src/main/java/fr/yuki/yrpf/job/JobConfig.java index b8911be..a2544fd 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/JobConfig.java +++ b/src/main/java/fr/yuki/yrpf/job/JobConfig.java @@ -1,22 +1,19 @@ -package fr.yuki.YukiRPFramework.job; - -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class JobConfig { - private ArrayList resources; - - public JobConfig() { - this.resources = new ArrayList<>(); - } - - public ArrayList getResources() { - return resources; - } - - public void setResources(ArrayList resources) { - this.resources = resources; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; + +public class JobConfig { + private ArrayList resources; + + public JobConfig() { + this.resources = new ArrayList<>(); + } + + public ArrayList getResources() { + return resources; + } + + public void setResources(ArrayList resources) { + this.resources = resources; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawn.java b/src/main/java/fr/yuki/yrpf/job/JobSpawn.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/job/JobSpawn.java rename to src/main/java/fr/yuki/yrpf/job/JobSpawn.java index 2654c5b..507eb89 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawn.java +++ b/src/main/java/fr/yuki/yrpf/job/JobSpawn.java @@ -1,34 +1,33 @@ -package fr.yuki.YukiRPFramework.job; - -import java.util.ArrayList; -import java.util.UUID; - -public class JobSpawn { - private String name; - private ArrayList spawns; - - public JobSpawn() { - this.spawns = new ArrayList<>(); - } - - public JobSpawn(String name, ArrayList spawns) { - this.name = name; - this.spawns = spawns; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public ArrayList getSpawns() { - return spawns; - } - - public void setSpawns(ArrayList spawns) { - this.spawns = spawns; - } -} +package fr.yuki.yrpf.job; + +import java.util.ArrayList; + +public class JobSpawn { + private String name; + private ArrayList spawns; + + public JobSpawn() { + this.spawns = new ArrayList<>(); + } + + public JobSpawn(String name, ArrayList spawns) { + this.name = name; + this.spawns = spawns; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ArrayList getSpawns() { + return spawns; + } + + public void setSpawns(ArrayList spawns) { + this.spawns = spawns; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawnPosition.java b/src/main/java/fr/yuki/yrpf/job/JobSpawnPosition.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/job/JobSpawnPosition.java rename to src/main/java/fr/yuki/yrpf/job/JobSpawnPosition.java index 4657848..49924b3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/JobSpawnPosition.java +++ b/src/main/java/fr/yuki/yrpf/job/JobSpawnPosition.java @@ -1,42 +1,42 @@ -package fr.yuki.YukiRPFramework.job; - -import java.util.UUID; - -public class JobSpawnPosition { - private final String uuid; - private double x; - private double y; - private double z; - - public JobSpawnPosition() { - this.uuid = UUID.randomUUID().toString(); - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public String getUuid() { - return uuid; - } -} +package fr.yuki.yrpf.job; + +import java.util.UUID; + +public class JobSpawnPosition { + private final String uuid; + private double x; + private double y; + private double z; + + public JobSpawnPosition() { + this.uuid = UUID.randomUUID().toString(); + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public String getUuid() { + return uuid; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/LumberjackJob.java b/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java similarity index 74% rename from src/main/java/fr/yuki/YukiRPFramework/job/LumberjackJob.java rename to src/main/java/fr/yuki/yrpf/job/LumberjackJob.java index ebf847c..7e81a9c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/LumberjackJob.java +++ b/src/main/java/fr/yuki/yrpf/job/LumberjackJob.java @@ -1,44 +1,44 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.LumberjackTreeCommon; -import java.util.ArrayList; - -/** - * Lumberjack job - */ -public class LumberjackJob extends Job { - - public LumberjackJob() { - super(); - - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new LumberjackTreeCommon()); - - if(this.setup()) { - this.load(); - } - - this.spawnNpc(); - this.refillHarvestResources(); - } - - private static void spawnNpc() { - - } - - @Override - public String getJobType() { - return JobEnum.LUMBERJACK.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 5; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.LumberjackTreeCommon; +import java.util.ArrayList; + +/** + * Lumberjack job + */ +public class LumberjackJob extends Job { + + public LumberjackJob() { + super(); + + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new LumberjackTreeCommon()); + + if(this.setup()) { + this.load(); + } + + this.spawnNpc(); + this.refillHarvestResources(); + } + + private static void spawnNpc() { + + } + + @Override + public String getJobType() { + return JobEnum.LUMBERJACK.name(); + } + + @Override + public int getRefillInterval() { + return 60000 * 5; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/MinerJob.java b/src/main/java/fr/yuki/yrpf/job/MinerJob.java similarity index 65% rename from src/main/java/fr/yuki/YukiRPFramework/job/MinerJob.java rename to src/main/java/fr/yuki/yrpf/job/MinerJob.java index 600897d..6232d5f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/MinerJob.java +++ b/src/main/java/fr/yuki/yrpf/job/MinerJob.java @@ -1,39 +1,38 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.harvest.CooperOre; -import fr.yuki.YukiRPFramework.job.harvest.DeliveryPackage; -import fr.yuki.YukiRPFramework.job.harvest.IronOre; - -import java.util.ArrayList; - -public class MinerJob extends Job { - public MinerJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - this.harvestableObjectsTemplate.add(new CooperOre()); - this.harvestableObjectsTemplate.add(new IronOre()); - - if(this.setup()) { - this.load(); - } - - this.refillHarvestResources(); - } - - - @Override - public String getJobType() { - return JobEnum.MINER.type; - } - - @Override - public int getRefillInterval() { - return 60000 * 10; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.harvest.CooperOre; +import fr.yuki.yrpf.job.harvest.IronOre; + +import java.util.ArrayList; + +public class MinerJob extends Job { + public MinerJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + this.harvestableObjectsTemplate.add(new CooperOre()); + this.harvestableObjectsTemplate.add(new IronOre()); + + if(this.setup()) { + this.load(); + } + + this.refillHarvestResources(); + } + + + @Override + public String getJobType() { + return JobEnum.MINER.name(); + } + + @Override + public int getRefillInterval() { + return 60000 * 10; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/ObjectPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/ObjectPlacementInstance.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/job/ObjectPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/ObjectPlacementInstance.java index 3c303a6..4d09a67 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/ObjectPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/ObjectPlacementInstance.java @@ -1,50 +1,50 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public abstract class ObjectPlacementInstance { - private String uuid; - private WorldObject worldObject; - private int modelId; - private Vector spawnPoint; - - public ObjectPlacementInstance(int modelId, Vector spawnPoint) { - this.uuid = UUID.randomUUID().toString(); - this.modelId = modelId; - this.spawnPoint = spawnPoint; - } - - public void spawn() { - this.worldObject = Onset.getServer().createObject(this.spawnPoint, this.modelId); - if(ModdingManager.isCustomModelId(this.modelId)){ - ModdingManager.assignCustomModel(this.worldObject, this.modelId); - } - } - - public void setEditableBy(Player player) { - this.worldObject.setProperty("editable", 1, true); - this.worldObject.setProperty("editable_by", player.getId(), true); - this.worldObject.setProperty("no_collision", 1, true); - this.worldObject.setProperty("uuid", this.uuid, true); - } - - public abstract void onPlacementDone(Player player, Vector position, Vector rotation); - - public void destroy() { - this.worldObject.destroy(); - } - - public String getUuid() { - return uuid; - } - - public int getModelId() { - return modelId; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +public abstract class ObjectPlacementInstance { + private String uuid; + private WorldObject worldObject; + private int modelId; + private Vector spawnPoint; + + public ObjectPlacementInstance(int modelId, Vector spawnPoint) { + this.uuid = UUID.randomUUID().toString(); + this.modelId = modelId; + this.spawnPoint = spawnPoint; + } + + public void spawn() { + this.worldObject = Onset.getServer().createObject(this.spawnPoint, this.modelId); + if(ModdingManager.isCustomModelId(this.modelId)){ + ModdingManager.assignCustomModel(this.worldObject, this.modelId); + } + } + + public void setEditableBy(Player player) { + this.worldObject.setProperty("editable", 1, true); + this.worldObject.setProperty("editable_by", player.getId(), true); + this.worldObject.setProperty("no_collision", 1, true); + this.worldObject.setProperty("uuid", this.uuid, true); + } + + public abstract void onPlacementDone(Player player, Vector position, Vector rotation); + + public void destroy() { + this.worldObject.destroy(); + } + + public String getUuid() { + return uuid; + } + + public int getModelId() { + return modelId; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/PoliceJob.java b/src/main/java/fr/yuki/yrpf/job/PoliceJob.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/job/PoliceJob.java rename to src/main/java/fr/yuki/yrpf/job/PoliceJob.java index 1bd679e..1133073 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/PoliceJob.java +++ b/src/main/java/fr/yuki/yrpf/job/PoliceJob.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; - -import java.util.ArrayList; - -public class PoliceJob extends Job { - public PoliceJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - - if(this.setup()) { - this.load(); - } - } - - @Override - public String getJobType() { - return JobEnum.POLICE.type; - } - - @Override - public int getRefillInterval() { - return 0; - } - - @Override - public boolean isWhitelisted() { - return true; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; + +import java.util.ArrayList; + +public class PoliceJob extends Job { + public PoliceJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + + if(this.setup()) { + this.load(); + } + } + + @Override + public String getJobType() { + return JobEnum.POLICE.name(); + } + + @Override + public int getRefillInterval() { + return 0; + } + + @Override + public boolean isWhitelisted() { + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/WearableWorldObject.java b/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/job/WearableWorldObject.java rename to src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java index 21e88cf..45d0b0c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/WearableWorldObject.java +++ b/src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java @@ -1,234 +1,233 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.customGoal.DeliveryPointGoal; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; -import java.util.UUID; - - -public class WearableWorldObject { - private String uuid; - private int modelId; - private boolean isPhysicEnable; - private Animation wearAnimation; - private CharacterToolAnimation toolAnimation; - private Vector position; - private WorldObject worldObject; - private String vehicleUUID; - private int vehicleStorageLayoutIndex; - private DeliveryPointGoal deliveryPointGoal; - private Vector originPosition; - private long lastInteractionAt; - - public WearableWorldObject(int modelId, boolean isPhysicEnable, Animation wearAnimation, CharacterToolAnimation toolAnimation, Vector position) { - this.uuid = UUID.randomUUID().toString(); - this.modelId = modelId; - this.isPhysicEnable = isPhysicEnable; - this.wearAnimation = wearAnimation; - this.toolAnimation = toolAnimation; - this.position = position; - this.vehicleUUID = ""; - this.originPosition = position; - this.lastInteractionAt = System.currentTimeMillis(); - this.createWorldObject(); - } - - private void createWorldObject() { - this.worldObject = Onset.getServer().createObject(this.position, this.modelId); - this.worldObject.setScale(this.toolAnimation.getScale()); - if(this.isPhysicEnable) - this.worldObject.setProperty("enablePhysic", 1, true); - if(ModdingManager.isCustomModelId(this.modelId)) - ModdingManager.assignCustomModel(this.worldObject, this.modelId); - this.worldObject.setProperty("uuid", this.uuid, true); - this.worldObject.setProperty("canBeWear", 1, true); - } - - public boolean isWeared() { - return this.worldObject == null; - } - - /** - * Wear the object on the player and play the animation - * @param player The player - */ - public void requestWear(Player player) { - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, this); - this.toolAnimation.attach(player); - player.setAnimation(this.wearAnimation); - this.worldObject.destroy(); - Account account = WorldManager.getPlayerAccount(player); - - this.lastInteractionAt = System.currentTimeMillis(); - - // Set the delivery location - if(deliveryPointGoal != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.need_to_be_delivered")); - player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), - deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), - deliveryPointGoal.getPosition().getZ()); - } - } - - /** - * Throw the object on the ground and recreate the world object properly - * @param player The player - */ - public void requestUnwear(Player player, boolean delete) { - Account account = WorldManager.getPlayerAccount(player); - try { - // Put this resource in the chest - if(!delete) { - Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(nearbyVehicle != null) { - if(nearbyVehicle.getLocation().distance(player.getLocation()) < VehicleManager.getInteractionDistance(nearbyVehicle)) { - /**if(!VehicleManager.canStoreWorldWearableObject(nearbyVehicle)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Impossible car ce véhicule ne le permet pas"); - return; - }*/ - if(nearbyVehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); - return; - } - - if(!VehicleManager.storeWorldWearableObject(nearbyVehicle, this)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); - return; - } - - // Unattach the item - this.position = player.getLocation(); - this.toolAnimation.unAttach(); - player.setAnimation(Animation.STOP); - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); - - if(deliveryPointGoal != null) - player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); - - return; - } - } - } - - // Delivery reward - if(deliveryPointGoal != null) { - if(deliveryPointGoal.isNear(player)) { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.DELIVERY.type)).findFirst().orElse(null); - - int rewardPerDistance = (int)Math.floor(((originPosition.distance(player.getLocation()) / 1000) / 2.5)); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, rewardPerDistance, false); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); - delete = true; - JobManager.addExp(player, JobEnum.DELIVERY.type, 15); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.shipped", - String.valueOf(rewardPerDistance), String.valueOf(Math.floor(originPosition.distance(player.getLocation()) / 100)))); - } - player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); - } - - // Throw on ground - this.position = player.getLocation(); - this.toolAnimation.unAttach(); - if(!delete) this.createWorldObject(); - player.setAnimation(Animation.STOP); - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); - this.lastInteractionAt = System.currentTimeMillis(); - - if(delete) JobManager.getWearableWorldObjects().remove(this); - } - catch (Exception ex) { - ex.printStackTrace(); - CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); - } - } - - public void deleteObject() { - if(this.worldObject != null) this.worldObject.destroy(); - JobManager.getWearableWorldObjects().remove(this); - } - - public boolean isExpired() { - if(lastInteractionAt + (60000*5) < System.currentTimeMillis()) { - return true; - } - return false; - } - - /** - * Store this in the chest of a vehicle at a specific location - * @param vehicle The vehicle - * @param storeLayoutTransform The position to store - */ - public void storeInVehicle(Vehicle vehicle, StoreLayoutTransform storeLayoutTransform) { - this.worldObject = Onset.getServer().createObject(this.position, this.modelId); - this.worldObject.attach(vehicle, storeLayoutTransform.getPosition(), storeLayoutTransform.getRotation(), ""); - this.worldObject.setScale(storeLayoutTransform.getScale()); - this.setVehicleUUID(vehicle.getPropertyString("uuid")); - this.setVehicleStorageLayoutIndex(storeLayoutTransform.getIndex()); - if(ModdingManager.isCustomModelId(this.modelId)) - ModdingManager.assignCustomModel(this.worldObject, this.modelId); - } - - public void removeFromVehicle() { - this.setVehicleUUID(""); - this.setVehicleStorageLayoutIndex(-1); - this.worldObject.destroy(); - } - - public String getUuid() { - return uuid; - } - - public Vector getPosition() { - return position; - } - - public int getModelId() { - return modelId; - } - - public String getVehicleUUID() { - return vehicleUUID; - } - - public void setVehicleUUID(String vehicleUUID) { - this.vehicleUUID = vehicleUUID; - } - - public WorldObject getWorldObject() { - return worldObject; - } - - public int getVehicleStorageLayoutIndex() { - return vehicleStorageLayoutIndex; - } - - public void setVehicleStorageLayoutIndex(int vehicleStorageLayoutIndex) { - this.vehicleStorageLayoutIndex = vehicleStorageLayoutIndex; - } - - public DeliveryPointGoal getDeliveryPointGoal() { - return deliveryPointGoal; - } - - public void setDeliveryPointGoal(DeliveryPointGoal deliveryPointGoal) { - this.deliveryPointGoal = deliveryPointGoal; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.customGoal.DeliveryPointGoal; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.entity.WorldObject; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; +import java.util.UUID; + + +public class WearableWorldObject { + private String uuid; + private int modelId; + private boolean isPhysicEnable; + private Animation wearAnimation; + private CharacterToolAnimation toolAnimation; + private Vector position; + private WorldObject worldObject; + private String vehicleUUID; + private int vehicleStorageLayoutIndex; + private DeliveryPointGoal deliveryPointGoal; + private Vector originPosition; + private long lastInteractionAt; + + public WearableWorldObject(int modelId, boolean isPhysicEnable, Animation wearAnimation, CharacterToolAnimation toolAnimation, Vector position) { + this.uuid = UUID.randomUUID().toString(); + this.modelId = modelId; + this.isPhysicEnable = isPhysicEnable; + this.wearAnimation = wearAnimation; + this.toolAnimation = toolAnimation; + this.position = position; + this.vehicleUUID = ""; + this.originPosition = position; + this.lastInteractionAt = System.currentTimeMillis(); + this.createWorldObject(); + } + + private void createWorldObject() { + this.worldObject = Onset.getServer().createObject(this.position, this.modelId); + this.worldObject.setScale(this.toolAnimation.getScale()); + if(this.isPhysicEnable) + this.worldObject.setProperty("enablePhysic", 1, true); + if(ModdingManager.isCustomModelId(this.modelId)) + ModdingManager.assignCustomModel(this.worldObject, this.modelId); + this.worldObject.setProperty("uuid", this.uuid, true); + this.worldObject.setProperty("canBeWear", 1, true); + } + + public boolean isWeared() { + return this.worldObject == null; + } + + /** + * Wear the object on the player and play the animation + * @param player The player + */ + public void requestWear(Player player) { + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, this); + this.toolAnimation.attach(player); + player.setAnimation(this.wearAnimation); + this.worldObject.destroy(); + Account account = WorldManager.getPlayerAccount(player); + + this.lastInteractionAt = System.currentTimeMillis(); + + // Set the delivery location + if(deliveryPointGoal != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.need_to_be_delivered")); + player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), + deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), + deliveryPointGoal.getPosition().getZ()); + } + } + + /** + * Throw the object on the ground and recreate the world object properly + * @param player The player + */ + public void requestUnwear(Player player, boolean delete) { + Account account = WorldManager.getPlayerAccount(player); + try { + // Put this resource in the chest + if(!delete) { + Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(nearbyVehicle != null) { + if(nearbyVehicle.getLocation().distance(player.getLocation()) < VehicleManager.getInteractionDistance(nearbyVehicle)) { + /**if(!VehicleManager.canStoreWorldWearableObject(nearbyVehicle)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Impossible car ce véhicule ne le permet pas"); + return; + }*/ + if(nearbyVehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); + return; + } + + if(!VehicleManager.storeWorldWearableObject(nearbyVehicle, this)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); + return; + } + + // Unattach the item + this.position = player.getLocation(); + this.toolAnimation.unAttach(); + player.setAnimation(Animation.STOP); + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); + + if(deliveryPointGoal != null) + player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); + + return; + } + } + } + + // Delivery reward + if(deliveryPointGoal != null) { + if(deliveryPointGoal.isNear(player)) { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.DELIVERY.name())).findFirst().orElse(null); + + int rewardPerDistance = (int)Math.floor(((originPosition.distance(player.getLocation()) / 1000) / 2.5)); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, rewardPerDistance, false); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); + delete = true; + JobManager.addExp(player, JobEnum.DELIVERY.name(), 15); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.delivery.shipped", + String.valueOf(rewardPerDistance), String.valueOf(Math.floor(originPosition.distance(player.getLocation()) / 100)))); + } + player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); + } + + // Throw on ground + this.position = player.getLocation(); + this.toolAnimation.unAttach(); + if(!delete) this.createWorldObject(); + player.setAnimation(Animation.STOP); + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); + this.lastInteractionAt = System.currentTimeMillis(); + + if(delete) JobManager.getWearableWorldObjects().remove(this); + } + catch (Exception ex) { + ex.printStackTrace(); + CharacterManager.getCharacterStateByPlayer(player).setWearableWorldObject(player, null); + } + } + + public void deleteObject() { + if(this.worldObject != null) this.worldObject.destroy(); + JobManager.getWearableWorldObjects().remove(this); + } + + public boolean isExpired() { + if(lastInteractionAt + (60000*5) < System.currentTimeMillis()) { + return true; + } + return false; + } + + /** + * Store this in the chest of a vehicle at a specific location + * @param vehicle The vehicle + * @param storeLayoutTransform The position to store + */ + public void storeInVehicle(Vehicle vehicle, StoreLayoutTransform storeLayoutTransform) { + this.worldObject = Onset.getServer().createObject(this.position, this.modelId); + this.worldObject.attach(vehicle, storeLayoutTransform.getPosition(), storeLayoutTransform.getRotation(), ""); + this.worldObject.setScale(storeLayoutTransform.getScale()); + this.setVehicleUUID(vehicle.getPropertyString("uuid")); + this.setVehicleStorageLayoutIndex(storeLayoutTransform.getIndex()); + if(ModdingManager.isCustomModelId(this.modelId)) + ModdingManager.assignCustomModel(this.worldObject, this.modelId); + } + + public void removeFromVehicle() { + this.setVehicleUUID(""); + this.setVehicleStorageLayoutIndex(-1); + this.worldObject.destroy(); + } + + public String getUuid() { + return uuid; + } + + public Vector getPosition() { + return position; + } + + public int getModelId() { + return modelId; + } + + public String getVehicleUUID() { + return vehicleUUID; + } + + public void setVehicleUUID(String vehicleUUID) { + this.vehicleUUID = vehicleUUID; + } + + public WorldObject getWorldObject() { + return worldObject; + } + + public int getVehicleStorageLayoutIndex() { + return vehicleStorageLayoutIndex; + } + + public void setVehicleStorageLayoutIndex(int vehicleStorageLayoutIndex) { + this.vehicleStorageLayoutIndex = vehicleStorageLayoutIndex; + } + + public DeliveryPointGoal getDeliveryPointGoal() { + return deliveryPointGoal; + } + + public void setDeliveryPointGoal(DeliveryPointGoal deliveryPointGoal) { + this.deliveryPointGoal = deliveryPointGoal; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/WeedJob.java b/src/main/java/fr/yuki/yrpf/job/WeedJob.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/job/WeedJob.java rename to src/main/java/fr/yuki/yrpf/job/WeedJob.java index f541170..22d3d19 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/WeedJob.java +++ b/src/main/java/fr/yuki/yrpf/job/WeedJob.java @@ -1,46 +1,46 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.ArrayList; - -public class WeedJob extends Job { - private WorldObject dealerBoat; - - public WeedJob() { - super(); - this.harvestableObjectsTemplate = new ArrayList<>(); - - if(this.setup()) { - this.load(); - } - - // Create dealer boat - createDealerBoat(); - } - - private void createDealerBoat() { - this.dealerBoat = Onset.getServer().createObject(new Vector(35336, 195898, -250), 50006); - this.dealerBoat.setRotation(new Vector(0, 90, 0)); - ModdingManager.assignCustomModel(this.dealerBoat, 50006); - } - - @Override - public String getJobType() { - return JobEnum.WEED.type; - } - - @Override - public int getRefillInterval() { - return 0; - } - - @Override - public boolean isWhitelisted() { - return false; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.manager.ModdingManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.ArrayList; + +public class WeedJob extends Job { + private WorldObject dealerBoat; + + public WeedJob() { + super(); + this.harvestableObjectsTemplate = new ArrayList<>(); + + if(this.setup()) { + this.load(); + } + + // Create dealer boat + createDealerBoat(); + } + + private void createDealerBoat() { + this.dealerBoat = Onset.getServer().createObject(new Vector(35336, 195898, -250), 50006); + this.dealerBoat.setRotation(new Vector(0, 90, 0)); + ModdingManager.assignCustomModel(this.dealerBoat, 50006); + } + + @Override + public String getJobType() { + return JobEnum.WEED.name(); + } + + @Override + public int getRefillInterval() { + return 0; + } + + @Override + public boolean isWhitelisted() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/WorldHarvestObject.java b/src/main/java/fr/yuki/yrpf/job/WorldHarvestObject.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/job/WorldHarvestObject.java rename to src/main/java/fr/yuki/yrpf/job/WorldHarvestObject.java index 92e9038..4e446c2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/WorldHarvestObject.java +++ b/src/main/java/fr/yuki/yrpf/job/WorldHarvestObject.java @@ -1,132 +1,130 @@ -package fr.yuki.YukiRPFramework.job; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.harvest.HarvestableObject; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; -import java.util.UUID; - -public class WorldHarvestObject { - private String uuid; - private JobSpawn spawn; - private JobSpawnPosition jobSpawnPosition; - private HarvestableObject harvestableObject; - private WorldObject worldObject; - private boolean available; - private Job job; - - public WorldHarvestObject(JobSpawn spawn, JobSpawnPosition jobSpawnPosition, - HarvestableObject harvestableObject, WorldObject worldObject, Job job) { - this.job = job; - this.uuid = UUID.randomUUID().toString(); - this.spawn = spawn; - this.jobSpawnPosition = jobSpawnPosition; - this.harvestableObject = harvestableObject; - this.worldObject = worldObject; - this.setAvailable(true); - } - - /** - * Check if this resource is near the player - * @param player The player - * @return Is near - */ - public boolean isNear(Player player) { - if(this.worldObject.getLocation().distance(player.getLocation()) <= this.harvestableObject.distanceToInteract()) { - return true; - } - return false; - } - - /** - * Harvest the resource - * @param player The player - */ - public void harvest(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(!this.harvestableObject.checkRequirements(player)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.job.requirement_unrespected")); - return; - } - if(!this.available) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.job.already_used")); - return; - } - - // Check resources level - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(this.job.getJobType())) - .findFirst().orElse(null); - if(characterJobLevel == null) return; - if(characterJobLevel.getJobLevel().getLevel() < this.harvestableObject.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); - return; - } - - Onset.print("Harvest " + this.harvestableObject.getName() + " with a duration of " + this.harvestableObject.getBaseHarvestTime() + "ms"); - this.setAvailable(false); - CharacterManager.setCharacterFreeze(player, true); - CharacterLoopAnimation characterLoopAnimation = harvestableObject.getCharacterLoopHarvestAnimation(player); - characterLoopAnimation.start(); - Onset.delay(this.harvestableObject.getBaseHarvestTime(), () -> { - try { - characterLoopAnimation.stop(); - CharacterManager.setCharacterFreeze(player, false); - - //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, - // "Vous avez récolté " + this.harvestableObject.getName() + " en " + (this.harvestableObject.getBaseHarvestTime() / 1000) + "s"); - - JobManager.addExp(player, job.getJobType(), this.harvestableObject.getXp()); - this.harvestableObject.onHarvestDone(player, this); - - }catch (Exception ex) { - Onset.print("Error when harvesting the object: " + ex.toString()); - } - this.delete(); - }); - } - - /** - * Delete the resource - */ - public void delete() { - this.worldObject.destroy(); - this.job.getWorldHarvestObjects().remove(this); - } - - public boolean isAvailable() { - return available; - } - - public void setAvailable(boolean available) { - this.available = available; - } - - public String getUuid() { - return uuid; - } - - public HarvestableObject getHarvestableObject() { - return harvestableObject; - } - - public Job getJob() { - return job; - } - - public JobSpawnPosition getJobSpawnPosition() { - return jobSpawnPosition; - } -} +package fr.yuki.yrpf.job; + +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.harvest.HarvestableObject; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.ArrayList; +import java.util.UUID; + +public class WorldHarvestObject { + private String uuid; + private JobSpawn spawn; + private JobSpawnPosition jobSpawnPosition; + private HarvestableObject harvestableObject; + private WorldObject worldObject; + private boolean available; + private Job job; + + public WorldHarvestObject(JobSpawn spawn, JobSpawnPosition jobSpawnPosition, + HarvestableObject harvestableObject, WorldObject worldObject, Job job) { + this.job = job; + this.uuid = UUID.randomUUID().toString(); + this.spawn = spawn; + this.jobSpawnPosition = jobSpawnPosition; + this.harvestableObject = harvestableObject; + this.worldObject = worldObject; + this.setAvailable(true); + } + + /** + * Check if this resource is near the player + * @param player The player + * @return Is near + */ + public boolean isNear(Player player) { + if(this.worldObject.getLocation().distance(player.getLocation()) <= this.harvestableObject.distanceToInteract()) { + return true; + } + return false; + } + + /** + * Harvest the resource + * @param player The player + */ + public void harvest(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(!this.harvestableObject.checkRequirements(player)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.job.requirement_unrespected")); + return; + } + if(!this.available) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.job.already_used")); + return; + } + + // Check resources level + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(this.job.getJobType())) + .findFirst().orElse(null); + if(characterJobLevel == null) return; + if(characterJobLevel.getJobLevel().getLevel() < this.harvestableObject.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); + return; + } + + Onset.print("Harvest " + this.harvestableObject.getName() + " with a duration of " + this.harvestableObject.getBaseHarvestTime() + "ms"); + this.setAvailable(false); + CharacterManager.setCharacterFreeze(player, true); + CharacterLoopAnimation characterLoopAnimation = harvestableObject.getCharacterLoopHarvestAnimation(player); + characterLoopAnimation.start(); + Onset.delay(this.harvestableObject.getBaseHarvestTime(), () -> { + try { + characterLoopAnimation.stop(); + CharacterManager.setCharacterFreeze(player, false); + + //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, + // "Vous avez récolté " + this.harvestableObject.getName() + " en " + (this.harvestableObject.getBaseHarvestTime() / 1000) + "s"); + + JobManager.addExp(player, job.getJobType(), this.harvestableObject.getXp()); + this.harvestableObject.onHarvestDone(player, this); + + }catch (Exception ex) { + Onset.print("Error when harvesting the object: " + ex.toString()); + } + this.delete(); + }); + } + + /** + * Delete the resource + */ + public void delete() { + this.worldObject.destroy(); + this.job.getWorldHarvestObjects().remove(this); + } + + public boolean isAvailable() { + return available; + } + + public void setAvailable(boolean available) { + this.available = available; + } + + public String getUuid() { + return uuid; + } + + public HarvestableObject getHarvestableObject() { + return harvestableObject; + } + + public Job getJob() { + return job; + } + + public JobSpawnPosition getJobSpawnPosition() { + return jobSpawnPosition; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/customGoal/DeliveryPointGoal.java b/src/main/java/fr/yuki/yrpf/job/customGoal/DeliveryPointGoal.java similarity index 76% rename from src/main/java/fr/yuki/YukiRPFramework/job/customGoal/DeliveryPointGoal.java rename to src/main/java/fr/yuki/yrpf/job/customGoal/DeliveryPointGoal.java index 2054e79..d1a4ca3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/customGoal/DeliveryPointGoal.java +++ b/src/main/java/fr/yuki/yrpf/job/customGoal/DeliveryPointGoal.java @@ -1,29 +1,28 @@ -package fr.yuki.YukiRPFramework.job.customGoal; - -import fr.yuki.YukiRPFramework.job.DeliveryPointConfig; -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class DeliveryPointGoal { - private JobSpawnPosition position; - private WearableWorldObject wearableWorldObject; - - public DeliveryPointGoal(JobSpawnPosition position, WearableWorldObject wearableWorldObject) { - this.position = position; - this.wearableWorldObject = wearableWorldObject; - } - - public JobSpawnPosition getPosition() { - return position; - } - - public WearableWorldObject getWearableWorldObject() { - return wearableWorldObject; - } - - public boolean isNear(Player player) { - return player.getLocation().distance(new Vector(this.position.getX(), this.position.getY(), this.position.getZ())) <= 200; - } -} +package fr.yuki.yrpf.job.customGoal; + +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class DeliveryPointGoal { + private JobSpawnPosition position; + private WearableWorldObject wearableWorldObject; + + public DeliveryPointGoal(JobSpawnPosition position, WearableWorldObject wearableWorldObject) { + this.position = position; + this.wearableWorldObject = wearableWorldObject; + } + + public JobSpawnPosition getPosition() { + return position; + } + + public WearableWorldObject getWearableWorldObject() { + return wearableWorldObject; + } + + public boolean isNear(Player player) { + return player.getLocation().distance(new Vector(this.position.getX(), this.position.getY(), this.position.getZ())) <= 200; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/DeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/DeliveryPackage.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/DeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/DeliveryPackage.java index 3d1a04c..4573def 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/DeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/DeliveryPackage.java @@ -1,53 +1,52 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -public abstract class DeliveryPackage { - private Player player; - protected Vector position; - protected Vector rotation; - protected WorldObject worldObject; - - public DeliveryPackage(Player player, Vector position, Vector rotation) { - this.player = player; - this.position = position; - this.rotation = rotation; - } - - public abstract Vector getPackageScale(); - public abstract int getModelId(); - public abstract int getTimeForDelivery(); - public abstract void onDelivered(); - - public void spawn() { - Account account = WorldManager.getPlayerAccount(this.player); - UIStateManager.sendNotification(this.player, ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.shipping.time_before_shipped", - String.valueOf(Math.floor(this.getTimeForDelivery() / 1000)) + "s")); - this.worldObject = Onset.getServer().createObject(this.position, this.getModelId()); - if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); - this.worldObject.setRotation(this.rotation); - this.worldObject.setProperty("no_collision", 1, true); - - Onset.delay(this.getTimeForDelivery(), () -> { - Onset.print("Delivery shipped"); - if(WorldManager.findPlayerByAccountId(account.getId()) != null) { - UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(account.getId()), - ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.shipping.shipped")); - } - this.worldObject.destroy(); - this.onDelivered(); - }); - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +public abstract class DeliveryPackage { + private Player player; + protected Vector position; + protected Vector rotation; + protected WorldObject worldObject; + + public DeliveryPackage(Player player, Vector position, Vector rotation) { + this.player = player; + this.position = position; + this.rotation = rotation; + } + + public abstract Vector getPackageScale(); + public abstract int getModelId(); + public abstract int getTimeForDelivery(); + public abstract void onDelivered(); + + public void spawn() { + Account account = WorldManager.getPlayerAccount(this.player); + UIStateManager.sendNotification(this.player, ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.shipping.time_before_shipped", + String.valueOf(Math.floor(this.getTimeForDelivery() / 1000)) + "s")); + this.worldObject = Onset.getServer().createObject(this.position, this.getModelId()); + if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); + this.worldObject.setRotation(this.rotation); + this.worldObject.setProperty("no_collision", 1, true); + + Onset.delay(this.getTimeForDelivery(), () -> { + Onset.print("Delivery shipped"); + if(WorldManager.findPlayerByAccountId(account.getId()) != null) { + UIStateManager.sendNotification(WorldManager.findPlayerByAccountId(account.getId()), + ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.shipping.shipped")); + } + this.worldObject.destroy(); + this.onDelivered(); + }); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GeneratorDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GeneratorDeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java index 6368bcb..41207f5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GeneratorDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GeneratorDeliveryPackage.java @@ -1,53 +1,53 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GeneratorDeliveryPackage extends DeliveryPackage { - public GeneratorDeliveryPackage(Player player, Vector position, Vector rotation) { - super(player, position, rotation); - } - - @Override - public Vector getPackageScale() { - return new Vector(1.3, 1.3, 1.3); - } - - @Override - public int getModelId() { - return 505; - } - - @Override - public int getTimeForDelivery() { - return 5000; - //return (1000*60) * 2; - } - - @Override - public void onDelivered() { - // Init a new job tool - JobTool jobTool = new JobTool(); - jobTool.setId(-1); - jobTool.setModelId(581); - jobTool.setName("Generateur"); - jobTool.setJobType("WEED"); - jobTool.setLevelRequired(1); - jobTool.setReward(0); - jobTool.setX(this.position.getX()); - jobTool.setY(this.position.getY()); - jobTool.setZ(this.position.getZ()); - jobTool.setRx(this.rotation.getX()); - jobTool.setRy(this.rotation.getY()); - jobTool.setRz(this.rotation.getZ()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); - jobTool.setJobToolType("GENERATOR"); - JobManager.getJobTools().add(jobTool); - jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GeneratorDeliveryPackage extends DeliveryPackage { + public GeneratorDeliveryPackage(Player player, Vector position, Vector rotation) { + super(player, position, rotation); + } + + @Override + public Vector getPackageScale() { + return new Vector(1.3, 1.3, 1.3); + } + + @Override + public int getModelId() { + return 505; + } + + @Override + public int getTimeForDelivery() { + return 5000; + //return (1000*60) * 2; + } + + @Override + public void onDelivered() { + // Init a new job tool + JobTool jobTool = new JobTool(); + jobTool.setId(-1); + jobTool.setModelId(581); + jobTool.setName("Generateur"); + jobTool.setJobType("WEED"); + jobTool.setLevelRequired(1); + jobTool.setReward(0); + jobTool.setX(this.position.getX()); + jobTool.setY(this.position.getY()); + jobTool.setZ(this.position.getZ()); + jobTool.setRX(this.rotation.getX()); + jobTool.setRY(this.rotation.getY()); + jobTool.setRZ(this.rotation.getZ()); + jobTool.setSX(1); + jobTool.setSY(1); + jobTool.setSZ(1); + jobTool.setJobToolType("GENERATOR"); + JobManager.getJobTools().add(jobTool); + jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GenericDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java similarity index 57% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GenericDeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java index cab045c..d2d0511 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GenericDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GenericDeliveryPackage.java @@ -1,64 +1,52 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.dao.HouseItemDAO; -import fr.yuki.YukiRPFramework.manager.HouseManager; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.HouseItemObject; -import fr.yuki.YukiRPFramework.model.ItemShopObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; - -public class GenericDeliveryPackage extends DeliveryPackage { - private int modelId; - - public GenericDeliveryPackage(Player player, Vector position, Vector rotation, int modelId) { - super(player, position, rotation); - this.modelId = modelId; - } - - @Override - public Vector getPackageScale() { - return new Vector(1, 1, 1); - } - - @Override - public int getModelId() { - return 505; - } - - @Override - public int getTimeForDelivery() { - return 10000; - } - - @Override - public void onDelivered() { - ItemShopObject itemShopObject = HouseManager.getItemShopObjects().stream() - .filter(x -> x.getModelId() == this.modelId).findFirst().orElse(null); - - HouseItemObject houseItemObject = new HouseItemObject(); - houseItemObject.setId(-1); - houseItemObject.setModelId(this.modelId); - houseItemObject.setFunctionId(itemShopObject == null ? -1 : itemShopObject.getFunctionId()); - houseItemObject.setX(this.position.getX()); - houseItemObject.setY(this.position.getY()); - houseItemObject.setZ(this.position.getZ()); - houseItemObject.setRx(this.rotation.getX()); - houseItemObject.setRy(this.rotation.getY()); - houseItemObject.setRz(this.rotation.getZ()); - House house = HouseManager.getHouseAtLocation(this.position); - house.getHouseItemObjects().add(houseItemObject); - houseItemObject.setHouse(house); - - try { - HouseItemDAO.insertHouseItem(houseItemObject); - } catch (SQLException ex) { - Onset.print("Can't insert the house item: " + ex.toString()); - } - - houseItemObject.spawn(); - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.manager.HouseManager; +import fr.yuki.yrpf.model.House; +import fr.yuki.yrpf.model.HouseItemObject; +import fr.yuki.yrpf.model.ItemShopObject; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GenericDeliveryPackage extends DeliveryPackage { + private int modelId; + + public GenericDeliveryPackage(Player player, Vector position, Vector rotation, int modelId) { + super(player, position, rotation); + this.modelId = modelId; + } + + @Override + public Vector getPackageScale() { + return new Vector(1, 1, 1); + } + + @Override + public int getModelId() { + return 505; + } + + @Override + public int getTimeForDelivery() { + return 10000; + } + + @Override + public void onDelivered() { + ItemShopObject itemShopObject = HouseManager.getItemShopObjects().stream() + .filter(x -> x.getModelId() == this.modelId).findFirst().orElse(null); + + HouseItemObject houseItemObject = new HouseItemObject(); + houseItemObject.setId(-1); + houseItemObject.setModelId(this.modelId); + houseItemObject.setFunctionId(itemShopObject == null ? -1 : itemShopObject.getFunctionId()); + houseItemObject.setPosition(position); + houseItemObject.setRotation(rotation); + House house = HouseManager.getHouseAtLocation(this.position); + house.getHouseItemObjects().add(houseItemObject); + houseItemObject.setHouse(house); + + houseItemObject.save(); + + houseItemObject.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GrowBoxDeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java similarity index 64% rename from src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GrowBoxDeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java index 73b6090..957101d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/deliveryPackage/GrowBoxDeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/deliveryPackage/GrowBoxDeliveryPackage.java @@ -1,74 +1,67 @@ -package fr.yuki.YukiRPFramework.job.deliveryPackage; - -import fr.yuki.YukiRPFramework.dao.GrowboxDAO; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.tools.GrowBox; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; - -public class GrowBoxDeliveryPackage extends DeliveryPackage { - public GrowBoxDeliveryPackage(Player player, Vector position, Vector rotation) { - super(player, position, rotation); - } - - @Override - public Vector getPackageScale() { - return new Vector(2, 2, 2); - } - - @Override - public int getModelId() { - return 505; - } - - @Override - public int getTimeForDelivery() { - return 5000; - //return (1000*60) * 3; - } - - @Override - public void onDelivered() { - // Init a new job tool - JobTool jobTool = new JobTool(); - jobTool.setId(-1); - jobTool.setModelId(50007); - jobTool.setName("GrowBox"); - jobTool.setJobType("WEED"); - jobTool.setLevelRequired(1); - jobTool.setReward(0); - jobTool.setX(this.position.getX()); - jobTool.setY(this.position.getY()); - jobTool.setZ(this.position.getZ()); - jobTool.setRx(this.rotation.getX()); - jobTool.setRy(this.rotation.getY()); - jobTool.setRz(this.rotation.getZ()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); - jobTool.setJobToolType("GROWBOX"); - JobManager.getJobTools().add(jobTool); - jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); - - // Insert new growbox - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - GrowboxModel growboxModel = new GrowboxModel(); - growboxModel.setX(this.position.getX()); - growboxModel.setY(this.position.getY()); - growboxModel.setZ(this.position.getZ()); - growboxModel.setRx(this.rotation.getX()); - growboxModel.setRy(this.rotation.getY()); - growboxModel.setRz(this.rotation.getZ()); - growBox.setGrowboxModel(growboxModel); - try { - GrowboxDAO.insertGrowbox(growboxModel); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } -} +package fr.yuki.yrpf.job.deliveryPackage; + +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.tools.GrowBox; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.GrowboxModel; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GrowBoxDeliveryPackage extends DeliveryPackage { + public GrowBoxDeliveryPackage(Player player, Vector position, Vector rotation) { + super(player, position, rotation); + } + + @Override + public Vector getPackageScale() { + return new Vector(2, 2, 2); + } + + @Override + public int getModelId() { + return 505; + } + + @Override + public int getTimeForDelivery() { + return 5000; + //return (1000*60) * 3; + } + + @Override + public void onDelivered() { + // Init a new job tool + JobTool jobTool = new JobTool(); + jobTool.setId(-1); + jobTool.setModelId(50007); + jobTool.setName("GrowBox"); + jobTool.setJobType("WEED"); + jobTool.setLevelRequired(1); + jobTool.setReward(0); + jobTool.setX(this.position.getX()); + jobTool.setY(this.position.getY()); + jobTool.setZ(this.position.getZ()); + jobTool.setRX(this.rotation.getX()); + jobTool.setRY(this.rotation.getY()); + jobTool.setRZ(this.rotation.getZ()); + jobTool.setSX(1); + jobTool.setSY(1); + jobTool.setSZ(1); + jobTool.setJobToolType("GROWBOX"); + JobManager.getJobTools().add(jobTool); + jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED.name())); + + // Insert new growbox + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + GrowboxModel growboxModel = new GrowboxModel(); + growboxModel.setX(this.position.getX()); + growboxModel.setY(this.position.getY()); + growboxModel.setZ(this.position.getZ()); + growboxModel.setRx(this.rotation.getX()); + growboxModel.setRy(this.rotation.getY()); + growboxModel.setRz(this.rotation.getZ()); + growBox.setGrowboxModel(growboxModel); + growboxModel.save(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CooperOre.java b/src/main/java/fr/yuki/yrpf/job/harvest/CooperOre.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/CooperOre.java rename to src/main/java/fr/yuki/yrpf/job/harvest/CooperOre.java index 337ff2a..8313f7e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CooperOre.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/CooperOre.java @@ -1,94 +1,94 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class CooperOre implements HarvestableObject { - @Override - public String getName() { - return "Mineraie de cuivre"; - } - - @Override - public int getXp() { - return 15; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 20000; - } - - @Override - public int getLevelRequired() { - return 0; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 156; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.MINER_PICKAXE_1; - } - - @Override - public int distanceToInteract() { - return 300; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, - "sounds/pickaxe_hit.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), - new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, - new CharacterToolAnimation(156, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.55,0.55,0.55), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class CooperOre implements HarvestableObject { + @Override + public String getName() { + return "Mineraie de cuivre"; + } + + @Override + public int getXp() { + return 15; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 20000; + } + + @Override + public int getLevelRequired() { + return 0; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 156; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.MINER_PICKAXE_1; + } + + @Override + public int distanceToInteract() { + return 300; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, + "sounds/pickaxe_hit.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), + new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, + new CharacterToolAnimation(156, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.55,0.55,0.55), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CustomHarvestableObject.java b/src/main/java/fr/yuki/yrpf/job/harvest/CustomHarvestableObject.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/CustomHarvestableObject.java rename to src/main/java/fr/yuki/yrpf/job/harvest/CustomHarvestableObject.java index ba91c78..64c2352 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/CustomHarvestableObject.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/CustomHarvestableObject.java @@ -1,127 +1,125 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; -import net.onfirenetwork.onsetjava.plugin.event.Event; - -import java.util.ArrayList; - -public class CustomHarvestableObject implements HarvestableObject { - private final String name; - private final int xp; - private final int baseHarvestTime; - private final int levelRequired; - private final int modelId; - private final int distanceToInteract; - private CharacterLoopAnimation characterLoopAnimation = null; - - private int requiredItem = -1; - - public CustomHarvestableObject(String name, int xp, int baseHarvestTime, - int levelRequired, int modelId, int distanceToInteract) { - this.name = name; - this.xp = xp; - this.baseHarvestTime = baseHarvestTime; - this.levelRequired = levelRequired; - this.modelId = modelId; - this.distanceToInteract = distanceToInteract; - } - - @Override - public String getName() { - return this.name; - } - - @Override - public int getXp() { - return this.xp; - } - - @Override - public ArrayList getSpawns() { - return null; - } - - @Override - public int getBaseHarvestTime() { - return this.baseHarvestTime; - } - - @Override - public int getLevelRequired() { - return this.levelRequired; - } - - @Override - public boolean needItemToHarvest() { - return false; - } - - @Override - public int getModelId() { - return this.modelId; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public ItemTemplateEnum getItemRequired() { - return null; - } - - @Override - public int distanceToInteract() { - return this.distanceToInteract; - } - - @Override - public boolean checkRequirements(Player player) { - if(this.requiredItem != -1) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(String.valueOf(this.requiredItem)) == null) { - return false; - } - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation newLoop = new CharacterLoopAnimation(player, this.characterLoopAnimation.getAnimation(), - this.characterLoopAnimation.getLoopInterval(), this.characterLoopAnimation.getLoopAmount(), - this.characterLoopAnimation.getLoopSound()); - return newLoop; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - Onset.getServer().callLuaEvent("YRPF:JobAPI:OnHarvestDone", player.getId(), - worldHarvestObject.getJob().getJobType(), worldHarvestObject.getHarvestableObject().getName(), worldHarvestObject.getUuid()); - } - - public int getRequiredItem() { - return requiredItem; - } - - public void setRequiredItem(int requiredItem) { - this.requiredItem = requiredItem; - } - - public CharacterLoopAnimation getCharacterLoopAnimation() { - return characterLoopAnimation; - } - - public void setCharacterLoopAnimation(CharacterLoopAnimation characterLoopAnimation) { - this.characterLoopAnimation = characterLoopAnimation; - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class CustomHarvestableObject implements HarvestableObject { + private final String name; + private final int xp; + private final int baseHarvestTime; + private final int levelRequired; + private final int modelId; + private final int distanceToInteract; + private CharacterLoopAnimation characterLoopAnimation = null; + + private int requiredItem = -1; + + public CustomHarvestableObject(String name, int xp, int baseHarvestTime, + int levelRequired, int modelId, int distanceToInteract) { + this.name = name; + this.xp = xp; + this.baseHarvestTime = baseHarvestTime; + this.levelRequired = levelRequired; + this.modelId = modelId; + this.distanceToInteract = distanceToInteract; + } + + @Override + public String getName() { + return this.name; + } + + @Override + public int getXp() { + return this.xp; + } + + @Override + public ArrayList getSpawns() { + return null; + } + + @Override + public int getBaseHarvestTime() { + return this.baseHarvestTime; + } + + @Override + public int getLevelRequired() { + return this.levelRequired; + } + + @Override + public boolean needItemToHarvest() { + return false; + } + + @Override + public int getModelId() { + return this.modelId; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public ItemTemplateEnum getItemRequired() { + return null; + } + + @Override + public int distanceToInteract() { + return this.distanceToInteract; + } + + @Override + public boolean checkRequirements(Player player) { + if(this.requiredItem != -1) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(String.valueOf(this.requiredItem)) == null) { + return false; + } + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation newLoop = new CharacterLoopAnimation(player, this.characterLoopAnimation.getAnimation(), + this.characterLoopAnimation.getLoopInterval(), this.characterLoopAnimation.getLoopAmount(), + this.characterLoopAnimation.getLoopSound()); + return newLoop; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + Onset.getServer().callLuaEvent("YRPF:JobAPI:OnHarvestDone", player.getId(), + worldHarvestObject.getJob().getJobType(), worldHarvestObject.getHarvestableObject().getName(), worldHarvestObject.getUuid()); + } + + public int getRequiredItem() { + return requiredItem; + } + + public void setRequiredItem(int requiredItem) { + this.requiredItem = requiredItem; + } + + public CharacterLoopAnimation getCharacterLoopAnimation() { + return characterLoopAnimation; + } + + public void setCharacterLoopAnimation(CharacterLoopAnimation characterLoopAnimation) { + this.characterLoopAnimation = characterLoopAnimation; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/DeliveryPackage.java b/src/main/java/fr/yuki/yrpf/job/harvest/DeliveryPackage.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/DeliveryPackage.java rename to src/main/java/fr/yuki/yrpf/job/harvest/DeliveryPackage.java index 5450087..7d815b5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/DeliveryPackage.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/DeliveryPackage.java @@ -1,99 +1,99 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.job.JobSpawnPosition; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.job.customGoal.DeliveryPointGoal; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class DeliveryPackage implements HarvestableObject { - @Override - public String getName() { - return "Colis"; - } - - @Override - public int getXp() { - return 0; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 1000; - } - - @Override - public int getLevelRequired() { - return 1; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public boolean needItemToHarvest() { - return false; - } - - @Override - public int getModelId() { - return 508; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return null; - } - - @Override - public int distanceToInteract() { - return 200; - } - - @Override - public boolean checkRequirements(Player player) { - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, - ""); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), - true, Animation.CARRY_IDLE, - new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), - new Vector(0.6,0.6,0.6), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - - // Assign a random delivery location place - ArrayList housesDeliveryLocation = JobManager.getDeliveryPointConfig().getPoints().get("houses"); - JobSpawnPosition deliveryPointPosition = housesDeliveryLocation.get(Basic.randomNumber(0, housesDeliveryLocation.size() -1)); - DeliveryPointGoal deliveryPointGoal = new DeliveryPointGoal(deliveryPointPosition, wearableWorldObject); - wearableWorldObject.setDeliveryPointGoal(deliveryPointGoal); - - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.job.JobSpawnPosition; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.job.customGoal.DeliveryPointGoal; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class DeliveryPackage implements HarvestableObject { + @Override + public String getName() { + return "Colis"; + } + + @Override + public int getXp() { + return 0; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 1000; + } + + @Override + public int getLevelRequired() { + return 1; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public boolean needItemToHarvest() { + return false; + } + + @Override + public int getModelId() { + return 508; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return null; + } + + @Override + public int distanceToInteract() { + return 200; + } + + @Override + public boolean checkRequirements(Player player) { + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, + ""); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), + true, Animation.CARRY_IDLE, + new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), + new Vector(0.6,0.6,0.6), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + + // Assign a random delivery location place + ArrayList housesDeliveryLocation = JobManager.getDeliveryPointConfig().getPoints().get("houses"); + JobSpawnPosition deliveryPointPosition = housesDeliveryLocation.get(Basic.randomNumber(0, housesDeliveryLocation.size() -1)); + DeliveryPointGoal deliveryPointGoal = new DeliveryPointGoal(deliveryPointPosition, wearableWorldObject); + wearableWorldObject.setDeliveryPointGoal(deliveryPointGoal); + + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Garbage.java b/src/main/java/fr/yuki/yrpf/job/harvest/Garbage.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/Garbage.java rename to src/main/java/fr/yuki/yrpf/job/harvest/Garbage.java index 18c0bea..d129465 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Garbage.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/Garbage.java @@ -1,88 +1,88 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Garbage implements HarvestableObject { - @Override - public String getName() { - return "Sac poubelle"; - } - - @Override - public int getXp() { - return 0; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 1000; - } - - @Override - public int getLevelRequired() { - return 1; - } - - @Override - public boolean needItemToHarvest() { - return false; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public int getModelId() { - return 514; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return null; - } - - @Override - public int distanceToInteract() { - return 200; - } - - @Override - public boolean checkRequirements(Player player) { - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, - ""); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), - true, Animation.CARRY_IDLE, - new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), new Vector(1,1,1), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Garbage implements HarvestableObject { + @Override + public String getName() { + return "Sac poubelle"; + } + + @Override + public int getXp() { + return 0; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 1000; + } + + @Override + public int getLevelRequired() { + return 1; + } + + @Override + public boolean needItemToHarvest() { + return false; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public int getModelId() { + return 514; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return null; + } + + @Override + public int distanceToInteract() { + return 200; + } + + @Override + public boolean checkRequirements(Player player) { + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.CARRY_SETDOWN, 1000, 1, + ""); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(this.getModelId(), + true, Animation.CARRY_IDLE, + new CharacterToolAnimation(this.getModelId(), new Vector(-40,35,0), new Vector(-90,0,0), new Vector(1,1,1), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/HarvestableObject.java b/src/main/java/fr/yuki/yrpf/job/harvest/HarvestableObject.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/HarvestableObject.java rename to src/main/java/fr/yuki/yrpf/job/harvest/HarvestableObject.java index f188c2e..78c8825 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/HarvestableObject.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/HarvestableObject.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public interface HarvestableObject { - String getName(); - int getXp(); - ArrayList getSpawns(); - int getBaseHarvestTime(); - int getLevelRequired(); - boolean needItemToHarvest(); - int getModelId(); - Vector getScale(); - ItemTemplateEnum getItemRequired(); - int distanceToInteract(); - boolean checkRequirements(Player player); - CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player); - void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject); -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.job.WorldHarvestObject; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public interface HarvestableObject { + String getName(); + int getXp(); + ArrayList getSpawns(); + int getBaseHarvestTime(); + int getLevelRequired(); + boolean needItemToHarvest(); + int getModelId(); + Vector getScale(); + ItemTemplateEnum getItemRequired(); + int distanceToInteract(); + boolean checkRequirements(Player player); + CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player); + void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject); +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/IronOre.java b/src/main/java/fr/yuki/yrpf/job/harvest/IronOre.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/IronOre.java rename to src/main/java/fr/yuki/yrpf/job/harvest/IronOre.java index 1a5ad09..2f4a86a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/IronOre.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/IronOre.java @@ -1,94 +1,94 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class IronOre implements HarvestableObject { - @Override - public String getName() { - return "Fer Brute"; - } - - @Override - public int getXp() { - return 20; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 25000; - } - - @Override - public int getLevelRequired() { - return 2; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 154; - } - - @Override - public Vector getScale() { - return new Vector(0.1, 0.1, 0.1); - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.MINER_PICKAXE_1; - } - - @Override - public int distanceToInteract() { - return 300; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, - "sounds/pickaxe_hit.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), - new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, - new CharacterToolAnimation(154, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.09,0.09,0.09), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class IronOre implements HarvestableObject { + @Override + public String getName() { + return "Fer Brute"; + } + + @Override + public int getXp() { + return 20; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 25000; + } + + @Override + public int getLevelRequired() { + return 2; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 154; + } + + @Override + public Vector getScale() { + return new Vector(0.1, 0.1, 0.1); + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.MINER_PICKAXE_1; + } + + @Override + public int distanceToInteract() { + return 300; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 5000, 4, + "sounds/pickaxe_hit.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(50003, new Vector(-8,5,20), + new Vector(-90,90,0), new Vector(2, 2, 2), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(156, true, Animation.CARRY_IDLE, + new CharacterToolAnimation(154, new Vector(0,15,0), new Vector(90,-90,0), new Vector(0.09,0.09,0.09), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/LumberjackTreeCommon.java b/src/main/java/fr/yuki/yrpf/job/harvest/LumberjackTreeCommon.java similarity index 76% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/LumberjackTreeCommon.java rename to src/main/java/fr/yuki/yrpf/job/harvest/LumberjackTreeCommon.java index df31bef..e770440 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/LumberjackTreeCommon.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/LumberjackTreeCommon.java @@ -1,97 +1,94 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class LumberjackTreeCommon implements HarvestableObject { - @Override - public String getName() { - return "Arbre commun"; - } - - @Override - public int getXp() { - return 10; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 20000; - } - - @Override - public int getLevelRequired() { - return 1; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 143; - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.LUMBERJACK_HATCHET_1; - } - - @Override - public int distanceToInteract() { - return 200; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 4000, 5, - "sounds/chop_wood.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(50000, new Vector(-45,-6,20), - new Vector(0,0,0), new Vector(0.5, 0.5, 0.5), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - WearableWorldObject wearableWorldObject = new WearableWorldObject(50001, true, Animation.CARRY_SHOULDER_IDLE, - new CharacterToolAnimation(50001, new Vector(5,8,0), new Vector(0,0,90), new Vector(0.5,0.5,0.5), "hand_r"), - new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), - worldHarvestObject.getJobSpawnPosition().getZ())); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class LumberjackTreeCommon implements HarvestableObject { + @Override + public String getName() { + return "Arbre commun"; + } + + @Override + public int getXp() { + return 10; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 20000; + } + + @Override + public int getLevelRequired() { + return 1; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 143; + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.LUMBERJACK_HATCHET_1; + } + + @Override + public int distanceToInteract() { + return 200; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.PICKAXE_SWING, 4000, 5, + "sounds/chop_wood.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(50000, new Vector(-45,-6,20), + new Vector(0,0,0), new Vector(0.5, 0.5, 0.5), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + WearableWorldObject wearableWorldObject = new WearableWorldObject(50001, true, Animation.CARRY_SHOULDER_IDLE, + new CharacterToolAnimation(50001, new Vector(5,8,0), new Vector(0,0,90), new Vector(0.5,0.5,0.5), "hand_r"), + new Vector(worldHarvestObject.getJobSpawnPosition().getX(), worldHarvestObject.getJobSpawnPosition().getY(), + worldHarvestObject.getJobSpawnPosition().getZ())); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Salmon.java b/src/main/java/fr/yuki/yrpf/job/harvest/Salmon.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/Salmon.java rename to src/main/java/fr/yuki/yrpf/job/harvest/Salmon.java index f85fdc9..3647d40 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Salmon.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/Salmon.java @@ -1,89 +1,89 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Salmon implements HarvestableObject { - @Override - public String getName() { - return "Saumon"; - } - - @Override - public int getXp() { - return 15; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 15000; - } - - @Override - public int getLevelRequired() { - return 0; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 50004; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.FISHING_ROD; - } - - @Override - public int distanceToInteract() { - return 2500; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, - "sounds/fishing_1.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), - new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.SALMON.id, Basic.randomNumber(1, 4), true); - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Salmon implements HarvestableObject { + @Override + public String getName() { + return "Saumon"; + } + + @Override + public int getXp() { + return 15; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 15000; + } + + @Override + public int getLevelRequired() { + return 0; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 50004; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.FISHING_ROD; + } + + @Override + public int distanceToInteract() { + return 2500; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, + "sounds/fishing_1.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), + new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.SALMON.id, Basic.randomNumber(1, 4), true); + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Turtle.java b/src/main/java/fr/yuki/yrpf/job/harvest/Turtle.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/job/harvest/Turtle.java rename to src/main/java/fr/yuki/yrpf/job/harvest/Turtle.java index 99e76dd..5a801ca 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/harvest/Turtle.java +++ b/src/main/java/fr/yuki/yrpf/job/harvest/Turtle.java @@ -1,89 +1,88 @@ -package fr.yuki.YukiRPFramework.job.harvest; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.WorldHarvestObject; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Turtle implements HarvestableObject { - @Override - public String getName() { - return "Tortue"; - } - - @Override - public int getXp() { - return 30; - } - - @Override - public ArrayList getSpawns() { - return new ArrayList<>(); - } - - @Override - public int getBaseHarvestTime() { - return 25000; - } - - @Override - public int getLevelRequired() { - return 2; - } - - @Override - public boolean needItemToHarvest() { - return true; - } - - @Override - public int getModelId() { - return 50004; - } - - @Override - public ItemTemplateEnum getItemRequired() { - return ItemTemplateEnum.FISHING_ROD; - } - - @Override - public int distanceToInteract() { - return 2500; - } - - @Override - public boolean checkRequirements(Player player) { - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getItemByType(this.getItemRequired().id) == null) { - return false; - } - return true; - } - - @Override - public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, - "sounds/fishing_1.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), - new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); - return characterLoopAnimation; - } - - @Override - public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.TURTLE.id, 1, true); - } - - @Override - public Vector getScale() { - return new Vector(1, 1, 1); - } -} +package fr.yuki.yrpf.job.harvest; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.WorldHarvestObject; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Turtle implements HarvestableObject { + @Override + public String getName() { + return "Tortue"; + } + + @Override + public int getXp() { + return 30; + } + + @Override + public ArrayList getSpawns() { + return new ArrayList<>(); + } + + @Override + public int getBaseHarvestTime() { + return 25000; + } + + @Override + public int getLevelRequired() { + return 2; + } + + @Override + public boolean needItemToHarvest() { + return true; + } + + @Override + public int getModelId() { + return 50004; + } + + @Override + public ItemTemplateEnum getItemRequired() { + return ItemTemplateEnum.FISHING_ROD; + } + + @Override + public int distanceToInteract() { + return 2500; + } + + @Override + public boolean checkRequirements(Player player) { + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getItemByType(this.getItemRequired().id) == null) { + return false; + } + return true; + } + + @Override + public CharacterLoopAnimation getCharacterLoopHarvestAnimation(Player player) { + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 5000, 1, + "sounds/fishing_1.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(1111, new Vector(-10,10,-20), + new Vector(0,0,0), new Vector(1, 1, 1), "hand_r")); + return characterLoopAnimation; + } + + @Override + public void onHarvestDone(Player player, WorldHarvestObject worldHarvestObject) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.TURTLE.id, 1, true); + } + + @Override + public Vector getScale() { + return new Vector(1, 1, 1); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GeneratorPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/placementObject/GeneratorPlacementInstance.java similarity index 61% rename from src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GeneratorPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/placementObject/GeneratorPlacementInstance.java index dc5e7cd..8e6bd64 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GeneratorPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/placementObject/GeneratorPlacementInstance.java @@ -1,35 +1,33 @@ -package fr.yuki.YukiRPFramework.job.placementObject; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GeneratorDeliveryPackage; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GrowBoxDeliveryPackage; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GeneratorPlacementInstance extends ObjectPlacementInstance { - public GeneratorPlacementInstance(Vector spawnPoint) { - super(581, spawnPoint); - } - - @Override - public void onPlacementDone(Player player, Vector position, Vector rotation) { - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GENERATOR.id); - if(inventoryItem == null) { - return; - } - if(inventoryItem.getAmount() <= 0) { - return; - } - - inventory.removeItem(inventoryItem, 1); - - GeneratorDeliveryPackage generatorDeliveryPackage = new GeneratorDeliveryPackage(player, position, rotation); - generatorDeliveryPackage.spawn(); - } -} +package fr.yuki.yrpf.job.placementObject; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.deliveryPackage.GeneratorDeliveryPackage; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GeneratorPlacementInstance extends ObjectPlacementInstance { + public GeneratorPlacementInstance(Vector spawnPoint) { + super(581, spawnPoint); + } + + @Override + public void onPlacementDone(Player player, Vector position, Vector rotation) { + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GENERATOR.id); + if(inventoryItem == null) { + return; + } + if(inventoryItem.getAmount() <= 0) { + return; + } + + inventory.removeItem(inventoryItem, 1); + + GeneratorDeliveryPackage generatorDeliveryPackage = new GeneratorDeliveryPackage(player, position, rotation); + generatorDeliveryPackage.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GenericPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/placementObject/GenericPlacementInstance.java similarity index 58% rename from src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GenericPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/placementObject/GenericPlacementInstance.java index 85932b2..3e9e8fa 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GenericPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/placementObject/GenericPlacementInstance.java @@ -1,38 +1,36 @@ -package fr.yuki.YukiRPFramework.job.placementObject; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GeneratorDeliveryPackage; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GenericDeliveryPackage; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GenericPlacementInstance extends ObjectPlacementInstance { - private int price; - - public GenericPlacementInstance(Vector spawnPoint, int modelId, int price) { - super(modelId, spawnPoint); - this.price = price; - } - - @Override - public void onPlacementDone(Player player, Vector position, Vector rotation) { - Account account = WorldManager.getPlayerAccount(player); - Inventory inventory = InventoryManager.getMainInventory(player); - if(price > inventory.getCashAmount()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); - return; - } - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), price); - GenericDeliveryPackage genericDeliveryPackage = new GenericDeliveryPackage(player, position, rotation, this.getModelId()); - genericDeliveryPackage.spawn(); - } -} +package fr.yuki.yrpf.job.placementObject; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.deliveryPackage.GenericDeliveryPackage; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GenericPlacementInstance extends ObjectPlacementInstance { + private int price; + + public GenericPlacementInstance(Vector spawnPoint, int modelId, int price) { + super(modelId, spawnPoint); + this.price = price; + } + + @Override + public void onPlacementDone(Player player, Vector position, Vector rotation) { + Account account = WorldManager.getPlayerAccount(player); + Inventory inventory = InventoryManager.getMainInventory(player); + if(price > inventory.getCashAmount()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); + return; + } + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), price); + GenericDeliveryPackage genericDeliveryPackage = new GenericDeliveryPackage(player, position, rotation, this.getModelId()); + genericDeliveryPackage.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GrowBoxPlacementInstance.java b/src/main/java/fr/yuki/yrpf/job/placementObject/GrowBoxPlacementInstance.java similarity index 68% rename from src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GrowBoxPlacementInstance.java rename to src/main/java/fr/yuki/yrpf/job/placementObject/GrowBoxPlacementInstance.java index 1e4060d..dd20206 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/placementObject/GrowBoxPlacementInstance.java +++ b/src/main/java/fr/yuki/yrpf/job/placementObject/GrowBoxPlacementInstance.java @@ -1,37 +1,36 @@ -package fr.yuki.YukiRPFramework.job.placementObject; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.deliveryPackage.GrowBoxDeliveryPackage; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -public class GrowBoxPlacementInstance extends ObjectPlacementInstance { - public GrowBoxPlacementInstance(int modelId, Vector spawnPoint) { - super(modelId, spawnPoint); - } - - @Override - public void onPlacementDone(Player player, Vector position, Vector rotation) { - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GROW_BOX.id); - if(inventoryItem == null) { - Onset.print("Item not found"); - return; - } - if(inventoryItem.getAmount() <= 0) { - Onset.print("Not amount: " + inventoryItem.getAmount()); - return; - } - - inventory.removeItem(inventoryItem, 1); - - GrowBoxDeliveryPackage growBoxDeliveryPackage = new GrowBoxDeliveryPackage(player, position, rotation); - growBoxDeliveryPackage.spawn(); - } -} +package fr.yuki.yrpf.job.placementObject; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.deliveryPackage.GrowBoxDeliveryPackage; +import fr.yuki.yrpf.manager.InventoryManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GrowBoxPlacementInstance extends ObjectPlacementInstance { + public GrowBoxPlacementInstance(int modelId, Vector spawnPoint) { + super(modelId, spawnPoint); + } + + @Override + public void onPlacementDone(Player player, Vector position, Vector rotation) { + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem inventoryItem = inventory.getItemByType(ItemTemplateEnum.TICKET_DELIVERY_GROW_BOX.id); + if(inventoryItem == null) { + Onset.print("Item not found"); + return; + } + if(inventoryItem.getAmount() <= 0) { + Onset.print("Not amount: " + inventoryItem.getAmount()); + return; + } + + inventory.removeItem(inventoryItem, 1); + + GrowBoxDeliveryPackage growBoxDeliveryPackage = new GrowBoxDeliveryPackage(player, position, rotation); + growBoxDeliveryPackage.spawn(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GarbageBin.java b/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java similarity index 65% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/GarbageBin.java rename to src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java index d40f863..aa1581d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GarbageBin.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/GarbageBin.java @@ -1,64 +1,58 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class GarbageBin implements JobToolHandler { - private JobTool jobTool; - - public GarbageBin(JobTool jobTool) { - this.jobTool = jobTool; - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - if(state.getWearableWorldObject().getModelId() != 514) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - JobManager.addExp(player, JobEnum.GARBAGE.type, 20); - - int reward = this.jobTool.getReward(); - if(JobManager.getJobLevelForPlayer(player, this.jobTool.getJobType()) == 2) { - reward = (int)Math.floor(reward * 1.5d); - } - - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, reward, true); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); - - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + reward + "$"); - return false; - } - - @Override - public boolean hasLevelRequired(Player player) { - return true; - } - - @Override - public boolean onUse(Player player) { - return true; - } - - @Override - public boolean canBeUse() { - return false; - } -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.entity.Player; + +public class GarbageBin implements JobToolHandler { + private JobTool jobTool; + + public GarbageBin(JobTool jobTool) { + this.jobTool = jobTool; + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + if(state.getWearableWorldObject().getModelId() != 514) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + JobManager.addExp(player, JobEnum.GARBAGE.name(), 20); + + int reward = this.jobTool.getReward(); + if(JobManager.getJobLevelForPlayer(player, this.jobTool.getJobType()) == 2) { + reward = (int)Math.floor(reward * 1.5d); + } + + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, reward, true); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); + + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + reward + "$"); + return false; + } + + @Override + public boolean hasLevelRequired(Player player) { + return true; + } + + @Override + public boolean onUse(Player player) { + return true; + } + + @Override + public boolean canBeUse() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Generator.java b/src/main/java/fr/yuki/yrpf/job/tools/Generator.java similarity index 74% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/Generator.java rename to src/main/java/fr/yuki/yrpf/job/tools/Generator.java index d7605ec..2b93f8a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Generator.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/Generator.java @@ -1,97 +1,94 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.LoopSound3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class Generator implements JobToolHandler { - private final JobTool jobTool; - private final LoopSound3D loopSound3D; - private boolean isOn; - private int fuel; - - public Generator(JobTool jobTool) { - this.jobTool = jobTool; - this.fuel = 0; - this.isOn = false; - this.loopSound3D = new LoopSound3D("sounds/power_generator.mp3", - new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 2000, 0.05, - 1000*90); - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - return false; - } - - @Override - public boolean hasLevelRequired(Player player) { - return true; - } - - @Override - public boolean onUse(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(!this.isOn) { - if(this.fuel > 0) - this.setOn(true); - else - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.generator.no_fuel")); - } else { - this.setOn(false); - } - return true; - } - - @Override - public boolean canBeUse() { - return true; - } - - public void tickFuel() { - if(!this.isOn) return; - - this.fuel -= 1; - if(this.fuel <= 0) this.setOn(false); - } - - public boolean isOn() { - return isOn; - } - - public void setOn(boolean on) { - isOn = on; - if(isOn) { - this.loopSound3D.start(); - } else { - this.loopSound3D.stop(); - } - } - - public int getFuel() { - return fuel; - } - - public void setFuel(int fuel) { - this.fuel = fuel; - } -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.LoopSound3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +public class Generator implements JobToolHandler { + private final JobTool jobTool; + private final LoopSound3D loopSound3D; + private boolean isOn; + private int fuel; + + public Generator(JobTool jobTool) { + this.jobTool = jobTool; + this.fuel = 0; + this.isOn = false; + this.loopSound3D = new LoopSound3D("sounds/power_generator.mp3", + new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 2000, 0.05, + 1000*90); + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + return false; + } + + @Override + public boolean hasLevelRequired(Player player) { + return true; + } + + @Override + public boolean onUse(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(!this.isOn) { + if(this.fuel > 0) + this.setOn(true); + else + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.generator.no_fuel")); + } else { + this.setOn(false); + } + return true; + } + + @Override + public boolean canBeUse() { + return true; + } + + public void tickFuel() { + if(!this.isOn) return; + + this.fuel -= 1; + if(this.fuel <= 0) this.setOn(false); + } + + public boolean isOn() { + return isOn; + } + + public void setOn(boolean on) { + isOn = on; + if(isOn) { + this.loopSound3D.start(); + } else { + this.loopSound3D.stop(); + } + } + + public int getFuel() { + return fuel; + } + + public void setFuel(int fuel) { + this.fuel = fuel; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GrowBox.java b/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/GrowBox.java rename to src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java index 49cf17c..4ab7fbd 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/GrowBox.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/GrowBox.java @@ -1,247 +1,239 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.GrowboxDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.tools.growbox.Pot; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.modding.LoopSound3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.JobTool; -import fr.yuki.YukiRPFramework.net.payload.AddGrowboxMenuItemPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.SetGrowboxPayload; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.UUID; - -public class GrowBox implements JobToolHandler { - private JobTool jobTool; - private ArrayList pots; - private ArrayList layoutTransforms; - private LoopSound3D loopSound3D; - private GrowboxModel growboxModel; - - public GrowBox(JobTool jobTool) { - this.jobTool = jobTool; - this.pots = new ArrayList<>(); - this.loopSound3D = new LoopSound3D("sounds/white_noise.mp3", - new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 1000, 0.10, - 1000*60); - - this.layoutTransforms = new ArrayList<>(); - this.layoutTransforms.add(new StoreLayoutTransform(0, new Vector(0, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(1, new Vector(50, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(2, new Vector(0, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(0, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); - } - - private void resyncPots() { - for(int i = 0; i < this.pots.size(); i++) { - this.pots.get(i).destroyWorldObject(); - this.pots.get(i).spawnWorldObject(this.layoutTransforms.get(i)); - } - } - - public int getMaxPots() { - return 6; - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - if(state.getWearableWorldObject().getModelId() != 554) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - switch (wearableWorldObject.getModelId()) { - case 554: // Pot - return this.addPot(player, wearableWorldObject); - } - return false; - } - - @Override - public boolean hasLevelRequired(Player player) { - return true; - } - - @Override - public boolean onUse(Player player) { - if(!UIStateManager.handleUIToogle(player, "growboxmenu")) { - CharacterManager.setCharacterFreeze(player, false); - return true; - } - CharacterManager.setCharacterFreeze(player, true); - this.handlePotsRequest(player); - return true; - } - - public void handlePotsRequest(Player player) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetGrowboxPayload(this.jobTool.getUuid()))); - for(Pot pot : this.pots) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - } - } - - @Override - public boolean canBeUse() { - return true; - } - - public void destroy(Player player) { - if(player != null) { - UIStateManager.handleUIToogle(player, "growboxmenu"); - CharacterManager.setCharacterFreeze(player, false); - } - - // Destroy pots - for(Pot pot : this.pots) { - pot.destroyWorldObject(); - } - pots.clear(); - - // Destroy growbox - this.jobTool.destroy(); - try { - GrowboxDAO.deleteGrowbox(this.growboxModel); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - } - - public boolean addPot(Player player, WearableWorldObject wearableWorldObject) { - Onset.print("Add pot request for the growbox"); - Account account = WorldManager.getPlayerAccount(player); - if(this.pots.size() + 1 > this.getMaxPots()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); - return false; - } - - Pot pot = new Pot(this); - this.pots.add(pot); - - this.resyncPots(); - return true; - } - - public void fillPotWater(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem waterItem = inventory.getItemByType(ItemTemplateEnum.WATER.id); - if(waterItem == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_water")); - return; - } - if(pot.getWater() == 100) return; - pot.setWater(100); - inventory.removeItem(waterItem, 1); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - } - - public void fillPotSeed(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem seedItem = inventory.getItemByType(ItemTemplateEnum.WEED_SEED.id); - if(seedItem == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_seed")); - return; - } - if(pot.isSeed()) return; - pot.setSeed(true); - pot.spawnSeed(); - inventory.removeItem(seedItem, 1); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - JobManager.addExp(player, JobEnum.WEED.type, 15); - } - - public void harvestPot(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - if(pot.getState() < 100) return; - if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.WEED.id, 1, true) == null) { - return; - } - pot.removeSeed(); - - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), - 554, pot.getWater(), pot.getState(), pot.isSeed()))); - } - - public void takePot(Player player, String potId) { - Account account = WorldManager.getPlayerAccount(player); - Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); - if(pot == null) { - return; - } - if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.POT.id, 1, true) == null) { - return; - } - pot.destroyWorldObject(); - this.pots.remove(pot); - CharacterManager.setCharacterFreeze(player, false); - UIStateManager.handleUIToogle(player, "growboxmenu"); - } - - public void tickGrow() { - Generator generator = GrowboxManager.getGeneratorOnNearby(new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), - 1500); - if(generator == null) { - if(this.loopSound3D.isActive()) this.loopSound3D.stop(); - return; - } else { - if(!this.loopSound3D.isActive()) this.loopSound3D.start(); - } - for(Pot pot : this.pots) { - pot.grow(); - } - } - - public JobTool getJobTool() { - return jobTool; - } - - public LoopSound3D getLoopSound3D() { - return loopSound3D; - } - - public GrowboxModel getGrowboxModel() { - return growboxModel; - } - - public void setGrowboxModel(GrowboxModel growboxModel) { - this.growboxModel = growboxModel; - } -} +package fr.yuki.yrpf.job.tools; + +import com.google.gson.Gson; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.tools.growbox.Pot; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.modding.LoopSound3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.GrowboxModel; +import fr.yuki.yrpf.model.JobTool; +import fr.yuki.yrpf.net.payload.AddGrowboxMenuItemPayload; +import fr.yuki.yrpf.net.payload.SetGrowboxPayload; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class GrowBox implements JobToolHandler { + private JobTool jobTool; + private ArrayList pots; + private ArrayList layoutTransforms; + private LoopSound3D loopSound3D; + private GrowboxModel growboxModel; + + public GrowBox(JobTool jobTool) { + this.jobTool = jobTool; + this.pots = new ArrayList<>(); + this.loopSound3D = new LoopSound3D("sounds/white_noise.mp3", + new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), 1000, 0.10, + 1000*60); + + this.layoutTransforms = new ArrayList<>(); + this.layoutTransforms.add(new StoreLayoutTransform(0, new Vector(0, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(1, new Vector(50, 0, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(2, new Vector(0, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, 50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(0, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + this.layoutTransforms.add(new StoreLayoutTransform(3, new Vector(50, -50, 0), new Vector(0, 0, 0), new Vector(1.50, 1.50, 2.40))); + } + + private void resyncPots() { + for(int i = 0; i < this.pots.size(); i++) { + this.pots.get(i).destroyWorldObject(); + this.pots.get(i).spawnWorldObject(this.layoutTransforms.get(i)); + } + } + + public int getMaxPots() { + return 6; + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + if(state.getWearableWorldObject().getModelId() != 554) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + switch (wearableWorldObject.getModelId()) { + case 554: // Pot + return this.addPot(player, wearableWorldObject); + } + return false; + } + + @Override + public boolean hasLevelRequired(Player player) { + return true; + } + + @Override + public boolean onUse(Player player) { + if(!UIStateManager.handleUIToogle(player, "growboxmenu")) { + CharacterManager.setCharacterFreeze(player, false); + return true; + } + CharacterManager.setCharacterFreeze(player, true); + this.handlePotsRequest(player); + return true; + } + + public void handlePotsRequest(Player player) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetGrowboxPayload(this.jobTool.getUuid()))); + for(Pot pot : this.pots) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + } + } + + @Override + public boolean canBeUse() { + return true; + } + + public void destroy(Player player) { + if(player != null) { + UIStateManager.handleUIToogle(player, "growboxmenu"); + CharacterManager.setCharacterFreeze(player, false); + } + + // Destroy pots + for(Pot pot : this.pots) { + pot.destroyWorldObject(); + } + pots.clear(); + + // Destroy growbox + this.jobTool.destroy(); + this.growboxModel.delete(); + } + + public boolean addPot(Player player, WearableWorldObject wearableWorldObject) { + Onset.print("Add pot request for the growbox"); + Account account = WorldManager.getPlayerAccount(player); + if(this.pots.size() + 1 > this.getMaxPots()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.vehicle.no_space_left")); + return false; + } + + Pot pot = new Pot(this); + this.pots.add(pot); + + this.resyncPots(); + return true; + } + + public void fillPotWater(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem waterItem = inventory.getItemByType(ItemTemplateEnum.WATER.id); + if(waterItem == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_water")); + return; + } + if(pot.getWater() == 100) return; + pot.setWater(100); + inventory.removeItem(waterItem, 1); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + } + + public void fillPotSeed(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem seedItem = inventory.getItemByType(ItemTemplateEnum.WEED_SEED.id); + if(seedItem == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.growbox.no_seed")); + return; + } + if(pot.isSeed()) return; + pot.setSeed(true); + pot.spawnSeed(); + inventory.removeItem(seedItem, 1); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + JobManager.addExp(player, JobEnum.WEED.name(), 15); + } + + public void harvestPot(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + if(pot.getState() < 100) return; + if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.WEED.id, 1, true) == null) { + return; + } + pot.removeSeed(); + + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGrowboxMenuItemPayload(pot.getUuid(), + 554, pot.getWater(), pot.getState(), pot.isSeed()))); + } + + public void takePot(Player player, String potId) { + Account account = WorldManager.getPlayerAccount(player); + Pot pot = this.pots.stream().filter(x -> x.getUuid().equals(potId)).findFirst().orElse(null); + if(pot == null) { + return; + } + if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.POT.id, 1, true) == null) { + return; + } + pot.destroyWorldObject(); + this.pots.remove(pot); + CharacterManager.setCharacterFreeze(player, false); + UIStateManager.handleUIToogle(player, "growboxmenu"); + } + + public void tickGrow() { + Generator generator = GrowboxManager.getGeneratorOnNearby(new Vector(this.jobTool.getX(), this.jobTool.getY(), this.jobTool.getZ()), + 1500); + if(generator == null) { + if(this.loopSound3D.isActive()) this.loopSound3D.stop(); + return; + } else { + if(!this.loopSound3D.isActive()) this.loopSound3D.start(); + } + for(Pot pot : this.pots) { + pot.grow(); + } + } + + public JobTool getJobTool() { + return jobTool; + } + + public LoopSound3D getLoopSound3D() { + return loopSound3D; + } + + public GrowboxModel getGrowboxModel() { + return growboxModel; + } + + public void setGrowboxModel(GrowboxModel growboxModel) { + this.growboxModel = growboxModel; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/JobToolHandler.java b/src/main/java/fr/yuki/yrpf/job/tools/JobToolHandler.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/JobToolHandler.java rename to src/main/java/fr/yuki/yrpf/job/tools/JobToolHandler.java index 00255af..d139e60 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/JobToolHandler.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/JobToolHandler.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.entity.Player; - -public interface JobToolHandler { - boolean canInteract(Player player); - boolean onUnwear(Player player, WearableWorldObject wearableWorldObject); - boolean hasLevelRequired(Player player); - boolean onUse(Player player); - boolean canBeUse(); -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.entity.Player; + +public interface JobToolHandler { + boolean canInteract(Player player); + boolean onUnwear(Player player, WearableWorldObject wearableWorldObject); + boolean hasLevelRequired(Player player); + boolean onUse(Player player); + boolean canBeUse(); +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Sawmill.java b/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/Sawmill.java rename to src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java index 514f3ac..eca8a8b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/Sawmill.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/Sawmill.java @@ -1,87 +1,87 @@ -package fr.yuki.YukiRPFramework.job.tools; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.*; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.JobTool; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.util.ArrayList; - -public class Sawmill implements JobToolHandler { - private JobTool jobTool; - private boolean isAvailable; - - public Sawmill(JobTool jobTool) { - this.jobTool = jobTool; - this.isAvailable = true; - } - - @Override - public boolean canInteract(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() == null) return false; - if(state.getWearableWorldObject().getModelId() != 50001) return false; - return true; - } - - @Override - public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { - Account account = WorldManager.getPlayerAccount(player); - if(!this.isAvailable) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.already_used")); - return false; - } - this.isAvailable = false; - WorldObject worldObject = Onset.getServer().createObject(new Vector(0,0,0), wearableWorldObject.getModelId()); - if(ModdingManager.isCustomModelId(wearableWorldObject.getModelId())) - ModdingManager.assignCustomModel(worldObject, wearableWorldObject.getModelId()); - SoundManager.playSound3D("sounds/saw_mill_cut.mp3", player.getLocation(), 1000, 0.8); - JobManager.addExp(player, JobEnum.LUMBERJACK.type, 20); - worldObject.attach(this.jobTool.getWorldObject(), new Vector(0, 0,160), new Vector(0, 0, 0), ""); - Onset.delay(8000, () -> { - worldObject.destroy(); - this.isAvailable = true; - - // Create the plank - WearableWorldObject woodPlank = new WearableWorldObject(1574, true, - Animation.CARRY_SHOULDER_IDLE, - new CharacterToolAnimation(1574, new Vector(10, 10 ,20), - new Vector(0, 0, 90), new Vector(0.5, 0.5, 0.5), "hand_r"), - new Vector(this.jobTool.getX() + 100, this.jobTool.getY() + 100, this.jobTool.getZ() + 50)); - JobManager.getWearableWorldObjects().add(woodPlank); - }); - return true; - } - - @Override - public boolean hasLevelRequired(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.LUMBERJACK.type)) - .findFirst().orElse(null); - if(characterJobLevel == null) return false; - if(characterJobLevel.getJobLevel().getLevel() < 2) return false; - return true; - } - - @Override - public boolean onUse(Player player) { - return false; - } - - @Override - public boolean canBeUse() { - return false; - } -} +package fr.yuki.yrpf.job.tools; + +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.*; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.JobTool; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.ArrayList; + +public class Sawmill implements JobToolHandler { + private JobTool jobTool; + private boolean isAvailable; + + public Sawmill(JobTool jobTool) { + this.jobTool = jobTool; + this.isAvailable = true; + } + + @Override + public boolean canInteract(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() == null) return false; + if(state.getWearableWorldObject().getModelId() != 50001) return false; + return true; + } + + @Override + public boolean onUnwear(Player player, WearableWorldObject wearableWorldObject) { + Account account = WorldManager.getPlayerAccount(player); + if(!this.isAvailable) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.already_used")); + return false; + } + this.isAvailable = false; + WorldObject worldObject = Onset.getServer().createObject(new Vector(0,0,0), wearableWorldObject.getModelId()); + if(ModdingManager.isCustomModelId(wearableWorldObject.getModelId())) + ModdingManager.assignCustomModel(worldObject, wearableWorldObject.getModelId()); + SoundManager.playSound3D("sounds/saw_mill_cut.mp3", player.getLocation(), 1000, 0.8); + JobManager.addExp(player, JobEnum.LUMBERJACK.name(), 20); + worldObject.attach(this.jobTool.getWorldObject(), new Vector(0, 0,160), new Vector(0, 0, 0), ""); + Onset.delay(8000, () -> { + worldObject.destroy(); + this.isAvailable = true; + + // Create the plank + WearableWorldObject woodPlank = new WearableWorldObject(1574, true, + Animation.CARRY_SHOULDER_IDLE, + new CharacterToolAnimation(1574, new Vector(10, 10 ,20), + new Vector(0, 0, 90), new Vector(0.5, 0.5, 0.5), "hand_r"), + new Vector(this.jobTool.getX() + 100, this.jobTool.getY() + 100, this.jobTool.getZ() + 50)); + JobManager.getWearableWorldObjects().add(woodPlank); + }); + return true; + } + + @Override + public boolean hasLevelRequired(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(JobEnum.LUMBERJACK.name())) + .findFirst().orElse(null); + if(characterJobLevel == null) return false; + if(characterJobLevel.getJobLevel().getLevel() < 2) return false; + return true; + } + + @Override + public boolean onUse(Player player) { + return false; + } + + @Override + public boolean canBeUse() { + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/job/tools/growbox/Pot.java b/src/main/java/fr/yuki/yrpf/job/tools/growbox/Pot.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/job/tools/growbox/Pot.java rename to src/main/java/fr/yuki/yrpf/job/tools/growbox/Pot.java index c965a23..6f68627 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/job/tools/growbox/Pot.java +++ b/src/main/java/fr/yuki/yrpf/job/tools/growbox/Pot.java @@ -1,114 +1,114 @@ -package fr.yuki.YukiRPFramework.job.tools.growbox; - -import fr.yuki.YukiRPFramework.job.tools.GrowBox; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.StoreLayoutTransform; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public class Pot { - private String uuid; - private GrowBox growBox; - private WorldObject worldObject; - private int water; - private int state; - private boolean seed; - private int currentRate; - private WorldObject seedObject; - - public Pot(GrowBox growBox) { - this.uuid = UUID.randomUUID().toString(); - this.growBox = growBox; - this.water = 0; - this.state = 0; - this.currentRate = 1; - this.seed = false; - } - - public void spawnWorldObject(StoreLayoutTransform transform) { - this.worldObject = Onset.getServer().createObject(new Vector(0, 0,0), 554); - this.worldObject.attach(this.growBox.getJobTool().getWorldObject(), transform.getPosition(), transform.getRotation()); - this.worldObject.setScale(transform.getScale()); - this.spawnSeed(); - } - - public void destroyWorldObject() { - if(this.worldObject != null) { - this.worldObject.destroy(); - this.worldObject = null; - if(this.seedObject != null) { - this.seedObject.destroy(); - this.seedObject = null; - } - } - } - - public void spawnSeed() { - if(this.seedObject != null) return; - this.seedObject = Onset.getServer().createObject(new Vector(0, 0, 0), 63); - this.seedObject.attach(this.worldObject, new Vector(0, 0, 18), new Vector(0, 0, 0), "None"); - double scaleRate = ((double)this.state / 100d); - this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); - } - - public void removeSeed() { - if(this.seedObject == null) return; - this.seed = false; - this.state = 0; - this.seedObject.destroy(); - this.seedObject = null; - } - - public boolean grow() { - if(this.water <= 0) return false; - if(!this.seed) return false; - if(this.state >= 100) return false; - if(this.seedObject == null) return false; - this.water -= 2; - if(this.water < 0) this.water = 0; - this.state += this.currentRate; - if(this.state > 100) this.state = 100; - - double scaleRate = ((double)this.state / 100d); - this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); - return true; - } - - public String getUuid() { - return uuid; - } - - public int getWater() { - return water; - } - - public int getState() { - return state; - } - - public void setWater(int water) { - this.water = water; - } - - public void setState(int state) { - this.state = state; - } - - public boolean isSeed() { - return seed; - } - - public void setSeed(boolean seed) { - this.seed = seed; - } - - public int getCurrentRate() { - return currentRate; - } - - public void setCurrentRate(int currentRate) { - this.currentRate = currentRate; - } -} +package fr.yuki.yrpf.job.tools.growbox; + +import fr.yuki.yrpf.job.tools.GrowBox; +import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +public class Pot { + private String uuid; + private GrowBox growBox; + private WorldObject worldObject; + private int water; + private int state; + private boolean seed; + private int currentRate; + private WorldObject seedObject; + + public Pot(GrowBox growBox) { + this.uuid = UUID.randomUUID().toString(); + this.growBox = growBox; + this.water = 0; + this.state = 0; + this.currentRate = 1; + this.seed = false; + } + + public void spawnWorldObject(StoreLayoutTransform transform) { + this.worldObject = Onset.getServer().createObject(new Vector(0, 0,0), 554); + this.worldObject.attach(this.growBox.getJobTool().getWorldObject(), transform.getPosition(), transform.getRotation()); + this.worldObject.setScale(transform.getScale()); + this.spawnSeed(); + } + + public void destroyWorldObject() { + if(this.worldObject != null) { + this.worldObject.destroy(); + this.worldObject = null; + if(this.seedObject != null) { + this.seedObject.destroy(); + this.seedObject = null; + } + } + } + + public void spawnSeed() { + if(this.seedObject != null) return; + this.seedObject = Onset.getServer().createObject(new Vector(0, 0, 0), 63); + this.seedObject.attach(this.worldObject, new Vector(0, 0, 18), new Vector(0, 0, 0), "None"); + double scaleRate = ((double)this.state / 100d); + this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); + } + + public void removeSeed() { + if(this.seedObject == null) return; + this.seed = false; + this.state = 0; + this.seedObject.destroy(); + this.seedObject = null; + } + + public boolean grow() { + if(this.water <= 0) return false; + if(!this.seed) return false; + if(this.state >= 100) return false; + if(this.seedObject == null) return false; + this.water -= 2; + if(this.water < 0) this.water = 0; + this.state += this.currentRate; + if(this.state > 100) this.state = 100; + + double scaleRate = ((double)this.state / 100d); + this.seedObject.setScale(new Vector(scaleRate, scaleRate, scaleRate)); + return true; + } + + public String getUuid() { + return uuid; + } + + public int getWater() { + return water; + } + + public int getState() { + return state; + } + + public void setWater(int water) { + this.water = water; + } + + public void setState(int state) { + this.state = state; + } + + public boolean isSeed() { + return seed; + } + + public void setSeed(boolean seed) { + this.seed = seed; + } + + public int getCurrentRate() { + return currentRate; + } + + public void setCurrentRate(int currentRate) { + this.currentRate = currentRate; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddAmbiantSoundEF.java b/src/main/java/fr/yuki/yrpf/luaapi/AddAmbiantSoundEF.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/AddAmbiantSoundEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/AddAmbiantSoundEF.java index 7698101..114fc1c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddAmbiantSoundEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/AddAmbiantSoundEF.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddAmbiantSoundEF implements ExportFunction { - - @Override - public Object call(Object[] objects) { - String fileName = objects[1].toString(); - String name = objects[0].toString(); - double x = Double.parseDouble(objects[2].toString()); - double y = Double.parseDouble(objects[3].toString()); - double z = Double.parseDouble(objects[4].toString()); - int radius = Integer.parseInt(objects[5].toString()); - double volume = Double.parseDouble(objects[6].toString()); - Onset.print(x + "," + y + ", " + z + ", " + fileName + ", " + name + ", " + radius + ", " + volume); - SoundManager.createAmbiantSound(name, fileName, new Vector(x,y,z), radius, volume); - return null; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.SoundManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddAmbiantSoundEF implements ExportFunction { + + @Override + public Object call(Object[] objects) { + String fileName = objects[1].toString(); + String name = objects[0].toString(); + double x = Double.parseDouble(objects[2].toString()); + double y = Double.parseDouble(objects[3].toString()); + double z = Double.parseDouble(objects[4].toString()); + int radius = Integer.parseInt(objects[5].toString()); + double volume = Double.parseDouble(objects[6].toString()); + Onset.print(x + "," + y + ", " + z + ", " + fileName + ", " + name + ", " + radius + ", " + volume); + SoundManager.createAmbiantSound(name, fileName, new Vector(x,y,z), radius, volume); + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddItemEF.java b/src/main/java/fr/yuki/yrpf/luaapi/AddItemEF.java similarity index 70% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/AddItemEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/AddItemEF.java index 3d8220a..1d8cbdb 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddItemEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/AddItemEF.java @@ -1,21 +1,20 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddItemEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); - if(player == null) return false; - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return false; - InventoryManager.addItemToPlayer(player, objects[1].toString(), Integer.parseInt(objects[2].toString()), true); - return true; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddItemEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); + if(player == null) return false; + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return false; + InventoryManager.addItemToPlayer(player, objects[1].toString(), Integer.parseInt(objects[2].toString()), true); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddRestrictedZoneEF.java b/src/main/java/fr/yuki/yrpf/luaapi/AddRestrictedZoneEF.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/AddRestrictedZoneEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/AddRestrictedZoneEF.java index a64a169..840f9d7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/AddRestrictedZoneEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/AddRestrictedZoneEF.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.world.RestrictedZone; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddRestrictedZoneEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Onset.print("New restricted zone added from lua : " + objects[0].toString()); - RestrictedZone restrictedZone = new RestrictedZone(new Line3D( - Double.parseDouble(objects[1].toString()), - Double.parseDouble(objects[2].toString()), - Double.parseDouble(objects[3].toString()), - Double.parseDouble(objects[4].toString()), - Double.parseDouble(objects[5].toString()), - Double.parseDouble(objects[6].toString()), - 6 - ), objects[0].toString()); - WorldManager.getRestrictedZones().add(restrictedZone); - return true; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import fr.yuki.yrpf.world.RestrictedZone; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddRestrictedZoneEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Onset.print("New restricted zone added from lua : " + objects[0].toString()); + RestrictedZone restrictedZone = new RestrictedZone(new Line3D( + Double.parseDouble(objects[1].toString()), + Double.parseDouble(objects[2].toString()), + Double.parseDouble(objects[3].toString()), + Double.parseDouble(objects[4].toString()), + Double.parseDouble(objects[5].toString()), + Double.parseDouble(objects[6].toString()), + 6 + ), objects[0].toString()); + WorldManager.getRestrictedZones().add(restrictedZone); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAccountEF.java b/src/main/java/fr/yuki/yrpf/luaapi/GetAccountEF.java similarity index 74% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAccountEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/GetAccountEF.java index d3b5d8e..1be1db8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAccountEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/GetAccountEF.java @@ -1,16 +1,16 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class GetAccountEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); - if(account == null) return null; - return new Gson().toJson(account); - } -} +package fr.yuki.yrpf.luaapi; + +import com.google.gson.Gson; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class GetAccountEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); + if(account == null) return null; + return new Gson().toJson(account); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAdminLevelEF.java b/src/main/java/fr/yuki/yrpf/luaapi/GetAdminLevelEF.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAdminLevelEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/GetAdminLevelEF.java index eebf802..2020eed 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/GetAdminLevelEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/GetAdminLevelEF.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class GetAdminLevelEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); - if(account == null) return -1; - return account.getAdminLevel(); - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class GetAdminLevelEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString()))); + if(account == null) return -1; + return account.getAdminLevel(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/LuaAPIManager.java b/src/main/java/fr/yuki/yrpf/luaapi/LuaAPIManager.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/LuaAPIManager.java rename to src/main/java/fr/yuki/yrpf/luaapi/LuaAPIManager.java index ca9b529..f49956a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/LuaAPIManager.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/LuaAPIManager.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.luaapi.job.*; -import net.onfirenetwork.onsetjava.Onset; - -public class LuaAPIManager { - public static void init() { - Onset.getServer().addFunctionExport("GetAdminLevel", new GetAdminLevelEF()); - Onset.getServer().addFunctionExport("GetAccount", new GetAccountEF()); - Onset.getServer().addFunctionExport("AddAmbiantSound", new AddAmbiantSoundEF()); - Onset.getServer().addFunctionExport("SendToast", new SendToastEF()); - Onset.getServer().addFunctionExport("AddItem", new AddItemEF()); - Onset.getServer().addFunctionExport("AddRestrictedZone", new AddRestrictedZoneEF()); - - // Job API - Onset.getServer().addFunctionExport("CreateJob", new CreateJobEF()); - Onset.getServer().addFunctionExport("AddJobLevel", new AddJobLevelEF()); - Onset.getServer().addFunctionExport("AddJobResource", new AddJobResourceEF()); - Onset.getServer().addFunctionExport("AddItemResourceRequirement", new AddItemResourceRequirementEF()); - Onset.getServer().addFunctionExport("SetHarvestAnimation", new SetHarvestAnimationEF()); - - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.luaapi.job.*; +import net.onfirenetwork.onsetjava.Onset; + +public class LuaAPIManager { + public static void init() { + Onset.getServer().addFunctionExport("GetAdminLevel", new GetAdminLevelEF()); + Onset.getServer().addFunctionExport("GetAccount", new GetAccountEF()); + Onset.getServer().addFunctionExport("AddAmbiantSound", new AddAmbiantSoundEF()); + Onset.getServer().addFunctionExport("SendToast", new SendToastEF()); + Onset.getServer().addFunctionExport("AddItem", new AddItemEF()); + Onset.getServer().addFunctionExport("AddRestrictedZone", new AddRestrictedZoneEF()); + + // Job API + Onset.getServer().addFunctionExport("CreateJob", new CreateJobEF()); + Onset.getServer().addFunctionExport("AddJobLevel", new AddJobLevelEF()); + Onset.getServer().addFunctionExport("AddJobResource", new AddJobResourceEF()); + Onset.getServer().addFunctionExport("AddItemResourceRequirement", new AddItemResourceRequirementEF()); + Onset.getServer().addFunctionExport("SetHarvestAnimation", new SetHarvestAnimationEF()); + + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/SendToastEF.java b/src/main/java/fr/yuki/yrpf/luaapi/SendToastEF.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/SendToastEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/SendToastEF.java index cd85b33..823fa9f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/SendToastEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/SendToastEF.java @@ -1,22 +1,20 @@ -package fr.yuki.YukiRPFramework.luaapi; - -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class SendToastEF implements ExportFunction { - - @Override - public Object call(Object[] objects) { - Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); - if(player == null) return null; - String type = objects[1].toString(); - String text = objects[2].toString(); - UIStateManager.sendNotification(player, type, text); - - return null; - } -} +package fr.yuki.yrpf.luaapi; + +import fr.yuki.yrpf.manager.UIStateManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class SendToastEF implements ExportFunction { + + @Override + public Object call(Object[] objects) { + Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString())); + if(player == null) return null; + String type = objects[1].toString(); + String text = objects[2].toString(); + UIStateManager.sendNotification(player, type, text); + + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddItemResourceRequirementEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/AddItemResourceRequirementEF.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddItemResourceRequirementEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/AddItemResourceRequirementEF.java index 35a6fc4..9f92d7c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddItemResourceRequirementEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/AddItemResourceRequirementEF.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.harvest.CustomHarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddItemResourceRequirementEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> - x.getName().equals(objects[1].toString())).findFirst().orElse(null); - if(harvestableObject == null) return false; - harvestableObject.setRequiredItem(Integer.parseInt(objects[2].toString())); - return true; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.harvest.CustomHarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddItemResourceRequirementEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> + x.getName().equals(objects[1].toString())).findFirst().orElse(null); + if(harvestableObject == null) return false; + harvestableObject.setRequiredItem(Integer.parseInt(objects[2].toString())); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobLevelEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobLevelEF.java similarity index 76% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobLevelEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/AddJobLevelEF.java index cba2ac4..fb85c56 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobLevelEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobLevelEF.java @@ -1,27 +1,26 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.CustomJob; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.model.JobLevel; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddJobLevelEF implements ExportFunction { - public static int tempJobLevelId = -1; - - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - JobLevel jobLevel = new JobLevel(); - jobLevel.setId(tempJobLevelId--); - jobLevel.setJobId(objects[0].toString()); - jobLevel.setName(objects[1].toString()); - jobLevel.setLevel(Integer.parseInt(objects[2].toString())); - jobLevel.setExpFloor(Integer.parseInt(objects[3].toString())); - JobManager.getJobLevels().add(jobLevel); - Onset.print("Added new job level for job="+jobLevel.getJobId()); - return true; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.model.JobLevel; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddJobLevelEF implements ExportFunction { + public static int tempJobLevelId = -1; + + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + JobLevel jobLevel = new JobLevel(); + jobLevel.setId(tempJobLevelId--); + jobLevel.setJobId(objects[0].toString()); + jobLevel.setName(objects[1].toString()); + jobLevel.setLevel(Integer.parseInt(objects[2].toString())); + jobLevel.setExpFloor(Integer.parseInt(objects[3].toString())); + JobManager.getJobLevels().add(jobLevel); + Onset.print("Added new job level for job="+jobLevel.getJobId()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobResourceEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobResourceEF.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobResourceEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/AddJobResourceEF.java index ea1f1f7..872b724 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/AddJobResourceEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/AddJobResourceEF.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.harvest.CustomHarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class AddJobResourceEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - CustomHarvestableObject customHarvestableObject = new CustomHarvestableObject( - objects[1].toString(), Integer.parseInt(objects[2].toString()), Integer.parseInt(objects[3].toString()), - Integer.parseInt(objects[4].toString()), Integer.parseInt(objects[5].toString()), Integer.parseInt(objects[6].toString()) - ); - job.getHarvestableObjectsTemplate().add(customHarvestableObject); - if(job.getJobConfig().getResources().stream().filter(x -> x.getName().equals(customHarvestableObject.getName())) - .findFirst().orElse(null) == null) { - JobSpawn jobSpawn = new JobSpawn(); - jobSpawn.setName(customHarvestableObject.getName()); - job.getJobConfig().getResources().add(jobSpawn); - } - job.refillHarvestResources(); - - Onset.print("Add harvestable object for job="+job.getJobType()+" name=" + customHarvestableObject.getName()); - return true; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.JobSpawn; +import fr.yuki.yrpf.job.harvest.CustomHarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class AddJobResourceEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + CustomHarvestableObject customHarvestableObject = new CustomHarvestableObject( + objects[1].toString(), Integer.parseInt(objects[2].toString()), Integer.parseInt(objects[3].toString()), + Integer.parseInt(objects[4].toString()), Integer.parseInt(objects[5].toString()), Integer.parseInt(objects[6].toString()) + ); + job.getHarvestableObjectsTemplate().add(customHarvestableObject); + if(job.getJobConfig().getResources().stream().filter(x -> x.getName().equals(customHarvestableObject.getName())) + .findFirst().orElse(null) == null) { + JobSpawn jobSpawn = new JobSpawn(); + jobSpawn.setName(customHarvestableObject.getName()); + job.getJobConfig().getResources().add(jobSpawn); + } + job.refillHarvestResources(); + + Onset.print("Add harvestable object for job="+job.getJobType()+" name=" + customHarvestableObject.getName()); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/CreateJobEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/CreateJobEF.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/CreateJobEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/CreateJobEF.java index 2c9f713..ce26e60 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/CreateJobEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/CreateJobEF.java @@ -1,17 +1,17 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.job.CustomJob; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class CreateJobEF implements ExportFunction { - - @Override - public Object call(Object[] objects) { - CustomJob customJob = new CustomJob(objects[0].toString(), Integer.parseInt(objects[1].toString())); - JobManager.getJobs().put(objects[0].toString(), customJob); - Onset.print("New job created from lua name="+customJob.getJobType()); - return null; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.job.CustomJob; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class CreateJobEF implements ExportFunction { + + @Override + public Object call(Object[] objects) { + CustomJob customJob = new CustomJob(objects[0].toString(), Integer.parseInt(objects[1].toString())); + JobManager.getJobs().put(objects[0].toString(), customJob); + Onset.print("New job created from lua name="+customJob.getJobType()); + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/SetHarvestAnimationEF.java b/src/main/java/fr/yuki/yrpf/luaapi/job/SetHarvestAnimationEF.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/luaapi/job/SetHarvestAnimationEF.java rename to src/main/java/fr/yuki/yrpf/luaapi/job/SetHarvestAnimationEF.java index d52866d..04945e2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/luaapi/job/SetHarvestAnimationEF.java +++ b/src/main/java/fr/yuki/yrpf/luaapi/job/SetHarvestAnimationEF.java @@ -1,23 +1,23 @@ -package fr.yuki.YukiRPFramework.luaapi.job; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.harvest.CustomHarvestableObject; -import fr.yuki.YukiRPFramework.manager.JobManager; -import net.onfirenetwork.onsetjava.plugin.ExportFunction; - -public class SetHarvestAnimationEF implements ExportFunction { - @Override - public Object call(Object[] objects) { - Job job = JobManager.getJobs().get(objects[0].toString()); - if(job == null) return false; - CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> - x.getName().equals(objects[1].toString())).findFirst().orElse(null); - if(harvestableObject == null) return false; - - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(objects[2].toString(), - Integer.parseInt(objects[3].toString()), Integer.parseInt(objects[4].toString()), objects[5].toString()); - harvestableObject.setCharacterLoopAnimation(characterLoopAnimation); - return null; - } -} +package fr.yuki.yrpf.luaapi.job; + +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.harvest.CustomHarvestableObject; +import fr.yuki.yrpf.manager.JobManager; +import net.onfirenetwork.onsetjava.plugin.ExportFunction; + +public class SetHarvestAnimationEF implements ExportFunction { + @Override + public Object call(Object[] objects) { + Job job = JobManager.getJobs().get(objects[0].toString()); + if(job == null) return false; + CustomHarvestableObject harvestableObject = (CustomHarvestableObject)job.getHarvestableObjectsTemplate().stream().filter(x -> + x.getName().equals(objects[1].toString())).findFirst().orElse(null); + if(harvestableObject == null) return false; + + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(objects[2].toString(), + Integer.parseInt(objects[3].toString()), Integer.parseInt(objects[4].toString()), objects[5].toString()); + harvestableObject.setCharacterLoopAnimation(characterLoopAnimation); + return null; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/ATMManager.java b/src/main/java/fr/yuki/yrpf/manager/ATMManager.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/manager/ATMManager.java rename to src/main/java/fr/yuki/yrpf/manager/ATMManager.java index 8a2bbe5..4fabcb5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/ATMManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/ATMManager.java @@ -1,99 +1,98 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ATM; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.SetBankCashAmount; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -public class ATMManager { - /** - * Check the interaction request with a atm, check if is nearby a atm - * @param player The player - */ - public static boolean handleATMInteract(Player player) { - for(ATM atm : WorldManager.getAtms()) { - try { - if(atm.isNear(player)) { - openATM(player, atm); - return true; - } - }catch (Exception ex) {} - } - return false; - } - - /** - * Open the atm for the player - * @param player The player - * @param atm The ATM - */ - public static void openATM(Player player, ATM atm) { - if(UIStateManager.handleUIToogle(player, "atm")) { - SoundManager.playSound3D("sounds/atm_sound_in.mp3", player.getLocation(), 200, 0.4); - } - } - - /** - * Handle deposit request from player - * @param player The player - * @param value The amount to deposit - */ - public static void handleATMDeposit(Player player, int value) { - Onset.print("Request to deposit money="+value); - Inventory inventory = InventoryManager.getMainInventory(player);; - Account account = WorldManager.getPlayerAccount(player); - if(inventory.getCashAmount() < value) { - Onset.print("Player don't have the cash required on him amount="+inventory.getCashAmount()); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); - return; - } - - // Add the bank money and save the player - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), value); - account.setBankMoney(account.getBankMoney() + value); - WorldManager.savePlayer(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_deposit", String.valueOf(value))); - } - - /** - * Withdraw money from the bank account - * @param player The player - * @param value The amount to withdraw - */ - public static void handleATMWithdraw(Player player, int value) { - Onset.print("Request to deposit money="+value); - Inventory inventory = InventoryManager.getMainInventory(player); - Account account = WorldManager.getPlayerAccount(player); - if(account.getBankMoney() < value) { - Onset.print("Player don't have the cash required in bank amount="+inventory.getCashAmount()); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_in_bank")); - return; - } - - // Add the bank money and save the player - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, value, false); - account.setBankMoney(account.getBankMoney() - value); - WorldManager.savePlayer(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_withdraw", String.valueOf(value))); - } - - public static void handleATMGetInfos(Player player) { - Account account = WorldManager.getPlayerAccount(player); - Inventory inventory = InventoryManager.getMainInventory(player);; - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetBankCashAmount(account.getBankMoney(), inventory.getCashAmount()))); - } - - public static void removeCashFromBank(Player player, int amount) { - Account account = WorldManager.getPlayerAccount(player); - if(amount > account.getBankMoney()) return; - account.setBankMoney(account.getBankMoney() - amount); - WorldManager.savePlayer(player); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.model.ATM; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.SetBankCashAmount; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +public class ATMManager { + /** + * Check the interaction request with a atm, check if is nearby a atm + * @param player The player + */ + public static boolean handleATMInteract(Player player) { + for(ATM atm : WorldManager.getAtms()) { + try { + if(atm.isNear(player)) { + openATM(player, atm); + return true; + } + }catch (Exception ex) {} + } + return false; + } + + /** + * Open the atm for the player + * @param player The player + * @param atm The ATM + */ + public static void openATM(Player player, ATM atm) { + if(UIStateManager.handleUIToogle(player, "atm")) { + SoundManager.playSound3D("sounds/atm_sound_in.mp3", player.getLocation(), 200, 0.4); + } + } + + /** + * Handle deposit request from player + * @param player The player + * @param value The amount to deposit + */ + public static void handleATMDeposit(Player player, int value) { + Onset.print("Request to deposit money="+value); + Inventory inventory = InventoryManager.getMainInventory(player);; + Account account = WorldManager.getPlayerAccount(player); + if(inventory.getCashAmount() < value) { + Onset.print("Player don't have the cash required on him amount="+inventory.getCashAmount()); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); + return; + } + + // Add the bank money and save the player + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), value); + account.setBankMoney(account.getBankMoney() + value); + WorldManager.savePlayer(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_deposit", String.valueOf(value))); + } + + /** + * Withdraw money from the bank account + * @param player The player + * @param value The amount to withdraw + */ + public static void handleATMWithdraw(Player player, int value) { + Onset.print("Request to deposit money="+value); + Inventory inventory = InventoryManager.getMainInventory(player); + Account account = WorldManager.getPlayerAccount(player); + if(account.getBankMoney() < value) { + Onset.print("Player don't have the cash required in bank amount="+inventory.getCashAmount()); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_in_bank")); + return; + } + + // Add the bank money and save the player + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, value, false); + account.setBankMoney(account.getBankMoney() - value); + WorldManager.savePlayer(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.atm.success_withdraw", String.valueOf(value))); + } + + public static void handleATMGetInfos(Player player) { + Account account = WorldManager.getPlayerAccount(player); + Inventory inventory = InventoryManager.getMainInventory(player);; + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetBankCashAmount(account.getBankMoney(), inventory.getCashAmount()))); + } + + public static void removeCashFromBank(Player player, int amount) { + Account account = WorldManager.getPlayerAccount(player); + if(amount > account.getBankMoney()) return; + account.setBankMoney(account.getBankMoney() - amount); + WorldManager.savePlayer(player); + } +} diff --git a/src/main/java/fr/yuki/yrpf/manager/AccountManager.java b/src/main/java/fr/yuki/yrpf/manager/AccountManager.java new file mode 100644 index 0000000..838b1e0 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/manager/AccountManager.java @@ -0,0 +1,19 @@ +package fr.yuki.yrpf.manager; + +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.model.AccountJobWhitelist; +import lombok.Getter; +import net.onfirenetwork.onsetjava.Onset; + +import java.sql.SQLException; +import java.util.List; + +public class AccountManager { + @Getter + private static List accountJobWhitelists; + + public static void init() throws SQLException { + accountJobWhitelists = Repo.get(AccountJobWhitelist.class).all(); + Onset.print("Loaded " + accountJobWhitelists.size() + " account job whitelist(s) from database"); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java b/src/main/java/fr/yuki/yrpf/manager/CharacterManager.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java rename to src/main/java/fr/yuki/yrpf/manager/CharacterManager.java index 353c86c..3d34df1 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/CharacterManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/CharacterManager.java @@ -1,309 +1,302 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; -import fr.yuki.YukiRPFramework.net.payload.SetFoodPayload; -import fr.yuki.YukiRPFramework.net.payload.StyleSavePartPayload; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.GenericMenuItem; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.HashMap; -import java.util.stream.Collectors; - -public class CharacterManager { - - private static HashMap characterStates; - - public static void init() { - characterStates = new HashMap(); - - // Decrease food - Onset.timer(60000 * 2, () -> { - for(Player player : Onset.getPlayers()) { - if(WorldManager.getPlayerAccount(player) == null) continue; - applyFoodChange(player, -1); - } - }); - - // Decrease drink - Onset.timer(40000 * 2, () -> { - for(Player player : Onset.getPlayers()) { - if(WorldManager.getPlayerAccount(player) == null) continue; - applyDrinkChange(player, -1); - } - }); - } - - public static void applyFoodChange(Player player, int value) { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.isDead()) return; - account.setFoodState(account.getFoodState() + value); - if(account.getFoodState() < 0) account.setFoodState(0); - if(account.getFoodState() > 100) account.setFoodState(100); - refreshFood(player); - if(account.getFoodState() <= 0) { - player.setHealth(player.getHealth() - 1); - } - } - - public static void applyDrinkChange(Player player, int value) { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.isDead()) return; - account.setDrinkState(account.getDrinkState() + value); - if(account.getDrinkState() < 0) account.setDrinkState(0); - if(account.getDrinkState() > 100) account.setDrinkState(100); - refreshFood(player); - if(account.getDrinkState() <= 0) { - player.setHealth(player.getHealth() - 1); - } - } - - public static CharacterState getCharacterStateByPlayer(Player player) { - if(!characterStates.containsKey(player.getSteamId())) return null; - return characterStates.get(player.getSteamId()); - } - - /** - * Save part of the player style - * @param player The player - * @param payload The payload - */ - public static void handleStyleSavePart(Player player, StyleSavePartPayload payload) { - Onset.print("Update style player part="+ payload.getPartType() + " value=" + payload.getValue()); - Account account = WorldManager.getPlayerAccount(player); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - switch (payload.getPartType()) { - case "gender": - characterStyle.setGender(payload.getValue()); - break; - - case "body": - characterStyle.setBody(payload.getValue()); - break; - - case "hair": - characterStyle.setHair(payload.getValue()); - break; - - case "hair_color": - characterStyle.setHairColor(payload.getValue()); - break; - - case "top": - characterStyle.setTop(payload.getValue()); - break; - - case "pant": - characterStyle.setPant(payload.getValue()); - break; - - case "shoes": - characterStyle.setShoes(payload.getValue()); - break; - - case "name": - account.setCharacterName(payload.getValue()); - String msg = WorldManager.getServerConfig().getWelcomeMessage(); - msg = msg.replace("%name%", account.getCharacterName()); - Onset.broadcast("" + msg + ""); - break; - } - account.setCharacterStyle(characterStyle); - account.setOriginalStyle(new Gson().toJson(characterStyle)); - WorldManager.savePlayer(player); - } - - public static void handleCharacterCustomDone(Player player, String type) { - Account account = WorldManager.getPlayerAccount(player); - CharacterStyle characterStyle = account.decodeCharacterStyle(); - characterStyle.attachStyleToPlayer(player); - - player.setName(account.getCharacterName()); - player.setProperty("characterName", account.getCharacterName(), true); - account.setCharacterCreationRequest(0); - WorldManager.savePlayer(player); - if(type.equals("character")) { - UIStateManager.handleUIToogle(player, "customCharacter"); - } else { - UIStateManager.handleUIToogle(player, "customOutfit"); - } - } - - /** - * Freeze/Unfreeze a player - * @param player The player - * @param freeze Freeze state - */ - public static void setCharacterFreeze(Player player, boolean freeze) { - if(freeze) { - player.callRemoteEvent("Character:FreezePlayer"); - } else { - player.callRemoteEvent("Character:UnFreezePlayer"); - } - } - - public static void onPlayerDeath(Player player, Player killer) { - // Update state - CharacterState characterState = getCharacterStateByPlayer(player); - characterState.setDead(true); - setCharacterFreeze(player, true); - - if(characterState.getCurrentBag() != null) { - characterState.unattachBag(player); - return; - } - - // Update account - Account account = WorldManager.getPlayerAccount(player); - account.setIsDead(1); - try { - AccountDAO.updateAccount(account, null); - } catch (Exception ex) { - Onset.print("Can't save account: " + ex.toString()); - } - player.setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); - UIStateManager.handleUIToogle(player, "death"); - player.setRespawnTime(WorldManager.getServerConfig().getDeathRespawnDelay()); - - Inventory inventory = InventoryManager.getMainInventory(player); - for(InventoryItem inventoryItem : inventory.getInventoryItems().stream().collect(Collectors.toList())) { - if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) continue; - RequestThrowItemPayload throwItemPayload = new RequestThrowItemPayload(); - throwItemPayload.setId(inventoryItem.getId()); - throwItemPayload.setQuantity(inventoryItem.getAmount()); - InventoryManager.handleThrowItem(player, throwItemPayload); - } - WeaponManager.clearWeapons(player); - } - - public static void onPlayerSpawn(Player player) { - if(CharacterManager.getCharacterStateByPlayer(player) == null) { - Onset.print("No state found for " + player.getSteamId()); - CharacterManager.getCharacterStates().put(player.getSteamId(), new CharacterState()); - } - - CharacterState characterState = getCharacterStateByPlayer(player); - if(characterState.isFirstSpawn()) { - characterState.setFirstSpawn(false); - Onset.print("First spawn for player"); - } else { - Account account = WorldManager.getPlayerAccount(player); - if(account != null) { - if(account.getIsDead() == 1) { - UIStateManager.handleUIToogle(player, "death"); - account.setIsDead(0); - CharacterManager.setCharacterFreeze(player, false); - Onset.print("Player respawned after death"); - //UIStateManager.sendNotification(player, ToastTypeEnum.WARN, - // "Après un moment a l'hôpital vous êtes sortis du coma, vous avez du mal à vous rappeler des derniers événements"); - teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getDeathRespawnX(), - WorldManager.getServerConfig().getDeathRespawnY(), - WorldManager.getServerConfig().getDeathRespawnZ() + 50, - WorldManager.getServerConfig().getDeathRespawnH())); - characterState.setDead(false); - WorldManager.savePlayer(player); - } - setCharacterStyle(player); - } - } - } - - public static void refreshFood(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) return; - - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetFoodPayload(account.getFoodState(), - account.getDrinkState()))); - } - - public static void setCharacterStyle(Player player) { - Account account = WorldManager.getPlayerAccount(player); - account.decodeCharacterStyle().attachStyleToPlayer(player); - player.setProperty("characterName", account.getCharacterName(), true); - player.setName(account.getCharacterName()); - } - - public static void teleportWithLevelLoading(Player player, Location location) { - player.setLocationAndHeading(location); - player.callRemoteEvent("Game:TriggerLoadLevel"); - Onset.delay(150, () -> { - player.callRemoteEvent("Game:TriggerLoadLevel"); - player.setLocationAndHeading(location); - player.callRemoteEvent("Game:TriggerLoadLevel"); - }); - } - - public static void handleCharacterInteract(Player player) { - Player nearestPlayer = WorldManager.getNearestPlayer(player); - //nearestPlayer = player; // Temp test - if(nearestPlayer == null) return; - if(nearestPlayer.getLocation().distance(player.getLocation()) < 200) { - // Build generic menu - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - GenericMenu genericMenu = new GenericMenu(player); - genericMenu.getItems().add(new GenericMenuItem("Fouiller la personne", "window.CallEvent(\"RemoteCallInterface\"," + - " \"Character:InspectCharacter\", \"" + nearestPlayer.getId() + "\");")); - genericMenu.getItems().add(new GenericMenuItem("Donner les clés de la maison", "window.CallEvent(\"RemoteCallInterface\"," + - " \"Character:GiveHouseKey\", \"" + nearestPlayer.getId() + "\");")); - genericMenu.addCloseItem(); - genericMenu.show(); - characterState.setCurrentGenericMenu(genericMenu); - } - } - - public static HashMap getCharacterStates() { - return characterStates; - } - - public static void handleGenericMenuDismiss(Player player) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentGenericMenu() != null) { - characterState.getCurrentGenericMenu().hide(); - characterState.setCurrentGenericMenu(null); - } - } - - public static void handleInspectCharacter(Player player, int inspectPlayerId) { - handleGenericMenuDismiss(player); // Close generic menu - - Player target = Onset.getPlayer(inspectPlayerId); - if(target == null) return; - CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); - if(!targetState.isCuffed()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "La personne n'est pas fouillable"); - return; - } - Account account = WorldManager.getPlayerAccount(player); - - // Display items - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - GenericMenu genericMenu = new GenericMenu(player); - Inventory inventory = InventoryManager.getMainInventory(target); - for(InventoryItem item : inventory.getInventoryItems()) { - String itemName = I18n.t(account.getLang(), "item.name." + item.getTemplateId()); - genericMenu.getItems().add(new GenericMenuItem("x" + item.getAmount() + " " + itemName, "")); - } - genericMenu.addCloseItem(); - genericMenu.show(); - characterState.setCurrentGenericMenu(genericMenu); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.RequestThrowItemPayload; +import fr.yuki.yrpf.net.payload.SetFoodPayload; +import fr.yuki.yrpf.net.payload.StyleSavePartPayload; +import fr.yuki.yrpf.ui.GenericMenu; +import fr.yuki.yrpf.ui.GenericMenuItem; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.HashMap; +import java.util.stream.Collectors; + +public class CharacterManager { + + private static HashMap characterStates; + + public static void init() { + characterStates = new HashMap(); + + // Decrease food + Onset.timer(60000 * 2, () -> { + for(Player player : Onset.getPlayers()) { + if(WorldManager.getPlayerAccount(player) == null) continue; + applyFoodChange(player, -1); + } + }); + + // Decrease drink + Onset.timer(40000 * 2, () -> { + for(Player player : Onset.getPlayers()) { + if(WorldManager.getPlayerAccount(player) == null) continue; + applyDrinkChange(player, -1); + } + }); + } + + public static void applyFoodChange(Player player, int value) { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.isDead()) return; + account.setFoodState(account.getFoodState() + value); + if(account.getFoodState() < 0) account.setFoodState(0); + if(account.getFoodState() > 100) account.setFoodState(100); + refreshFood(player); + if(account.getFoodState() <= 0) { + player.setHealth(player.getHealth() - 1); + } + } + + public static void applyDrinkChange(Player player, int value) { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.isDead()) return; + account.setDrinkState(account.getDrinkState() + value); + if(account.getDrinkState() < 0) account.setDrinkState(0); + if(account.getDrinkState() > 100) account.setDrinkState(100); + refreshFood(player); + if(account.getDrinkState() <= 0) { + player.setHealth(player.getHealth() - 1); + } + } + + public static CharacterState getCharacterStateByPlayer(Player player) { + if(!characterStates.containsKey(player.getSteamId())) return null; + return characterStates.get(player.getSteamId()); + } + + /** + * Save part of the player style + * @param player The player + * @param payload The payload + */ + public static void handleStyleSavePart(Player player, StyleSavePartPayload payload) { + Onset.print("Update style player part="+ payload.getPartType() + " value=" + payload.getValue()); + Account account = WorldManager.getPlayerAccount(player); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + switch (payload.getPartType()) { + case "gender": + characterStyle.setGender(payload.getValue()); + break; + + case "body": + characterStyle.setBody(payload.getValue()); + break; + + case "hair": + characterStyle.setHair(payload.getValue()); + break; + + case "hair_color": + characterStyle.setHairColor(payload.getValue()); + break; + + case "top": + characterStyle.setTop(payload.getValue()); + break; + + case "pant": + characterStyle.setPant(payload.getValue()); + break; + + case "shoes": + characterStyle.setShoes(payload.getValue()); + break; + + case "name": + account.setCharacterName(payload.getValue()); + String msg = WorldManager.getServerConfig().getWelcomeMessage(); + msg = msg.replace("%name%", account.getCharacterName()); + Onset.broadcast("" + msg + ""); + break; + } + account.setCharacterStyle(characterStyle); + account.setOriginalStyle(new Gson().toJson(characterStyle)); + WorldManager.savePlayer(player); + } + + public static void handleCharacterCustomDone(Player player, String type) { + Account account = WorldManager.getPlayerAccount(player); + CharacterStyle characterStyle = account.decodeCharacterStyle(); + characterStyle.attachStyleToPlayer(player); + + player.setName(account.getCharacterName()); + player.setProperty("characterName", account.getCharacterName(), true); + account.setCharacterCreationRequest(true); + WorldManager.savePlayer(player); + if(type.equals("character")) { + UIStateManager.handleUIToogle(player, "customCharacter"); + } else { + UIStateManager.handleUIToogle(player, "customOutfit"); + } + } + + /** + * Freeze/Unfreeze a player + * @param player The player + * @param freeze Freeze state + */ + public static void setCharacterFreeze(Player player, boolean freeze) { + if(freeze) { + player.callRemoteEvent("Character:FreezePlayer"); + } else { + player.callRemoteEvent("Character:UnFreezePlayer"); + } + } + + public static void onPlayerDeath(Player player, Player killer) { + // Update state + CharacterState characterState = getCharacterStateByPlayer(player); + characterState.setDead(true); + setCharacterFreeze(player, true); + + if(characterState.getCurrentBag() != null) { + characterState.unattachBag(player); + return; + } + + // Update account + Account account = WorldManager.getPlayerAccount(player); + account.setDead(true); + account.save(); + player.setSpawnLocation(new Vector(account.getSaveX(), account.getSaveY(), account.getSaveZ()), 0); + UIStateManager.handleUIToogle(player, "death"); + player.setRespawnTime(WorldManager.getServerConfig().getDeathRespawnDelay()); + + Inventory inventory = InventoryManager.getMainInventory(player); + for(InventoryItem inventoryItem : inventory.getInventoryItems().stream().collect(Collectors.toList())) { + if(inventoryItem.getTemplate().getId() == Integer.parseInt(ItemTemplateEnum.VKEY.id)) continue; + RequestThrowItemPayload throwItemPayload = new RequestThrowItemPayload(); + throwItemPayload.setId(inventoryItem.getId()); + throwItemPayload.setQuantity(inventoryItem.getAmount()); + InventoryManager.handleThrowItem(player, throwItemPayload); + } + WeaponManager.clearWeapons(player); + } + + public static void onPlayerSpawn(Player player) { + if(CharacterManager.getCharacterStateByPlayer(player) == null) { + Onset.print("No state found for " + player.getSteamId()); + CharacterManager.getCharacterStates().put(player.getSteamId(), new CharacterState()); + } + + CharacterState characterState = getCharacterStateByPlayer(player); + if(characterState.isFirstSpawn()) { + characterState.setFirstSpawn(false); + Onset.print("First spawn for player"); + } else { + Account account = WorldManager.getPlayerAccount(player); + if(account != null) { + if(account.isDead()) { + UIStateManager.handleUIToogle(player, "death"); + account.setDead(false); + CharacterManager.setCharacterFreeze(player, false); + Onset.print("Player respawned after death"); + //UIStateManager.sendNotification(player, ToastTypeEnum.WARN, + // "Après un moment a l'hôpital vous êtes sortis du coma, vous avez du mal à vous rappeler des derniers événements"); + teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getDeathRespawnX(), + WorldManager.getServerConfig().getDeathRespawnY(), + WorldManager.getServerConfig().getDeathRespawnZ() + 50, + WorldManager.getServerConfig().getDeathRespawnH())); + characterState.setDead(false); + WorldManager.savePlayer(player); + } + setCharacterStyle(player); + } + } + } + + public static void refreshFood(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) return; + + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetFoodPayload(account.getFoodState(), + account.getDrinkState()))); + } + + public static void setCharacterStyle(Player player) { + Account account = WorldManager.getPlayerAccount(player); + account.decodeCharacterStyle().attachStyleToPlayer(player); + player.setProperty("characterName", account.getCharacterName(), true); + player.setName(account.getCharacterName()); + } + + public static void teleportWithLevelLoading(Player player, Location location) { + player.setLocationAndHeading(location); + player.callRemoteEvent("Game:TriggerLoadLevel"); + Onset.delay(150, () -> { + player.callRemoteEvent("Game:TriggerLoadLevel"); + player.setLocationAndHeading(location); + player.callRemoteEvent("Game:TriggerLoadLevel"); + }); + } + + public static void handleCharacterInteract(Player player) { + Player nearestPlayer = WorldManager.getNearestPlayer(player); + //nearestPlayer = player; // Temp test + if(nearestPlayer == null) return; + if(nearestPlayer.getLocation().distance(player.getLocation()) < 200) { + // Build generic menu + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + GenericMenu genericMenu = new GenericMenu(player); + genericMenu.getItems().add(new GenericMenuItem("Fouiller la personne", "window.CallEvent(\"RemoteCallInterface\"," + + " \"Character:InspectCharacter\", \"" + nearestPlayer.getId() + "\");")); + genericMenu.getItems().add(new GenericMenuItem("Donner les clés de la maison", "window.CallEvent(\"RemoteCallInterface\"," + + " \"Character:GiveHouseKey\", \"" + nearestPlayer.getId() + "\");")); + genericMenu.addCloseItem(); + genericMenu.show(); + characterState.setCurrentGenericMenu(genericMenu); + } + } + + public static HashMap getCharacterStates() { + return characterStates; + } + + public static void handleGenericMenuDismiss(Player player) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentGenericMenu() != null) { + characterState.getCurrentGenericMenu().hide(); + characterState.setCurrentGenericMenu(null); + } + } + + public static void handleInspectCharacter(Player player, int inspectPlayerId) { + handleGenericMenuDismiss(player); // Close generic menu + + Player target = Onset.getPlayer(inspectPlayerId); + if(target == null) return; + CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); + if(!targetState.isCuffed()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "La personne n'est pas fouillable"); + return; + } + Account account = WorldManager.getPlayerAccount(player); + + // Display items + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + GenericMenu genericMenu = new GenericMenu(player); + Inventory inventory = InventoryManager.getMainInventory(target); + for(InventoryItem item : inventory.getInventoryItems()) { + String itemName = I18n.t(account.getLang(), "item.name." + item.getTemplateId()); + genericMenu.getItems().add(new GenericMenuItem("x" + item.getAmount() + " " + itemName, "")); + } + genericMenu.addCloseItem(); + genericMenu.show(); + characterState.setCurrentGenericMenu(genericMenu); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java b/src/main/java/fr/yuki/yrpf/manager/CompanyManager.java similarity index 58% rename from src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java rename to src/main/java/fr/yuki/yrpf/manager/CompanyManager.java index 08bfa26..0d7678c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/CompagnyManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/CompanyManager.java @@ -1,190 +1,179 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.dao.CompagnyDAO; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Compagny; -import fr.yuki.YukiRPFramework.net.payload.AddCompagnyEmployeePayload; -import fr.yuki.YukiRPFramework.net.payload.ClearCompagnyEmployeesPayload; -import fr.yuki.YukiRPFramework.net.payload.ClearPhoneUrgencyPayload; -import fr.yuki.YukiRPFramework.net.payload.SetCompagnyPayload; -import fr.yuki.YukiRPFramework.ui.GenericMenu; -import fr.yuki.YukiRPFramework.ui.GenericMenuItem; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class CompagnyManager { - public static ArrayList compagnies = new ArrayList<>(); - - public static void init() throws SQLException { - compagnies = CompagnyDAO.loadCompagnies(); - Onset.print("Loaded " + compagnies.size() + " compagnie(s) from the database"); - } - - public static Compagny getCompagnyById(int id) { - return compagnies.stream().filter(x -> x.getId() == id).findFirst().orElse(null); - } - - public static Compagny getCompagnyByName(String name) { - return compagnies.stream().filter(x -> x.getName().equals(name)).findFirst().orElse(null); - } - - public static void destroyCompagny() { - - } - - public static void handleCreateRequest(Player player, String name) throws SQLException { - Account account = WorldManager.getPlayerAccount(player); - if(account.getCompagnyId() != -1) return; - if(getCompagnyByName(name.trim()) != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Ce nom est déjà pris"); - return; - } - if(account.getBankMoney() < 10000) { // TODO: Put this in config - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Pas assez d'argent en banque"); - return; - } - ATMManager.removeCashFromBank(player, 10000); - Compagny compagny = new Compagny(); - compagny.setName(name.trim()); - compagny.setBankCash(0); - compagny.setOwner(player.getSteamId()); - compagny.setMaxMember(5); - CompagnyDAO.insertCompagny(compagny); - account.setCompagnyId(compagny.getId()); - WorldManager.savePlayer(player); - compagnies.add(compagny); - Onset.print("Compagny " + name + " created"); - - refreshCompagny(player); - } - - public static ArrayList getOnlineEmployees(Compagny compagny) { - ArrayList players = new ArrayList<>(); - for(Player player : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(player); - if(account == null) continue; - if(account.getCompagnyId() == compagny.getId()) players.add(player); - } catch (Exception ex) {} - } - return players; - } - - public static void refreshCompagny(Player player) { - Account account = WorldManager.getPlayerAccount(player); - if(account.getCompagnyId() == -1) { // No compagny - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( - -1, "", 0,0 - ))); - } else { // Has compagny - Compagny compagny = getCompagnyById(account.getCompagnyId()); - if(compagny == null) { // Can't find the compagny - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( - -1, "", 0,0 - ))); - account.setCompagnyId(-1); - try { - AccountDAO.updateAccount(account, null); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Votre entreprise n'existe plus"); - return; - } - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( - compagny.getId(), compagny.getName(), compagny.isOwner(player) ? 1:0,compagny.getBankCash() - ))); - - // Refresh employees - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearCompagnyEmployeesPayload())); - for(Player employee : getOnlineEmployees(compagny)) { - Account eAccount = WorldManager.getPlayerAccount(employee); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCompagnyEmployeePayload( - employee.getSteamId(), eAccount.getCharacterName(), compagny.isOwner(employee) ? 1 : 0, true - ))); - } - } - } - - public static void handleInviteEmployee(Player player, String phoneNumber) { - Player invitedPlayer = WorldManager.getPlayerByPhoneNumber(phoneNumber); - if(invitedPlayer == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Cette personne n'est pas en ligne ou n'existe pas"); - return; - } - Account account = WorldManager.getPlayerAccount(player); - Compagny compagny = getCompagnyById(account.getCompagnyId()); - if(compagny == null) return; - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Invitation envoyée"); - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(invitedPlayer); - characterState.setCurrentCompagnyInvited(compagny.getId()); - - // Build generic menu - GenericMenu genericMenu = new GenericMenu(invitedPlayer); - genericMenu.getItems().add(new GenericMenuItem("Voulez-vous rejoindre " + compagny.getName() + " ?", "")); - genericMenu.getItems().add(new GenericMenuItem("Accepter", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:AcceptInvitation\");")); - genericMenu.getItems().add(new GenericMenuItem("Refuser", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:DeclineInvitation\");")); - genericMenu.show(); - characterState.setCurrentGenericMenu(genericMenu); - } - - public static void handleAcceptInvitation(Player player) { - Account account = WorldManager.getPlayerAccount(player); - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - Compagny compagny = getCompagnyById(characterState.getCurrentCompagnyInvited()); - account.setCompagnyId(compagny.getId()); - WorldManager.savePlayer(player); - - // Reset invitation - characterState.setCurrentCompagnyInvited(-1); - if(characterState.getCurrentGenericMenu() != null) { - characterState.getCurrentGenericMenu().hide(); - characterState.setCurrentGenericMenu(null); - } - - for (Player employee : getOnlineEmployees(compagny)) { - refreshCompagny(employee); - UIStateManager.sendNotification(employee, ToastTypeEnum.SUCCESS, account.getCharacterName() + " fait désormais partie de l'entreprise"); - } - } - - public static void handleDeclineInvitation(Player player) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - - // Reset invitation - characterState.setCurrentCompagnyInvited(-1); - if(characterState.getCurrentGenericMenu() != null) { - characterState.getCurrentGenericMenu().hide(); - characterState.setCurrentGenericMenu(null); - } - } - - public static void handleKickEmployee(Player player, String steamid) { - Account account = WorldManager.getPlayerAccount(player); - Compagny compagny = getCompagnyById(account.getCompagnyId()); - if(!compagny.isOwner(player)) return; - Player targetPlayer = WorldManager.findPlayerBySteamId(steamid); - if(targetPlayer == null) return; - Account targetAccount = WorldManager.getPlayerAccount(targetPlayer); - if(targetAccount.getId() == account.getId() && compagny.isOwner(player)) { - UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Action impossible, contactez un administrateur pour supprimer l'entreprise"); - return; - } - targetAccount.setCompagnyId(-1); - WorldManager.savePlayer(targetPlayer); - - for (Player employee : getOnlineEmployees(compagny)) { - refreshCompagny(employee); - UIStateManager.sendNotification(employee, ToastTypeEnum.WARN, targetAccount.getCharacterName() + " fait désormais plus partie de l'entreprise"); - } - UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Vous avez été licencier de l'entreprise " + compagny.getName()); - refreshCompagny(targetPlayer); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Company; +import fr.yuki.yrpf.net.payload.AddCompagnyEmployeePayload; +import fr.yuki.yrpf.net.payload.ClearCompagnyEmployeesPayload; +import fr.yuki.yrpf.net.payload.SetCompagnyPayload; +import fr.yuki.yrpf.ui.GenericMenu; +import fr.yuki.yrpf.ui.GenericMenuItem; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class CompanyManager { + public static List companies = new ArrayList<>(); + + public static void init() { + companies = Repo.get(Company.class).all(); + Onset.print("Loaded " + companies.size() + " companies from the database"); + } + + public static Company getCompanyById(int id) { + return companies.stream().filter(x -> x.getId() == id).findFirst().orElse(null); + } + + public static Company getCompanyByName(String name) { + return companies.stream().filter(x -> x.getName().equals(name)).findFirst().orElse(null); + } + + public static void handleCreateRequest(Player player, String name) throws SQLException { + Account account = WorldManager.getPlayerAccount(player); + if(account.getCompanyId() != -1) return; + if(getCompanyByName(name.trim()) != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Ce nom est déjà pris"); + return; + } + if(account.getBankMoney() < 10000) { // TODO: Put this in config + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Pas assez d'argent en banque"); + return; + } + ATMManager.removeCashFromBank(player, 10000); + Company company = new Company(); + company.setName(name.trim()); + company.setOwner(player.getSteamId()); + company.save(); + account.setCompanyId(company.getId()); + WorldManager.savePlayer(player); + companies.add(company); + Onset.print("Company " + name + " created"); + + refreshCompany(player); + } + + public static ArrayList getOnlineEmployees(Company company) { + ArrayList players = new ArrayList<>(); + for(Player player : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(player); + if(account == null) continue; + if(account.getCompanyId() == company.getId()) players.add(player); + } catch (Exception ex) {} + } + return players; + } + + public static void refreshCompany(Player player) { + Account account = WorldManager.getPlayerAccount(player); + if(account.getCompanyId() == -1) { // No compagny + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( + -1, "", 0,0 + ))); + } else { // Has compagny + Company company = getCompanyById(account.getCompanyId()); + if(company == null) { // Can't find the compagny + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( + -1, "", 0,0 + ))); + account.setCompanyId(-1); + account.save(); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Votre entreprise n'existe plus"); + return; + } + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetCompagnyPayload( + company.getId(), company.getName(), company.isOwner(player) ? 1:0, company.getBankCash() + ))); + + // Refresh employees + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearCompagnyEmployeesPayload())); + for(Player employee : getOnlineEmployees(company)) { + Account eAccount = WorldManager.getPlayerAccount(employee); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCompagnyEmployeePayload( + employee.getSteamId(), eAccount.getCharacterName(), company.isOwner(employee) ? 1 : 0, true + ))); + } + } + } + + public static void handleInviteEmployee(Player player, String phoneNumber) { + Player invitedPlayer = WorldManager.getPlayerByPhoneNumber(phoneNumber); + if(invitedPlayer == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, "Cette personne n'est pas en ligne ou n'existe pas"); + return; + } + Account account = WorldManager.getPlayerAccount(player); + Company company = getCompanyById(account.getCompanyId()); + if(company == null) return; + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Invitation envoyée"); + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(invitedPlayer); + characterState.setCurrentCompagnyInvited(company.getId()); + + // Build generic menu + GenericMenu genericMenu = new GenericMenu(invitedPlayer); + genericMenu.getItems().add(new GenericMenuItem("Voulez-vous rejoindre " + company.getName() + " ?", "")); + genericMenu.getItems().add(new GenericMenuItem("Accepter", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:AcceptInvitation\");")); + genericMenu.getItems().add(new GenericMenuItem("Refuser", "window.CallEvent(\"RemoteCallInterface\", \"Compagny:DeclineInvitation\");")); + genericMenu.show(); + characterState.setCurrentGenericMenu(genericMenu); + } + + public static void handleAcceptInvitation(Player player) { + Account account = WorldManager.getPlayerAccount(player); + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + Company company = getCompanyById(characterState.getCurrentCompagnyInvited()); + account.setCompanyId(company.getId()); + WorldManager.savePlayer(player); + + // Reset invitation + characterState.setCurrentCompagnyInvited(-1); + if(characterState.getCurrentGenericMenu() != null) { + characterState.getCurrentGenericMenu().hide(); + characterState.setCurrentGenericMenu(null); + } + + for (Player employee : getOnlineEmployees(company)) { + refreshCompany(employee); + UIStateManager.sendNotification(employee, ToastTypeEnum.SUCCESS, account.getCharacterName() + " fait désormais partie de l'entreprise"); + } + } + + public static void handleDeclineInvitation(Player player) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + + // Reset invitation + characterState.setCurrentCompagnyInvited(-1); + if(characterState.getCurrentGenericMenu() != null) { + characterState.getCurrentGenericMenu().hide(); + characterState.setCurrentGenericMenu(null); + } + } + + public static void handleKickEmployee(Player player, String steamid) { + Account account = WorldManager.getPlayerAccount(player); + Company company = getCompanyById(account.getCompanyId()); + if(!company.isOwner(player)) return; + Player targetPlayer = WorldManager.findPlayerBySteamId(steamid); + if(targetPlayer == null) return; + Account targetAccount = WorldManager.getPlayerAccount(targetPlayer); + if(targetAccount.getId() == account.getId() && company.isOwner(player)) { + UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Action impossible, contactez un administrateur pour supprimer l'entreprise"); + return; + } + targetAccount.setCompanyId(-1); + WorldManager.savePlayer(targetPlayer); + + for (Player employee : getOnlineEmployees(company)) { + refreshCompany(employee); + UIStateManager.sendNotification(employee, ToastTypeEnum.WARN, targetAccount.getCharacterName() + " fait désormais plus partie de l'entreprise"); + } + UIStateManager.sendNotification(targetPlayer, ToastTypeEnum.ERROR, "Vous avez été licencier de l'entreprise " + company.getName()); + refreshCompany(targetPlayer); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/FuelManager.java b/src/main/java/fr/yuki/yrpf/manager/FuelManager.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/manager/FuelManager.java rename to src/main/java/fr/yuki/yrpf/manager/FuelManager.java index 852b895..fdbd0ee 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/FuelManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/FuelManager.java @@ -1,96 +1,94 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.dao.FuelPointDAO; -import fr.yuki.YukiRPFramework.model.FuelPoint; -import fr.yuki.YukiRPFramework.model.Seller; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.sql.SQLException; -import java.util.ArrayList; - -public class FuelManager { - private static ArrayList fuelPoints; - - public static void init() throws SQLException { - fuelPoints = FuelPointDAO.loadFuelPoints(); - Onset.print("Loaded " + fuelPoints.size() + " fuel point(s) from the database"); - spawnFuelPoints(); - - Onset.timer(30000, () -> { // 30 minutes - for(Vehicle v : Onset.getVehicles()) { - if(v.isEngineOn()) { - if(v.getPropertyInt("fuel") > 0) { - v.setProperty("fuel", v.getPropertyInt("fuel") - 1, true); - - if(v.getPropertyInt("fuel") <= 0) { - if(v.isEngineOn()) { - v.setEngineOn(false); - } - } - } else { - if(v.isEngineOn()) { - v.setEngineOn(false); - } - } - } - } - }); - } - - public static void spawnFuelPoints() { - for(FuelPoint fuelPoint : fuelPoints) { - Pickup pickup = Onset.getServer().createPickup(new Vector(fuelPoint.getX(), fuelPoint.getY(), fuelPoint.getZ()), 1); - ModdingManager.assignCustomModel(pickup, 50008); - } - } - - public static FuelPoint getNearestFuelPoint(Player player) { - for(FuelPoint fuelPoint : fuelPoints) { - if(fuelPoint.isNear(player)) { - return fuelPoint; - } - } - return null; - } - - public static boolean interactFuelPoint(Player player, boolean fake) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(!characterState.canInteract()) { - return false; - } - if(player.getVehicle() != null) return false; - if(!fake) { - FuelPoint fuelPoint = getNearestFuelPoint(player); - if(fuelPoint == null) return false; - } - - Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(nearbyVehicle == null) return false; - if(nearbyVehicle.getLocation().distance(player.getLocation()) > 300) return false; - if(nearbyVehicle.getPropertyInt("fuel") >= 100) return false; - CharacterManager.setCharacterFreeze(player, true); - nearbyVehicle.setProperty("fuel", 0, true); - - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, - "sounds/water_fill.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), - new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); - characterLoopAnimation.start(); - - // Put the object in the hand - Onset.delay(10000, () -> { - nearbyVehicle.setProperty("fuel", 100, true); - CharacterManager.setCharacterFreeze(player, false); - characterLoopAnimation.stop(); - }); - return true; - } -} +package fr.yuki.yrpf.manager; + +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.model.FuelPoint; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.util.List; + +public class FuelManager { + private static List fuelPoints; + + public static void init() { + fuelPoints = Repo.get(FuelPoint.class).all(); + Onset.print("Loaded " + fuelPoints.size() + " fuel point(s) from the database"); + spawnFuelPoints(); + + Onset.timer(30000, () -> { // 30 minutes + for(Vehicle v : Onset.getVehicles()) { + if(v.isEngineOn()) { + if(v.getPropertyInt("fuel") > 0) { + v.setProperty("fuel", v.getPropertyInt("fuel") - 1, true); + + if(v.getPropertyInt("fuel") <= 0) { + if(v.isEngineOn()) { + v.setEngineOn(false); + } + } + } else { + if(v.isEngineOn()) { + v.setEngineOn(false); + } + } + } + } + }); + } + + public static void spawnFuelPoints() { + for(FuelPoint fuelPoint : fuelPoints) { + Pickup pickup = Onset.getServer().createPickup(new Vector(fuelPoint.getX(), fuelPoint.getY(), fuelPoint.getZ()), 1); + ModdingManager.assignCustomModel(pickup, 50008); + } + } + + public static FuelPoint getNearestFuelPoint(Player player) { + for(FuelPoint fuelPoint : fuelPoints) { + if(fuelPoint.isNear(player)) { + return fuelPoint; + } + } + return null; + } + + public static boolean interactFuelPoint(Player player, boolean fake) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(!characterState.canInteract()) { + return false; + } + if(player.getVehicle() != null) return false; + if(!fake) { + FuelPoint fuelPoint = getNearestFuelPoint(player); + if(fuelPoint == null) return false; + } + + Vehicle nearbyVehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(nearbyVehicle == null) return false; + if(nearbyVehicle.getLocation().distance(player.getLocation()) > 300) return false; + if(nearbyVehicle.getPropertyInt("fuel") >= 100) return false; + CharacterManager.setCharacterFreeze(player, true); + nearbyVehicle.setProperty("fuel", 0, true); + + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, + "sounds/water_fill.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), + new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); + characterLoopAnimation.start(); + + // Put the object in the hand + Onset.delay(10000, () -> { + nearbyVehicle.setProperty("fuel", 100, true); + CharacterManager.setCharacterFreeze(player, false); + characterLoopAnimation.stop(); + }); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/GarageManager.java b/src/main/java/fr/yuki/yrpf/manager/GarageManager.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/manager/GarageManager.java rename to src/main/java/fr/yuki/yrpf/manager/GarageManager.java index c8cb4b4..fe101e4 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/GarageManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/GarageManager.java @@ -1,259 +1,257 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.dao.GarageDAO; -import fr.yuki.YukiRPFramework.dao.VehicleGarageDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.*; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Color; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.stream.Collectors; - -public class GarageManager { - - private static ArrayList vehicleGarages; - - public static void init() throws SQLException { - vehicleGarages = VehicleGarageDAO.loadVehiclesGarage(); - Onset.print("Loaded " + vehicleGarages.size() + " vehicle(s) from the database"); - - // Reset last garage to vehicle - for(VehicleGarage vehicleGarage : vehicleGarages) { - vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); - VehicleGarageDAO.saveVehicleGarage(vehicleGarage); - } - } - - /** - * Check if the player is near a garage to interact with - * @param player The player - */ - public static boolean handleGarageInteract(Player player) { - for(Garage garage : WorldManager.getGarages()) { - if(garage.isNear(player)) { - openGarage(player, garage); - return true; - } - } - return false; - } - - public static Garage getNearestGarage(Player player) { - for(Garage garage : WorldManager.getGarages()) { - if(garage.isNear(player)) { - return garage; - } - } - return null; - } - - public static Garage getNearestFromPosGarage(Player player) { - Garage nearest = null; - double distance = 999999999; - for(Garage garage : WorldManager.getGarages()) { - double d = player.getLocation().distance(new Vector(garage.getX(), garage.getY(), garage.getZ())); - if(d < distance) { - nearest = garage; - distance = d; - } - } - return nearest; - } - - /** - * Open the garage to the player - * @param player The player - * @param garage The garage to open - */ - public static void openGarage(Player player, Garage garage) { - if(player.getVehicle() != null) { - storeVehicleInGarage(player, garage); - return; - } - - UIStateManager.handleUIToogle(player, "garage"); - Onset.print("Request garage open player=" + player.getSteamId() + " garageId=" + garage.getId() + " name=" + garage.getName()); - - // Reset the garage first - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new ResetVehicleGaragePayload())); - - // Send vehicles to players - for(VehicleGarage vehicleGarage : getVehicleGaragesByPlayer(player, garage.getId())) { - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new AddVehicleGaragePayload(vehicleGarage.getModelId(), vehicleGarage.getUuid(), - vehicleGarage.getColor(), vehicleGarage.getLicencePlate()))); - } - } - - /** - * Store the vehicle in the garage - * @param player The player - * @param garage The garage to store - */ - public static void storeVehicleInGarage(Player player, Garage garage) { - Account account = WorldManager.getPlayerAccount(player); - Vehicle vehicle = player.getVehicle(); - if(!vehicle.getPropertyString("owner").equals(player.getSteamId())){ - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); - return; - } - // Exit the player from the vehicle - player.exitVehicle(); - - // Update the vehicle instance - VehicleGarage vehicleGarage = vehicleGarages.stream().filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) - .findFirst().orElse(null); - if(vehicleGarage == null || vehicleGarage.isRental()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); - return; - } - vehicleGarage.setGarageId(garage.getId()); - vehicleGarage.setGarageLastId(garage.getId()); - vehicleGarage.computeDamages(vehicle); - VehicleManager.clearKeysForVehicle(vehicle, player); - vehicleGarage.save(); - - // Destroy the vehicle - vehicle.destroy(); - - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.garage.vehicle_stored", garage.getName())); - } - - /** - * Get all the vehicles in a specific garage for a player - * @param player The player - * @param garageId The garage id - * @return All players vehicle in the garage given - */ - public static ArrayList getVehicleGaragesByPlayer(Player player, int garageId) { - return new ArrayList<>(vehicleGarages.stream().filter(x -> x.getOwner() == WorldManager.getPlayerAccount(player).getId() && x.getGarageId() == garageId) - .collect(Collectors.toList())); - } - - public static VehicleGarage findVehicleGarageByVehicle(Vehicle vehicle) { - return vehicleGarages.stream().filter(x -> x.getUuid() == vehicle.getPropertyString("uuid")).findFirst().orElse(null); - } - - /** - * Handle the vehicle request from the player on the garage - * @param player The player - */ - public static void handleRequestVehicle(Player player, String vehicleUuid) { - Account account = WorldManager.getPlayerAccount(player); - Garage garage = getNearestGarage(player); - if(garage == null) { - UIStateManager.handleUIToogle(player, "garage"); - return; - } - VehicleGarage vehicleGarage = getVehicleGaragesByPlayer(player, garage.getId()).stream() - .filter(x -> x.getUuid().equals(vehicleUuid)).findFirst().orElse(null); - if(vehicleGarage == null) return; - - if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { - if(VehicleManager.getNearestVehicle(player.getLocation()).getLocation().distance(player.getLocation()) < 400) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); - return; - } - } - - UIStateManager.handleUIToogle(player, "garage"); - vehicleGarage.setGarageId(-1); - vehicleGarage.setGarageLastId(garage.getId()); - VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(vehicleGarage.getModelId(), - new Vector(garage.getX(), garage.getY(), garage.getZ()), player.getLocationAndHeading().getHeading(), - player, vehicleGarage, false); - vehicleGarage.applyDamages(createVehicleResult.getVehicle()); - vehicleGarage.save(); - } - - public static ArrayList getVehicleGarages() { - return vehicleGarages; - } - - public static boolean handleVSellerInteract(Player player) { - for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { - if(vehicleSeller.isNear(player)) { - openVehicleSeller(player, vehicleSeller); - return true; - } - } - return false; - } - - public static VehicleSeller getNearVehicleSeller(Player player) { - for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { - if(vehicleSeller.isNear(player)) { - return vehicleSeller; - } - } - return null; - } - - public static void openVehicleSeller(Player player, VehicleSeller vehicleSeller) { - UIStateManager.handleUIToogle(player, "vseller"); - for(SellListItem sellListItem : vehicleSeller.getSellList()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new AddVSellerVehiclePayload(sellListItem.getModelId(), sellListItem.getPrice(), - sellListItem.getName(), sellListItem.getDescription()))); - } - } - - public static void handleRequestBuyVehicle(Player player, RequestBuyVehiclePayload payload) { - Account account = WorldManager.getPlayerAccount(player); - - if(player.getVehicle() != null) { - UIStateManager.handleUIToogle(player, "vseller"); - return; - } - - VehicleSeller vehicleSeller = getNearVehicleSeller(player); - if(vehicleSeller == null) { - UIStateManager.handleUIToogle(player, "vseller"); - return; - } - SellListItem sellListItem = vehicleSeller.getSellList().stream().filter(x -> x.getModelId() == payload.getModelId()).findFirst().orElse(null); - if(sellListItem == null) return; - - Vector spawnPoint = new Vector(vehicleSeller.getsX(), vehicleSeller.getsY(), vehicleSeller.getsZ()); - if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { - if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 400) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); - return; - } - } - - // Check price - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getCashAmount() < sellListItem.getPrice()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); - UIStateManager.handleUIToogle(player, "vseller"); - return; - } - - UIStateManager.handleUIToogle(player, "vseller"); - - // Remove cash and spawn vehicle - Garage nearestGarage = getNearestFromPosGarage(player); - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), sellListItem.getPrice()); - VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(sellListItem.getModelId(), spawnPoint, vehicleSeller.getH(), - player, null, false); - createVehicleResult.getVehicleGarage().setColor(payload.getColor()); - createVehicleResult.getVehicleGarage().setGarageLastId(nearestGarage.getId()); - createVehicleResult.getVehicleGarage().save(); - createVehicleResult.getVehicle().setColor(new Color(payload.getAWTColor().getRed(), payload.getAWTColor().getGreen(), payload.getAWTColor().getBlue())); - - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.vseller.success_buy_vehicle", sellListItem.getName(), String.valueOf(sellListItem.getPrice()))); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.*; +import lombok.Getter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Color; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class GarageManager { + + @Getter + private static List vehicleGarages; + + public static void init() throws SQLException { + vehicleGarages = Repo.get(VehicleGarage.class).all(); + Onset.print("Loaded " + vehicleGarages.size() + " vehicle(s) from the database"); + + // Reset last garage to vehicle + for(VehicleGarage vehicleGarage : vehicleGarages) { + vehicleGarage.setGarageId(vehicleGarage.getGarageLastId()); + vehicleGarage.save(); + } + } + + /** + * Check if the player is near a garage to interact with + * @param player The player + */ + public static boolean handleGarageInteract(Player player) { + for(Garage garage : WorldManager.getGarages()) { + if(garage.isNear(player)) { + openGarage(player, garage); + return true; + } + } + return false; + } + + public static Garage getNearestGarage(Player player) { + for(Garage garage : WorldManager.getGarages()) { + if(garage.isNear(player)) { + return garage; + } + } + return null; + } + + public static Garage getNearestFromPosGarage(Player player) { + Garage nearest = null; + double distance = 999999999; + for(Garage garage : WorldManager.getGarages()) { + double d = player.getLocation().distance(new Vector(garage.getX(), garage.getY(), garage.getZ())); + if(d < distance) { + nearest = garage; + distance = d; + } + } + return nearest; + } + + /** + * Open the garage to the player + * @param player The player + * @param garage The garage to open + */ + public static void openGarage(Player player, Garage garage) { + if(player.getVehicle() != null) { + storeVehicleInGarage(player, garage); + return; + } + + UIStateManager.handleUIToogle(player, "garage"); + Onset.print("Request garage open player=" + player.getSteamId() + " garageId=" + garage.getId() + " name=" + garage.getName()); + + // Reset the garage first + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new ResetVehicleGaragePayload())); + + // Send vehicles to players + for(VehicleGarage vehicleGarage : getVehicleGaragesByPlayer(player, garage.getId())) { + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new AddVehicleGaragePayload(vehicleGarage.getModelId(), vehicleGarage.getUuid(), + vehicleGarage.getColor(), vehicleGarage.getLicencePlate()))); + } + } + + /** + * Store the vehicle in the garage + * @param player The player + * @param garage The garage to store + */ + public static void storeVehicleInGarage(Player player, Garage garage) { + Account account = WorldManager.getPlayerAccount(player); + Vehicle vehicle = player.getVehicle(); + if(!vehicle.getPropertyString("owner").equals(player.getSteamId())){ + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); + return; + } + // Exit the player from the vehicle + player.exitVehicle(); + + // Update the vehicle instance + VehicleGarage vehicleGarage = vehicleGarages.stream().filter(x -> x.getUuid().equals(vehicle.getPropertyString("uuid"))) + .findFirst().orElse(null); + if(vehicleGarage == null || vehicleGarage.isRental()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.not_owner_vehicle")); + return; + } + vehicleGarage.setGarageId(garage.getId()); + vehicleGarage.setGarageLastId(garage.getId()); + vehicleGarage.computeDamages(vehicle); + VehicleManager.clearKeysForVehicle(vehicle, player); + vehicleGarage.save(); + + // Destroy the vehicle + vehicle.destroy(); + + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.garage.vehicle_stored", garage.getName())); + } + + /** + * Get all the vehicles in a specific garage for a player + * @param player The player + * @param garageId The garage id + * @return All players vehicle in the garage given + */ + public static ArrayList getVehicleGaragesByPlayer(Player player, int garageId) { + return new ArrayList<>(vehicleGarages.stream().filter(x -> x.getOwner() == WorldManager.getPlayerAccount(player).getId() && x.getGarageId() == garageId) + .collect(Collectors.toList())); + } + + public static VehicleGarage findVehicleGarageByVehicle(Vehicle vehicle) { + return vehicleGarages.stream().filter(x -> x.getUuid() == vehicle.getPropertyString("uuid")).findFirst().orElse(null); + } + + /** + * Handle the vehicle request from the player on the garage + * @param player The player + */ + public static void handleRequestVehicle(Player player, String vehicleUuid) { + Account account = WorldManager.getPlayerAccount(player); + Garage garage = getNearestGarage(player); + if(garage == null) { + UIStateManager.handleUIToogle(player, "garage"); + return; + } + VehicleGarage vehicleGarage = getVehicleGaragesByPlayer(player, garage.getId()).stream() + .filter(x -> x.getUuid().equals(vehicleUuid)).findFirst().orElse(null); + if(vehicleGarage == null) return; + + if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { + if(VehicleManager.getNearestVehicle(player.getLocation()).getLocation().distance(player.getLocation()) < 400) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); + return; + } + } + + UIStateManager.handleUIToogle(player, "garage"); + vehicleGarage.setGarageId(-1); + vehicleGarage.setGarageLastId(garage.getId()); + VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(vehicleGarage.getModelId(), + new Vector(garage.getX(), garage.getY(), garage.getZ()), player.getLocationAndHeading().getHeading(), + player, vehicleGarage, false); + vehicleGarage.applyDamages(createVehicleResult.getVehicle()); + vehicleGarage.save(); + } + + public static boolean handleVSellerInteract(Player player) { + for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { + if(vehicleSeller.isNear(player)) { + openVehicleSeller(player, vehicleSeller); + return true; + } + } + return false; + } + + public static VehicleSeller getNearVehicleSeller(Player player) { + for(VehicleSeller vehicleSeller : WorldManager.getVehicleSellers()) { + if(vehicleSeller.isNear(player)) { + return vehicleSeller; + } + } + return null; + } + + public static void openVehicleSeller(Player player, VehicleSeller vehicleSeller) { + UIStateManager.handleUIToogle(player, "vseller"); + for(SellListItem sellListItem : vehicleSeller.getSellList()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new AddVSellerVehiclePayload(sellListItem.getModelId(), sellListItem.getPrice(), + sellListItem.getName(), sellListItem.getDescription()))); + } + } + + public static void handleRequestBuyVehicle(Player player, RequestBuyVehiclePayload payload) { + Account account = WorldManager.getPlayerAccount(player); + + if(player.getVehicle() != null) { + UIStateManager.handleUIToogle(player, "vseller"); + return; + } + + VehicleSeller vehicleSeller = getNearVehicleSeller(player); + if(vehicleSeller == null) { + UIStateManager.handleUIToogle(player, "vseller"); + return; + } + SellListItem sellListItem = vehicleSeller.getSellList().stream().filter(x -> x.getModelId() == payload.getModelId()).findFirst().orElse(null); + if(sellListItem == null) return; + + Vector spawnPoint = vehicleSeller.getSpawnLocation(); + if(VehicleManager.getNearestVehicle(player.getLocation()) != null) { + if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 400) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); + return; + } + } + + // Check price + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getCashAmount() < sellListItem.getPrice()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.atm.no_enought_money_on_me")); + UIStateManager.handleUIToogle(player, "vseller"); + return; + } + + UIStateManager.handleUIToogle(player, "vseller"); + + // Remove cash and spawn vehicle + Garage nearestGarage = getNearestFromPosGarage(player); + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), sellListItem.getPrice()); + VehicleManager.CreateVehicleResult createVehicleResult = VehicleManager.createVehicle(sellListItem.getModelId(), spawnPoint, vehicleSeller.getH(), + player, null, false); + createVehicleResult.getVehicleGarage().setColor(payload.getColor()); + createVehicleResult.getVehicleGarage().setGarageLastId(nearestGarage.getId()); + createVehicleResult.getVehicleGarage().save(); + createVehicleResult.getVehicle().setColor(new Color(payload.getAWTColor().getRed(), payload.getAWTColor().getGreen(), payload.getAWTColor().getBlue())); + + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.vseller.success_buy_vehicle", sellListItem.getName(), String.valueOf(sellListItem.getPrice()))); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/GrowboxManager.java b/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/manager/GrowboxManager.java rename to src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java index 3230d42..0f30e36 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/GrowboxManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/GrowboxManager.java @@ -1,154 +1,150 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.dao.GrowboxDAO; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.job.tools.Generator; -import fr.yuki.YukiRPFramework.job.tools.GrowBox; -import fr.yuki.YukiRPFramework.model.GrowboxModel; -import fr.yuki.YukiRPFramework.model.JobTool; -import fr.yuki.YukiRPFramework.net.payload.GrowboxFillWaterPotPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Timer; -import java.util.TimerTask; -import java.util.stream.Collectors; - -public class GrowboxManager { - public static void init() throws SQLException { - // Load growboxes - for(GrowboxModel growboxModel : GrowboxDAO.loadGrowbox()) { - JobTool jobTool = new JobTool(); - jobTool.setId(-1); - jobTool.setModelId(50007); - jobTool.setName("GrowBox"); - jobTool.setJobType("WEED"); - jobTool.setLevelRequired(1); - jobTool.setReward(0); - jobTool.setX(growboxModel.getX()); - jobTool.setY(growboxModel.getY()); - jobTool.setZ(growboxModel.getZ()); - jobTool.setRx(growboxModel.getRx()); - jobTool.setRy(growboxModel.getRy()); - jobTool.setRz(growboxModel.getRz()); - jobTool.setSx(1); - jobTool.setSy(1); - jobTool.setSz(1); - jobTool.setJobToolType("GROWBOX"); - ((GrowBox)jobTool.getJobToolHandler()).setGrowboxModel(growboxModel); - JobManager.getJobTools().add(jobTool); - jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); - } - - Onset.timer(10000, () -> { - tickGrow(); - }); - - Onset.timer(20000, () -> { - tickGenerator(); - }); - } - - public static void tickGrow() { - try { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("growbox")) - .collect(Collectors.toList())) { - try { - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.tickGrow(); - }catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't tick single grow: " + ex.toString()); - } - } - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't tick grow: " + ex.toString()); - } - } - - public static void tickGenerator() { - try { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) - .collect(Collectors.toList())) { - try { - Generator generator = (Generator) jobTool.getJobToolHandler(); - generator.tickFuel(); - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't tick single generator: " + ex.toString()); - } - } - } catch (Exception ex) { - ex.printStackTrace();; - Onset.print("Can't tick generator: " + ex.toString()); - } - } - - public static Generator getGeneratorNearby(Vector position, int distance) { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) - .collect(Collectors.toList())) { - Generator generator = (Generator)jobTool.getJobToolHandler(); - if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { - return generator; - } - } - return null; - } - - public static Generator getGeneratorOnNearby(Vector position, int distance) { - for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) - .collect(Collectors.toList())) { - Generator generator = (Generator)jobTool.getJobToolHandler(); - if(generator.isOn()) { - if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { - return generator; - } - } - } - return null; - } - - public static void handleGrowboxFillWaterPot(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.fillPotWater(player, payload.getPotId()); - } - - public static void handleGrowboxFillSeedPot(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.fillPotSeed(player, payload.getPotId()); - } - - public static void handleGrowboxHarvestRequest(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.harvestPot(player, payload.getPotId()); - } - - public static void handleGrowboxTakePotRequest(Player player, GrowboxFillWaterPotPayload payload) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.takePot(player, payload.getPotId()); - } - - public static void handleGrowboxDestroy(Player player, String growboxId) { - JobTool jobTool = JobManager.getJobTools().stream().filter - (x -> x.getUuid().equals(growboxId)).findFirst().orElse(null); - if(jobTool == null) return; - GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); - growBox.destroy(player); - } -} +package fr.yuki.yrpf.manager; + +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.job.tools.Generator; +import fr.yuki.yrpf.job.tools.GrowBox; +import fr.yuki.yrpf.model.GrowboxModel; +import fr.yuki.yrpf.model.JobTool; +import fr.yuki.yrpf.net.payload.GrowboxFillWaterPotPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.stream.Collectors; + +public class GrowboxManager { + public static void init() { + // Load growboxes + for(GrowboxModel growboxModel : Repo.get(GrowboxModel.class).all()) { + JobTool jobTool = new JobTool(); + jobTool.setId(-1); + jobTool.setModelId(50007); + jobTool.setName("GrowBox"); + jobTool.setJobType("WEED"); + jobTool.setLevelRequired(1); + jobTool.setReward(0); + jobTool.setX(growboxModel.getX()); + jobTool.setY(growboxModel.getY()); + jobTool.setZ(growboxModel.getZ()); + jobTool.setRX(growboxModel.getRx()); + jobTool.setRY(growboxModel.getRy()); + jobTool.setRY(growboxModel.getRz()); + jobTool.setSX(1); + jobTool.setSY(1); + jobTool.setSZ(1); + jobTool.setJobToolType("GROWBOX"); + ((GrowBox)jobTool.getJobToolHandler()).setGrowboxModel(growboxModel); + JobManager.getJobTools().add(jobTool); + jobTool.spawn(JobManager.getJobs().get(JobEnum.WEED)); + } + + Onset.timer(10000, () -> { + tickGrow(); + }); + + Onset.timer(20000, () -> { + tickGenerator(); + }); + } + + public static void tickGrow() { + try { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("growbox")) + .collect(Collectors.toList())) { + try { + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.tickGrow(); + }catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't tick single grow: " + ex.toString()); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't tick grow: " + ex.toString()); + } + } + + public static void tickGenerator() { + try { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) + .collect(Collectors.toList())) { + try { + Generator generator = (Generator) jobTool.getJobToolHandler(); + generator.tickFuel(); + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't tick single generator: " + ex.toString()); + } + } + } catch (Exception ex) { + ex.printStackTrace();; + Onset.print("Can't tick generator: " + ex.toString()); + } + } + + public static Generator getGeneratorNearby(Vector position, int distance) { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) + .collect(Collectors.toList())) { + Generator generator = (Generator)jobTool.getJobToolHandler(); + if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { + return generator; + } + } + return null; + } + + public static Generator getGeneratorOnNearby(Vector position, int distance) { + for(JobTool jobTool : JobManager.getJobTools().stream().filter(x -> x.getJobToolType().toLowerCase().equals("generator")) + .collect(Collectors.toList())) { + Generator generator = (Generator)jobTool.getJobToolHandler(); + if(generator.isOn()) { + if(new Vector(jobTool.getX(), jobTool.getY(), jobTool.getZ()).distance(position) <= distance) { + return generator; + } + } + } + return null; + } + + public static void handleGrowboxFillWaterPot(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.fillPotWater(player, payload.getPotId()); + } + + public static void handleGrowboxFillSeedPot(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.fillPotSeed(player, payload.getPotId()); + } + + public static void handleGrowboxHarvestRequest(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.harvestPot(player, payload.getPotId()); + } + + public static void handleGrowboxTakePotRequest(Player player, GrowboxFillWaterPotPayload payload) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(payload.getGrowboxId())).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.takePot(player, payload.getPotId()); + } + + public static void handleGrowboxDestroy(Player player, String growboxId) { + JobTool jobTool = JobManager.getJobTools().stream().filter + (x -> x.getUuid().equals(growboxId)).findFirst().orElse(null); + if(jobTool == null) return; + GrowBox growBox = (GrowBox)jobTool.getJobToolHandler(); + growBox.destroy(player); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java b/src/main/java/fr/yuki/yrpf/manager/HouseManager.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java rename to src/main/java/fr/yuki/yrpf/manager/HouseManager.java index bad3111..8ccff5e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/HouseManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/HouseManager.java @@ -1,183 +1,171 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.dao.HouseDAO; -import fr.yuki.YukiRPFramework.dao.HouseItemDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.job.JobSpawn; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddPhoneMessagePayload; -import fr.yuki.YukiRPFramework.net.payload.SetHouseInfosPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.io.File; -import java.io.FileReader; -import java.sql.SQLException; -import java.util.ArrayList; - -public class HouseManager { - public static ArrayList houses; - public static ArrayList itemShopObjects; - - public static void init() throws SQLException { - houses = HouseDAO.loadHouses(); - Onset.print("Loaded " + houses.size() + " house(s) from the database"); - - loadItemsShop(); - spawnHouseItems(); - } - - private static void loadItemsShop() { - try { - new File("yrpf").mkdir(); - itemShopObjects = new Gson().fromJson(new FileReader("yrpf/itemshop.json"), new TypeToken>(){}.getType()); - Onset.print("Loaded " + itemShopObjects.size() + " item(s) shop from the cache"); - } catch (Exception e) { - Onset.print("Can't load job cache: " + e.toString()); - } - } - - public static void spawnHouseItems() throws SQLException { - for(HouseItemObject houseItemObject : HouseItemDAO.loadHouseItems()) { - House house = getHouseAtLocation(houseItemObject.getPosition()); - if(house == null) { - Onset.print("Can't find the house for item: " + houseItemObject.getId()); - return; - } - houseItemObject.setHouse(house); - house.getHouseItemObjects().add(houseItemObject); - houseItemObject.spawn(); - } - } - - public static House getHouseAtLocation(Vector position) { - return houses.stream().filter(x -> x.getLine3D().isInside(position)).findFirst().orElse(null); - } - - public static void handleHouseMenu(Player player, Vector origin) { - House house = getHouseAtLocation(origin); - if(house == null) return; - Account account = WorldManager.getPlayerAccount(player); - if(house.getAccountId() != -1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); - return; - } - if(!UIStateManager.handleUIToogle(player, "houseBuy")) { - return; - } - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetHouseInfosPayload - (house.getPrice(), house.getName()))); - } - - public static void handleBuyHouseRequest(Player player) throws SQLException { - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) { - Onset.print("houseid by door: " + house.getId()); - house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); - } - else { - Onset.print("houseid by playerloc: " + house.getId()); - } - if(house == null) return; - Account account = WorldManager.getPlayerAccount(player); - if(house.getAccountId() != -1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); - return; - } - Inventory inventory = InventoryManager.getMainInventory(player); - if(inventory.getCashAmount() < house.getPrice()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); - return; - } - - // Open doors - for(Door door : house.getLine3D().getDoorsInside()) { - door.open(); - } - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), house.getPrice()); - house.setAccountId(account.getId()); - HouseDAO.saveHouse(house); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.success_buy")); - UIStateManager.handleUIToogle(player, "houseBuy"); - } - - public static void handleRequestBuyItemShop(Player player, int modelId) { - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentObjectPlacementInstance() != null) return; - if(characterState.getWearableWorldObject() != null) return; - Account account = WorldManager.getPlayerAccount(player); - - Inventory inventory = InventoryManager.getMainInventory(player); - ItemShopObject itemShopObject = itemShopObjects.stream().filter(x -> x.getModelId() == modelId).findFirst().orElse(null); - if(itemShopObject == null) return; - if(itemShopObject.getPrice() > inventory.getCashAmount()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); - return; - } - - UIStateManager.handleUIToogle(player, "phone"); - ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), modelId, itemShopObject.getPrice()); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - public static void handleGiveHouseKey(Player player, int target) { - Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == target) - .findFirst().orElse(null); - if(playerTarget == null) return; - House house = HouseManager.getHouseAtLocation(player.getLocation()); - if(house == null) return; - if(!HouseManager.canBuildInHouse(player, house)) return; - Account targetAccount = WorldManager.getPlayerAccount(playerTarget); - if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return; - house.getAllowedPlayers().add(targetAccount.getId()); - UIStateManager.sendNotification(playerTarget, ToastTypeEnum.SUCCESS, "Vous avez désormais les clés de la maison"); - } - - public static boolean canBuildInHouse(Player player, House house) { - try { - Account account = WorldManager.getPlayerAccount(player); - if(account.getId() == house.getAccountId()) { - return true; - } - if(house.getAllowedPlayers().contains(account.getId())) { - return true; - } - - // Check same compagny - if(account.getCompagnyId() != -1) { - Account ownerAccount = AccountDAO.findAccountById(house.getAccountId()); - if(ownerAccount != null) { - if(account.getCompagnyId() == ownerAccount.getCompagnyId()) { - return true; - } - } - } - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - return false; - } - - public static ArrayList getHouses() { - return houses; - } - - public static ArrayList getItemShopObjects() { - return itemShopObjects; - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GenericPlacementInstance; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.SetHouseInfosPayload; +import lombok.Getter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.io.File; +import java.io.FileReader; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class HouseManager { + @Getter + public static List houses; + @Getter + public static List itemShopObjects; + + public static void init() throws SQLException { + houses = Repo.get(House.class).all(); + Onset.print("Loaded " + houses.size() + " house(s) from the database"); + + loadItemsShop(); + spawnHouseItems(); + } + + private static void loadItemsShop() { + try { + new File("yrpf").mkdir(); + itemShopObjects = new Gson().fromJson(new FileReader("yrpf/itemshop.json"), new TypeToken>(){}.getType()); + Onset.print("Loaded " + itemShopObjects.size() + " item(s) shop from the cache"); + } catch (Exception e) { + Onset.print("Can't load job cache: " + e.toString()); + } + } + + public static void spawnHouseItems() { + for(HouseItemObject houseItemObject : Repo.get(HouseItemObject.class).all()) { + House house = getHouseAtLocation(houseItemObject.getPosition()); + if(house == null) { + Onset.print("Can't find the house for item: " + houseItemObject.getId()); + return; + } + houseItemObject.setHouse(house); + house.getHouseItemObjects().add(houseItemObject); + houseItemObject.spawn(); + } + } + + public static House getHouseAtLocation(Vector position) { + return houses.stream().filter(x -> x.getLine3D().isInside(position)).findFirst().orElse(null); + } + + public static void handleHouseMenu(Player player, Vector origin) { + House house = getHouseAtLocation(origin); + if(house == null) return; + Account account = WorldManager.getPlayerAccount(player); + if(house.getAccountId() != -1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); + return; + } + if(!UIStateManager.handleUIToogle(player, "houseBuy")) { + return; + } + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetHouseInfosPayload + (house.getPrice(), house.getName()))); + } + + public static void handleBuyHouseRequest(Player player) throws SQLException { + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) { + Onset.print("houseid by door: " + house.getId()); + house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation()); + } + else { + Onset.print("houseid by playerloc: " + house.getId()); + } + if(house == null) return; + Account account = WorldManager.getPlayerAccount(player); + if(house.getAccountId() != -1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.already_buy")); + return; + } + Inventory inventory = InventoryManager.getMainInventory(player); + if(inventory.getCashAmount() < house.getPrice()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); + return; + } + + // Open doors + for(Door door : house.getLine3D().getDoorsInside()) { + door.open(); + } + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), house.getPrice()); + house.setAccountId(account.getId()); + house.save(); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.success_buy")); + UIStateManager.handleUIToogle(player, "houseBuy"); + } + + public static void handleRequestBuyItemShop(Player player, int modelId) { + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentObjectPlacementInstance() != null) return; + if(characterState.getWearableWorldObject() != null) return; + Account account = WorldManager.getPlayerAccount(player); + + Inventory inventory = InventoryManager.getMainInventory(player); + ItemShopObject itemShopObject = itemShopObjects.stream().filter(x -> x.getModelId() == modelId).findFirst().orElse(null); + if(itemShopObject == null) return; + if(itemShopObject.getPrice() > inventory.getCashAmount()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.no_enought_money_on_me")); + return; + } + + UIStateManager.handleUIToogle(player, "phone"); + ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(player.getLocation(), modelId, itemShopObject.getPrice()); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + public static void handleGiveHouseKey(Player player, int target) { + Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == target) + .findFirst().orElse(null); + if(playerTarget == null) return; + House house = HouseManager.getHouseAtLocation(player.getLocation()); + if(house == null) return; + if(!HouseManager.canBuildInHouse(player, house)) return; + Account targetAccount = WorldManager.getPlayerAccount(playerTarget); + if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return; + house.getAllowedPlayers().add(targetAccount.getId()); + UIStateManager.sendNotification(playerTarget, ToastTypeEnum.SUCCESS, "Vous avez désormais les clés de la maison"); + } + + public static boolean canBuildInHouse(Player player, House house) { + Account account = WorldManager.getPlayerAccount(player); + if(account.getId() == house.getAccountId()) { + return true; + } + if(house.getAllowedPlayers().contains(account.getId())) { + return true; + } + + // Check same compagny + if(account.getCompanyId() != -1) { + Account ownerAccount = Repo.get(Account.class).get(house.getAccountId()); + if(ownerAccount != null) { + if(account.getCompanyId() == ownerAccount.getCompanyId()) { + return true; + } + } + } + + return false; + } + +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/InventoryManager.java b/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java similarity index 80% rename from src/main/java/fr/yuki/YukiRPFramework/manager/InventoryManager.java rename to src/main/java/fr/yuki/yrpf/manager/InventoryManager.java index 9e1016b..bd4f0f0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/InventoryManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/InventoryManager.java @@ -1,160 +1,157 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.dao.InventoryDAO; -import fr.yuki.YukiRPFramework.dao.ItemTemplateDAO; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.GroundItem; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.net.payload.RemoteItemInventoryPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestInventoryContentPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; -import java.util.*; - -public class InventoryManager { - private static HashMap itemTemplates; - private static HashMap inventories; - - public static void init() throws SQLException { - itemTemplates = ItemTemplateDAO.getItemTemplates(); - Onset.print("Loaded " + itemTemplates.size() + " item template(s) from the database"); - - inventories = InventoryDAO.loadInventories(); - Onset.print("Loaded " + inventories.size() + " inventorie(s) from the database"); - } - - /** - * Find a inventory by the id - * @param id The inventory id - * @return The inventory - */ - public static Inventory getInventoryById(int id) { - if(!inventories.containsKey(id)) return null; - return inventories.get(id); - } - - /** - * Get all inventories for the player - * @param accountId The account id - * @return All inventories of the player - */ - public static ArrayList getInventoriesForAccount(int accountId) { - ArrayList playerInventories = new ArrayList<>(); - for(Map.Entry inventoryEntry : inventories.entrySet()) { - try { - if(accountId == inventoryEntry.getValue().getCharacterId()) { - playerInventories.add(inventoryEntry.getValue()); - } - }catch (Exception ex) {} - } - return playerInventories; - } - - /** - * Try to add the item to the player inventory, this function check the weight - * @param player The player - * @param templateId The template id - * @param quantity The quantity - * @return The fresh or existing item - */ - public static InventoryItem addItemToPlayer(Player player, String templateId, int quantity, boolean checkWeight) { - Onset.print("Add item=" + templateId + " to size=" + getInventoriesForAccount(player.getPropertyInt("accountId")).size()); - Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); - InventoryItem inventoryItem = new InventoryItem(); - inventoryItem.setId(UUID.randomUUID().toString()); - inventoryItem.setTemplateId(templateId); - inventoryItem.setAmount(quantity); - inventoryItem.setExtraProperties(new HashMap<>()); - - Account account = WorldManager.getPlayerAccount(player); - if(checkWeight) { - if(!checkInventoryWeight(player, inventoryItem)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.inventory.no_space_left")); - return null; - } - } - inventoryItem = inventory.addItem(inventoryItem); - inventory.save(); - Onset.print("Inventory weight is now " + inventory.getCurrentWeight() + "/" + inventory.getMaxWeight()); - return inventoryItem; - } - - public static Inventory getMainInventory(Player player) { - return getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); - } - - /** - * Check if the item can fit in the inventory - * @param player The player - * @param inventoryItem The item to fit - * @return If the weight is ok - */ - public static boolean checkInventoryWeight(Player player, InventoryItem inventoryItem) { - Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); - if(inventory.getCurrentWeight() + (inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount()) > inventory.getMaxWeight()) { - return false; - } - return true; - } - - /** - * The client request the inventory content - * @param player The player - * @param payload The inventory type - */ - public static void handleRequestContent(Player player, RequestInventoryContentPayload payload) { - Onset.print("Request inventory type="+payload.getType()); - switch (payload.getType()) { - case "main": - getInventoriesForAccount(player.getPropertyInt("accountId")).get(0) - .sendInventoryContent(player); - break; - } - } - - public static void handleThrowItem(Player player, RequestThrowItemPayload payload) { - Onset.print("Player request to throw a item id=" + payload.getId() + " quantity=" + payload.getQuantity()); - if(payload.getQuantity() <= 0) return; - Inventory inventory = getMainInventory(player); - InventoryItem sourceItem = inventory.getItem(payload.getId()); - if(sourceItem == null) return; - if(payload.getQuantity() > sourceItem.getAmount()) return; - - InventoryItem inventoryItem = sourceItem; - if(payload.getQuantity() < sourceItem.getAmount()) { - inventoryItem = sourceItem.copy(); - inventoryItem.setAmount(payload.getQuantity()); - sourceItem.setAmount(sourceItem.getAmount() - payload.getQuantity()); - inventory.updateItemPlayerView(sourceItem); - } else { - inventory.getInventoryItems().remove(sourceItem); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(sourceItem.getId()))); - } - - GroundItem groundItem = new GroundItem(inventoryItem, payload.getQuantity(), - new Vector(player.getLocation().getX() + Basic.randomNumber(-150, 150), - player.getLocation().getY() + Basic.randomNumber(-150, 150), - player.getLocation().getZ())); - WorldManager.getGroundItems().add(groundItem); - InventoryManager.getMainInventory(player).save(); - inventory.updateWeightView(); - } - - public static HashMap getItemTemplates() { - return itemTemplates; - } - - public static HashMap getInventories() { - return inventories; - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.GroundItem; +import fr.yuki.yrpf.model.ItemTemplate; +import fr.yuki.yrpf.net.payload.RemoteItemInventoryPayload; +import fr.yuki.yrpf.net.payload.RequestInventoryContentPayload; +import fr.yuki.yrpf.net.payload.RequestThrowItemPayload; +import fr.yuki.yrpf.utils.Basic; +import lombok.Getter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; +import java.util.*; + +public class InventoryManager { + @Getter + private static Map itemTemplates; + @Getter + private static Map inventories; + + public static void init() throws SQLException { + itemTemplates = new HashMap<>(); + Repo.get(ItemTemplate.class).all().forEach(it -> itemTemplates.put(it.getId(), it)); + Onset.print("Loaded " + itemTemplates.size() + " item template(s) from the database"); + + inventories = new HashMap<>(); + Repo.get(Inventory.class).all().forEach(it -> inventories.put(it.getId(), it)); + Onset.print("Loaded " + inventories.size() + " inventorie(s) from the database"); + } + + /** + * Find a inventory by the id + * @param id The inventory id + * @return The inventory + */ + public static Inventory getInventoryById(int id) { + if(!inventories.containsKey(id)) return null; + return inventories.get(id); + } + + /** + * Get all inventories for the player + * @param accountId The account id + * @return All inventories of the player + */ + public static ArrayList getInventoriesForAccount(int accountId) { + ArrayList playerInventories = new ArrayList<>(); + for(Map.Entry inventoryEntry : inventories.entrySet()) { + try { + if(accountId == inventoryEntry.getValue().getCharacterId()) { + playerInventories.add(inventoryEntry.getValue()); + } + }catch (Exception ex) {} + } + return playerInventories; + } + + /** + * Try to add the item to the player inventory, this function check the weight + * @param player The player + * @param templateId The template id + * @param quantity The quantity + * @return The fresh or existing item + */ + public static InventoryItem addItemToPlayer(Player player, String templateId, int quantity, boolean checkWeight) { + Onset.print("Add item=" + templateId + " to size=" + getInventoriesForAccount(player.getPropertyInt("accountId")).size()); + Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); + InventoryItem inventoryItem = new InventoryItem(); + inventoryItem.setId(UUID.randomUUID().toString()); + inventoryItem.setTemplateId(templateId); + inventoryItem.setAmount(quantity); + inventoryItem.setExtraProperties(new HashMap<>()); + + Account account = WorldManager.getPlayerAccount(player); + if(checkWeight) { + if(!checkInventoryWeight(player, inventoryItem)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.inventory.no_space_left")); + return null; + } + } + inventoryItem = inventory.addItem(inventoryItem); + inventory.save(); + Onset.print("Inventory weight is now " + inventory.getCurrentWeight() + "/" + inventory.getMaxWeight()); + return inventoryItem; + } + + public static Inventory getMainInventory(Player player) { + return getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); + } + + /** + * Check if the item can fit in the inventory + * @param player The player + * @param inventoryItem The item to fit + * @return If the weight is ok + */ + public static boolean checkInventoryWeight(Player player, InventoryItem inventoryItem) { + Inventory inventory = getInventoriesForAccount(player.getPropertyInt("accountId")).get(0); + if(inventory.getCurrentWeight() + (inventoryItem.getTemplate().getWeight() * inventoryItem.getAmount()) > inventory.getMaxWeight()) { + return false; + } + return true; + } + + /** + * The client request the inventory content + * @param player The player + * @param payload The inventory type + */ + public static void handleRequestContent(Player player, RequestInventoryContentPayload payload) { + Onset.print("Request inventory type="+payload.getType()); + switch (payload.getType()) { + case "main": + getInventoriesForAccount(player.getPropertyInt("accountId")).get(0) + .sendInventoryContent(player); + break; + } + } + + public static void handleThrowItem(Player player, RequestThrowItemPayload payload) { + Onset.print("Player request to throw a item id=" + payload.getId() + " quantity=" + payload.getQuantity()); + if(payload.getQuantity() <= 0) return; + Inventory inventory = getMainInventory(player); + InventoryItem sourceItem = inventory.getItem(payload.getId()); + if(sourceItem == null) return; + if(payload.getQuantity() > sourceItem.getAmount()) return; + + InventoryItem inventoryItem = sourceItem; + if(payload.getQuantity() < sourceItem.getAmount()) { + inventoryItem = sourceItem.copy(); + inventoryItem.setAmount(payload.getQuantity()); + sourceItem.setAmount(sourceItem.getAmount() - payload.getQuantity()); + inventory.updateItemPlayerView(sourceItem); + } else { + inventory.getInventoryItems().remove(sourceItem); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new RemoteItemInventoryPayload(sourceItem.getId()))); + } + + GroundItem groundItem = new GroundItem(inventoryItem, payload.getQuantity(), + new Vector(player.getLocation().getX() + Basic.randomNumber(-150, 150), + player.getLocation().getY() + Basic.randomNumber(-150, 150), + player.getLocation().getZ())); + WorldManager.getGroundItems().add(groundItem); + InventoryManager.getMainInventory(player).save(); + inventory.updateWeightView(); + } + +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/ItemManager.java b/src/main/java/fr/yuki/yrpf/manager/ItemManager.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/manager/ItemManager.java rename to src/main/java/fr/yuki/yrpf/manager/ItemManager.java index c9fe09f..a78f833 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/ItemManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/ItemManager.java @@ -1,400 +1,397 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.placementObject.GeneratorPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GrowBoxPlacementInstance; -import fr.yuki.YukiRPFramework.job.tools.Generator; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.Bag; -import fr.yuki.YukiRPFramework.model.ItemShopObject; -import fr.yuki.YukiRPFramework.model.Mask; -import fr.yuki.YukiRPFramework.net.payload.RequestThrowItemPayload; -import fr.yuki.YukiRPFramework.net.payload.RequestUseItemPayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.io.File; -import java.io.FileReader; -import java.util.ArrayList; - -public class ItemManager { - public static ArrayList masks = new ArrayList<>(); - public static ArrayList bags = new ArrayList<>(); - - public static void init() { - loadMasks(); - loadBags(); - } - - private static void loadMasks() { - try { - new File("yrpf").mkdir(); - masks = new Gson().fromJson(new FileReader("yrpf/masks.json"), new TypeToken>(){}.getType()); - Onset.print("Loaded " + masks.size() + " mask(s) from the cache"); - } catch (Exception e) { - Onset.print("Can't load mask cache: " + e.toString()); - } - } - - private static void loadBags() { - try { - new File("yrpf").mkdir(); - bags = new Gson().fromJson(new FileReader("yrpf/bags.json"), new TypeToken>(){}.getType()); - Onset.print("Loaded " + bags.size() + " bag(s) from the cache"); - } catch (Exception e) { - Onset.print("Can't load bags cache: " + e.toString()); - } - } - - public static void handleItemUse(Player player, RequestUseItemPayload payload) { - Inventory inventory = InventoryManager.getMainInventory(player); - InventoryItem inventoryItem = inventory.getItem(payload.getId()); - if(inventoryItem == null) return; - if(inventoryItem.getAmount() <= 0) return; - Account account = WorldManager.getPlayerAccount(player); - - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.isCuffed()) return; - - // Check food item - if(inventoryItem.getTemplate().getFoodValue() != 0 || inventoryItem.getTemplate().getDrinkValue() != 0) { - useFood(player, inventoryItem); - return; - } - - // Check weapon items - if(inventoryItem.getTemplate().getWeaponId() != -1) { - if(WeaponManager.requestEquipWeapon(player, inventoryItem.getTemplate().getWeaponId())) { - inventory.removeItem(inventoryItem, 1); - } - else { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.weapon.no_slot_available")); - } - return; - } - - // Check mask item - if(inventoryItem.getTemplate().getMaskId() != -1) { - Mask mask = masks.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getMaskId()) - .findFirst().orElse(null); - if(mask == null) { - Onset.print("Can't find the mask in the masks.json id: " + mask.getModelId()); - return; - } - if(state.getCurrentMask() != null) { - state.unattachMask(); - return; - } - state.attachMask(mask, player); - return; - } - - // Check bag item - if(inventoryItem.getTemplate().getBagId() != -1) { - Bag bag = bags.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getBagId()) - .findFirst().orElse(null); - if(bag == null) { - Onset.print("Can't find the bag in the bags.json id: " + inventoryItem.getTemplate().getBagId()); - return; - } - if(state.getCurrentBag() != null) { - state.unattachBag(player); - return; - } - state.attachBag(bag, player); - inventory.removeItem(inventoryItem, 1); - - inventory.updateWeightView(); - return; - } - - // Check custom actions per item - switch (inventoryItem.getTemplateId()) { - case "11": // Temp need to use a enum - usePot(player, inventoryItem); - break; - - case "10": // Ticket livraison: growbox - useDeliveryTicketGrowbox(player, inventoryItem); - break; - - case "14": // Ticket livraison: generator - useDeliveryTicketGenerator(player, inventoryItem); - break; - - case "15": // Jerrican fuel - useJerricanFuel(player, inventoryItem); - break; - - case "16": // Cuff - useCuff(player, inventoryItem); - break; - - case "17": // Defibrilator - useDefibrilator(player, inventoryItem); - break; - - case "18": // Light saber - useLightSaber(player, inventoryItem); - break; - - case "20": // Ammo - useAmmo(player, inventoryItem); - break; - - case "28": // RepairKit - useRepairKit(player, inventoryItem); - break; - - case "33": // Bandage - useBandage(player, inventoryItem); - break; - - case "34": // Jack - useJack(player, inventoryItem); - break; - } - } - - private static void useJack(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return; - if(vehicle.getLocation().distance(player.getLocation()) > 500) return; - //Inventory inventory = InventoryManager.getMainInventory(player); - //inventory.removeItem(inventoryItem, 1); - - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, - 5000, 2, "sounds/car_repair_1.mp3"); - characterLoopAnimation.start(); - CharacterManager.setCharacterFreeze(player, true); - vehicle.setEngineOn(false); - Onset.delay(15000, () -> { - CharacterManager.setCharacterFreeze(player, false); - vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); - }); - } - - private static void useBandage(Player player, InventoryItem inventoryItem) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - Account account = WorldManager.getPlayerAccount(player); - if(!state.canInteract()) { - return; - } - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - if(player.isDead()) return; - if(player.getHealth() >= 100) return; - - player.setAnimation(Animation.COMBINE); - if(player.getHealth() + 25 > 100) { - player.setHealth(100); - } else { - player.setHealth(player.getHealth() + 25); - } - - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useFood(Player player, InventoryItem inventoryItem) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - Account account = WorldManager.getPlayerAccount(player); - if(!state.canInteract()) { - return; - } - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - CharacterManager.applyFoodChange(player, inventoryItem.getTemplate().getFoodValue()); - CharacterManager.applyDrinkChange(player, inventoryItem.getTemplate().getDrinkValue()); - player.setAnimation(Animation.DRINKING); - - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useCuff(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Player nearestPlayer = WorldManager.getNearestPlayer(player); - if(nearestPlayer == null) return; - if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; - WorldManager.cuffPlayer(nearestPlayer); - - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void usePot(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - // Put the object in the hand - CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(554, new Vector(0, 8, 0), - new Vector(90,0, 90), new Vector(1.50,1.50,2.40), "hand_r"); - WearableWorldObject wearableWorldObject = new WearableWorldObject(554, true, - Animation.CARRY_IDLE, characterToolAnimation, player.getLocation()); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - - // Delete the item from the inventory - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useDeliveryTicketGrowbox(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentObjectPlacementInstance() != null) { - return; - } - - UIStateManager.handleUIToogle(player, "inventory"); - ObjectPlacementInstance objectPlacementInstance = new GrowBoxPlacementInstance(50007, player.getLocation()); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - private static void useDeliveryTicketGenerator(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(characterState.getCurrentObjectPlacementInstance() != null) { - return; - } - - UIStateManager.handleUIToogle(player, "inventory"); - ObjectPlacementInstance objectPlacementInstance = new GeneratorPlacementInstance( player.getLocation()); - characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - private static void useJerricanFuel(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - Generator generator = GrowboxManager.getGeneratorNearby(player.getLocation(), 250); - if(generator != null) { - if(generator.getFuel() >= 100) return; - - // Delete the item from the inventory - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - - CharacterManager.setCharacterFreeze(player, true); - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, - "sounds/water_fill.mp3"); - characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), - new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); - characterLoopAnimation.start(); - - // Put the object in the hand - Onset.delay(10000, () -> { - generator.setFuel(100); - CharacterManager.setCharacterFreeze(player, false); - characterLoopAnimation.stop(); - }); - return; - } - - Vehicle vehicleNearby = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicleNearby != null) { - if(vehicleNearby.getLocation().distance(player.getLocation()) < 300) { - FuelManager.interactFuelPoint(player, true); - return; - } - } - } - - private static void useDefibrilator(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Player nearestPlayer = WorldManager.getNearestPlayer(player); - if(nearestPlayer == null) return; - if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; - WorldManager.revive(player, nearestPlayer); - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - - private static void useLightSaber(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - Account account = WorldManager.getPlayerAccount(player); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - // Put the object in the hand - CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(50009, new Vector(-7, 7, 0), - new Vector(90,90, 0), new Vector(0.05,0.05,0.05), "hand_r"); - WearableWorldObject wearableWorldObject = new WearableWorldObject(50009, true, - Animation.STOP, characterToolAnimation, player.getLocation()); - JobManager.getWearableWorldObjects().add(wearableWorldObject); - JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); - SoundManager.playSound3D("sounds/ls_sound.mp3", player.getLocation(), 700, 1); - } - - private static void useAmmo(Player player, InventoryItem inventoryItem) { - if(WeaponManager.fillWeaponWithAmmo(player)) { - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - } - } - - private static void useRepairKit(Player player, InventoryItem inventoryItem) { - if(player.getVehicle() != null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); - if(vehicle == null) return; - if(vehicle.getLocation().distance(player.getLocation()) > 500) return; - Inventory inventory = InventoryManager.getMainInventory(player); - inventory.removeItem(inventoryItem, 1); - - vehicle.setHood(80); - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, - 5000, 2, "sounds/car_repair_1.mp3"); - characterLoopAnimation.start(); - CharacterManager.setCharacterFreeze(player, true); - vehicle.setEngineOn(false); - Onset.delay(15000, () -> { - CharacterManager.setCharacterFreeze(player, false); - vehicle.setHealth(5000); - for(int i = 0; i < 8; i++) { - vehicle.setDamage(i + 1, 0); - } - vehicle.setHood(0); - }); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.placementObject.GeneratorPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GrowBoxPlacementInstance; +import fr.yuki.yrpf.job.tools.Generator; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.Bag; +import fr.yuki.yrpf.model.Mask; +import fr.yuki.yrpf.net.payload.RequestUseItemPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.io.File; +import java.io.FileReader; +import java.util.ArrayList; + +public class ItemManager { + public static ArrayList masks = new ArrayList<>(); + public static ArrayList bags = new ArrayList<>(); + + public static void init() { + loadMasks(); + loadBags(); + } + + private static void loadMasks() { + try { + new File("yrpf").mkdir(); + masks = new Gson().fromJson(new FileReader("yrpf/masks.json"), new TypeToken>(){}.getType()); + Onset.print("Loaded " + masks.size() + " mask(s) from the cache"); + } catch (Exception e) { + Onset.print("Can't load mask cache: " + e.toString()); + } + } + + private static void loadBags() { + try { + new File("yrpf").mkdir(); + bags = new Gson().fromJson(new FileReader("yrpf/bags.json"), new TypeToken>(){}.getType()); + Onset.print("Loaded " + bags.size() + " bag(s) from the cache"); + } catch (Exception e) { + Onset.print("Can't load bags cache: " + e.toString()); + } + } + + public static void handleItemUse(Player player, RequestUseItemPayload payload) { + Inventory inventory = InventoryManager.getMainInventory(player); + InventoryItem inventoryItem = inventory.getItem(payload.getId()); + if(inventoryItem == null) return; + if(inventoryItem.getAmount() <= 0) return; + Account account = WorldManager.getPlayerAccount(player); + + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.isCuffed()) return; + + // Check food item + if(inventoryItem.getTemplate().getFoodValue() != 0 || inventoryItem.getTemplate().getDrinkValue() != 0) { + useFood(player, inventoryItem); + return; + } + + // Check weapon items + if(inventoryItem.getTemplate().getWeaponId() != -1) { + if(WeaponManager.requestEquipWeapon(player, inventoryItem.getTemplate().getWeaponId())) { + inventory.removeItem(inventoryItem, 1); + } + else { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.weapon.no_slot_available")); + } + return; + } + + // Check mask item + if(inventoryItem.getTemplate().getMaskId() != -1) { + Mask mask = masks.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getMaskId()) + .findFirst().orElse(null); + if(mask == null) { + Onset.print("Can't find the mask in the masks.json id: " + mask.getModelId()); + return; + } + if(state.getCurrentMask() != null) { + state.unattachMask(); + return; + } + state.attachMask(mask, player); + return; + } + + // Check bag item + if(inventoryItem.getTemplate().getBagId() != -1) { + Bag bag = bags.stream().filter(x -> x.getModelId() == inventoryItem.getTemplate().getBagId()) + .findFirst().orElse(null); + if(bag == null) { + Onset.print("Can't find the bag in the bags.json id: " + inventoryItem.getTemplate().getBagId()); + return; + } + if(state.getCurrentBag() != null) { + state.unattachBag(player); + return; + } + state.attachBag(bag, player); + inventory.removeItem(inventoryItem, 1); + + inventory.updateWeightView(); + return; + } + + // Check custom actions per item + switch (inventoryItem.getTemplateId()) { + case "11": // Temp need to use a enum + usePot(player, inventoryItem); + break; + + case "10": // Ticket livraison: growbox + useDeliveryTicketGrowbox(player, inventoryItem); + break; + + case "14": // Ticket livraison: generator + useDeliveryTicketGenerator(player, inventoryItem); + break; + + case "15": // Jerrican fuel + useJerricanFuel(player, inventoryItem); + break; + + case "16": // Cuff + useCuff(player, inventoryItem); + break; + + case "17": // Defibrilator + useDefibrilator(player, inventoryItem); + break; + + case "18": // Light saber + useLightSaber(player, inventoryItem); + break; + + case "20": // Ammo + useAmmo(player, inventoryItem); + break; + + case "28": // RepairKit + useRepairKit(player, inventoryItem); + break; + + case "33": // Bandage + useBandage(player, inventoryItem); + break; + + case "34": // Jack + useJack(player, inventoryItem); + break; + } + } + + private static void useJack(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return; + if(vehicle.getLocation().distance(player.getLocation()) > 500) return; + //Inventory inventory = InventoryManager.getMainInventory(player); + //inventory.removeItem(inventoryItem, 1); + + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, + 5000, 2, "sounds/car_repair_1.mp3"); + characterLoopAnimation.start(); + CharacterManager.setCharacterFreeze(player, true); + vehicle.setEngineOn(false); + Onset.delay(15000, () -> { + CharacterManager.setCharacterFreeze(player, false); + vehicle.setRotation(new Vector(0 , vehicle.getRotation().getY(),0)); + }); + } + + private static void useBandage(Player player, InventoryItem inventoryItem) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + Account account = WorldManager.getPlayerAccount(player); + if(!state.canInteract()) { + return; + } + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + if(player.isDead()) return; + if(player.getHealth() >= 100) return; + + player.setAnimation(Animation.COMBINE); + if(player.getHealth() + 25 > 100) { + player.setHealth(100); + } else { + player.setHealth(player.getHealth() + 25); + } + + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useFood(Player player, InventoryItem inventoryItem) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + Account account = WorldManager.getPlayerAccount(player); + if(!state.canInteract()) { + return; + } + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + CharacterManager.applyFoodChange(player, inventoryItem.getTemplate().getFoodValue()); + CharacterManager.applyDrinkChange(player, inventoryItem.getTemplate().getDrinkValue()); + player.setAnimation(Animation.DRINKING); + + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useCuff(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Player nearestPlayer = WorldManager.getNearestPlayer(player); + if(nearestPlayer == null) return; + if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; + WorldManager.cuffPlayer(nearestPlayer); + + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void usePot(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + // Put the object in the hand + CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(554, new Vector(0, 8, 0), + new Vector(90,0, 90), new Vector(1.50,1.50,2.40), "hand_r"); + WearableWorldObject wearableWorldObject = new WearableWorldObject(554, true, + Animation.CARRY_IDLE, characterToolAnimation, player.getLocation()); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + + // Delete the item from the inventory + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useDeliveryTicketGrowbox(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentObjectPlacementInstance() != null) { + return; + } + + UIStateManager.handleUIToogle(player, "inventory"); + ObjectPlacementInstance objectPlacementInstance = new GrowBoxPlacementInstance(50007, player.getLocation()); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + private static void useDeliveryTicketGenerator(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(characterState.getCurrentObjectPlacementInstance() != null) { + return; + } + + UIStateManager.handleUIToogle(player, "inventory"); + ObjectPlacementInstance objectPlacementInstance = new GeneratorPlacementInstance( player.getLocation()); + characterState.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + private static void useJerricanFuel(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + Generator generator = GrowboxManager.getGeneratorNearby(player.getLocation(), 250); + if(generator != null) { + if(generator.getFuel() >= 100) return; + + // Delete the item from the inventory + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + + CharacterManager.setCharacterFreeze(player, true); + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.FISHING, 10000, 1, + "sounds/water_fill.mp3"); + characterLoopAnimation.setTool(new CharacterToolAnimation(507, new Vector(5,10,-15), + new Vector(0,90,0), new Vector(0.75, 0.75, 0.75), "hand_r")); + characterLoopAnimation.start(); + + // Put the object in the hand + Onset.delay(10000, () -> { + generator.setFuel(100); + CharacterManager.setCharacterFreeze(player, false); + characterLoopAnimation.stop(); + }); + return; + } + + Vehicle vehicleNearby = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicleNearby != null) { + if(vehicleNearby.getLocation().distance(player.getLocation()) < 300) { + FuelManager.interactFuelPoint(player, true); + return; + } + } + } + + private static void useDefibrilator(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Player nearestPlayer = WorldManager.getNearestPlayer(player); + if(nearestPlayer == null) return; + if(nearestPlayer.getLocation().distance(player.getLocation()) > 200) return; + WorldManager.revive(player, nearestPlayer); + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + + private static void useLightSaber(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + Account account = WorldManager.getPlayerAccount(player); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getWearableWorldObject() != null) { // Can't use the item because the player wear something already + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + // Put the object in the hand + CharacterToolAnimation characterToolAnimation = new CharacterToolAnimation(50009, new Vector(-7, 7, 0), + new Vector(90,90, 0), new Vector(0.05,0.05,0.05), "hand_r"); + WearableWorldObject wearableWorldObject = new WearableWorldObject(50009, true, + Animation.STOP, characterToolAnimation, player.getLocation()); + JobManager.getWearableWorldObjects().add(wearableWorldObject); + JobManager.handleWearObjectRequest(player, wearableWorldObject.getUuid()); + SoundManager.playSound3D("sounds/ls_sound.mp3", player.getLocation(), 700, 1); + } + + private static void useAmmo(Player player, InventoryItem inventoryItem) { + if(WeaponManager.fillWeaponWithAmmo(player)) { + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + } + } + + private static void useRepairKit(Player player, InventoryItem inventoryItem) { + if(player.getVehicle() != null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + Vehicle vehicle = VehicleManager.getNearestVehicle(player.getLocation()); + if(vehicle == null) return; + if(vehicle.getLocation().distance(player.getLocation()) > 500) return; + Inventory inventory = InventoryManager.getMainInventory(player); + inventory.removeItem(inventoryItem, 1); + + vehicle.setHood(80); + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.COMBINE, + 5000, 2, "sounds/car_repair_1.mp3"); + characterLoopAnimation.start(); + CharacterManager.setCharacterFreeze(player, true); + vehicle.setEngineOn(false); + Onset.delay(15000, () -> { + CharacterManager.setCharacterFreeze(player, false); + vehicle.setHealth(5000); + for(int i = 0; i < 8; i++) { + vehicle.setDamage(i + 1, 0); + } + vehicle.setHood(0); + }); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java b/src/main/java/fr/yuki/yrpf/manager/JobManager.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java rename to src/main/java/fr/yuki/yrpf/manager/JobManager.java index 4d401af..4e848d4 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/JobManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/JobManager.java @@ -1,535 +1,515 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterStyle; -import fr.yuki.YukiRPFramework.dao.*; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.*; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddCharacterJobPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.AddXpBarItemPayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Color; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.sql.SQLException; -import java.util.*; -import java.util.stream.Collectors; - -public class JobManager { - private static LinkedHashMap jobs; - private static ArrayList wearableWorldObjects; - private static ArrayList jobNPCS; - private static ArrayList jobTools; - private static ArrayList jobLevels; - private static ArrayList jobVehicleRentals; - private static DeliveryPointConfig deliveryPointConfig; - private static ArrayList jobOutfits; - - public static void init() throws SQLException, IOException { - jobNPCS = JobNPCDAO.loadJobNPCS(); - Onset.print("Loaded " + jobNPCS.size() + " job npc(s) from the database"); - - jobOutfits = JobOutfitDAO.loadJobOutfits(); - Onset.print("Loaded " + jobOutfits.size() + " job outfit(s) from the database"); - - jobTools = JobToolDAO.loadJobTools(); - Onset.print("Loaded " + jobTools.size() + " job tool(s) from the database"); - - jobLevels = JobLevelDAO.loadJobLevels(); - Onset.print("Loaded " + jobLevels.size() + " job level(s) from the database"); - - jobVehicleRentals = JobVehicleRentalDAO.loadJobVehicleRental(); - Onset.print("Loaded " + jobVehicleRentals.size() + " job vehicle(s) from the database"); - - loadDeliveryPoints(); - - wearableWorldObjects = new ArrayList<>(); - jobs = new LinkedHashMap<>(); - jobs.put(JobEnum.LUMBERJACK.type, new LumberjackJob()); - jobs.put(JobEnum.GARBAGE.type, new GarbageJob()); - jobs.put(JobEnum.DELIVERY.type, new DeliveryJob()); - jobs.put(JobEnum.MINER.type, new MinerJob()); - jobs.put(JobEnum.FISHER.type, new FisherJob()); - jobs.put(JobEnum.POLICE.type, new PoliceJob()); - jobs.put(JobEnum.WEED.type, new WeedJob()); - jobs.put(JobEnum.EMS.type, new EMSJob()); - - spawnJobOutfitsPoint(); - spawnVehicleRentalSpawns(); - initPaycheck(); - //initWorldWearableObjectExpiration(); - } - - public static void initWorldWearableObjectExpiration() { - Onset.timer(60000, () -> { - for(WearableWorldObject wearableWorldObject : wearableWorldObjects.stream().filter(x -> !x.isWeared() && x.getVehicleUUID().equals("")) - .collect(Collectors.toList())) { - try { - if(wearableWorldObject.isExpired()) wearableWorldObject.deleteObject(); - }catch (Exception ex) {} - } - }); - } - - public static void initPaycheck() { - int paycheckAmount = 1000; - Onset.timer(60000 * 30, () -> { - for(Player player : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(player); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId()) - .findFirst().orElse(null); - if(accountJobWhitelist != null){ - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Salaire +" + paycheckAmount + "$ !"); - account.setBankMoney(account.getBankMoney() + paycheckAmount); - } - } catch (Exception ex) {} - } - }); - } - - private static void loadDeliveryPoints() throws IOException { - new File("yrpf").mkdir(); - if(new File("yrpf/delivery_config.json").exists()) { - deliveryPointConfig = new Gson().fromJson(new FileReader("yrpf/delivery_config.json"), DeliveryPointConfig.class); - } else { - deliveryPointConfig = new DeliveryPointConfig(); - deliveryPointConfig.setPoints(new HashMap<>()); - deliveryPointConfig.getPoints().put("houses", new ArrayList<>()); - new File("yrpf/delivery_config.json").createNewFile(); - FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); - fileWriter.write(new Gson().toJson(deliveryPointConfig)); - fileWriter.close(); - } - } - - public static void saveDeliveryPoints() { - try { - FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); - fileWriter.write(new Gson().toJson(deliveryPointConfig)); - fileWriter.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Init job levels for the character - * @param player The player - */ - public static void initCharacterJobs(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - for(Map.Entry job : jobs.entrySet()) { - if(characterJobLevels.stream().filter(x -> x.getJobId().equals(job.getKey())).findFirst().orElse(null) == null) { - CharacterJobLevel characterJobLevel = new CharacterJobLevel(); - characterJobLevel.setJobId(job.getKey()); - characterJobLevel.setExp(0); - characterJobLevels.add(characterJobLevel); - } - } - account.setJobLevels(characterJobLevels); - } - - private static void spawnVehicleRentalSpawns() { - for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { - Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector - (jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ()-100), 336); - pickup.setScale(new Vector(4,4,0.3d)); - pickup.setProperty("color", "0096a3", true); - Onset.getServer().createText3D(jobVehicleRental.getName() + " [Utiliser]", 20, - jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ() + 150, 0 , 0 ,0); - } - } - - private static void spawnJobOutfitsPoint() { - for(JobOutfit jobOutfit : jobOutfits) { - Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector - (jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ()-100), 336); - pickup.setScale(new Vector(4,4,0.3d)); - pickup.setProperty("color", "0030a1", true); - Onset.getServer().createText3D(jobOutfit.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 17, - jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ() + 150, 0 , 0 ,0); - } - } - - private static JobOutfit getNearbyJobOutfit(Player player) { - for(JobOutfit jobOutfit : jobOutfits) { - if(jobOutfit.isNear(player)) return jobOutfit; - } - return null; - } - - public static boolean handleJobOutfitRequest(Player player) { - JobOutfit jobOutfit = getNearbyJobOutfit(player); - if(jobOutfit == null) return false; - Account account = WorldManager.getPlayerAccount(player); - Job job = jobs.values().stream().filter(x -> x.getJobType().equals(jobOutfit.getJobId())).findFirst().orElse(null); - if(job == null) return false; - - // Check level and whitelist level - if(job.isWhitelisted()) { - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) - .findFirst().orElse(null); - if(accountJobWhitelist == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); - return true; - } - if(accountJobWhitelist.getJobLevel() < jobOutfit.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); - return true; - } - } else { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(jobOutfit.getJobId())).findFirst().orElse(null); - if(characterJobLevel == null) return false; - if(characterJobLevel.getJobLevel().getLevel() < jobOutfit.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); - return true; - } - } - - if(account.getIsInService() == 1) { - CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - account.setIsInService(0); - } else { - // Apply the outfit - CharacterStyle characterStyle = account.decodeCharacterStyle(); - for(JobOutfitItem jobOutfitItem : jobOutfit.decodeOutfit()) { - switch (jobOutfitItem.getType().toLowerCase()) { - case "top": - characterStyle.setTop(jobOutfitItem.getValue()); - break; - - case "pant": - characterStyle.setPant(jobOutfitItem.getValue()); - break; - - case "shoes": - characterStyle.setShoes(jobOutfitItem.getValue()); - break; - } - } - account.setCharacterStyle(characterStyle); - characterStyle.attachStyleToPlayer(player); - account.setIsInService(1); - } - SoundManager.playSound3D("sounds/zip.mp3", player.getLocation(), 500, 0.2); - WorldManager.savePlayer(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.outfit.success_change")); - - return true; - } - - public static int getJobLevelForPlayer(Player player, String job) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); - return characterJobLevel.getJobLevel().getLevel(); - } - - /** - * Try to find a object to harvest for the player - * @param player The player - */ - public static boolean tryToHarvest(Player player) { - if(player.getVehicle() != null) return false; - - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return false; - - Account account = WorldManager.getPlayerAccount(player); - for(Map.Entry job : jobs.entrySet()) { - for(WorldHarvestObject worldHarvestObject : job.getValue().getWorldHarvestObjects()) { - try { - if(worldHarvestObject.isNear(player)) { - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return true; - } - - - worldHarvestObject.harvest(player); - return true; - } - } catch (Exception ex) {} - } - } - return false; - } - - public static void addExp(Player player, String job, int amount) { - if(amount <= 0) return; - amount = amount * WorldManager.getServerConfig().getXpRate(); - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); - if(characterJobLevel == null) return; - - JobLevel previousJobLevel = characterJobLevel.getJobLevel(); - characterJobLevel.setExp(characterJobLevel.getExp() + amount); - account.setJobLevels(characterJobLevels); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload("+" + amount + " XP " + - I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName())))); - JobLevel nextJobLevel = characterJobLevel.getJobLevel(); - if(previousJobLevel.getLevel() != nextJobLevel.getLevel()) { - SoundManager.playSound3D("sounds/success_1.mp3", player.getLocation(), 200, 1); - String translatedJobName = I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName()); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload( - I18n.t(account.getLang(), "toast.xp.level_up", translatedJobName)))); - } - - WorldManager.savePlayer(player); - } - - /** - * Request to wear a object in the world - * @param player The player - * @param uuid The object uuid - */ - public static void handleWearObjectRequest(Player player, String uuid) { - Account account = WorldManager.getPlayerAccount(player); - WearableWorldObject wearableWorldObject = wearableWorldObjects.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); - if(wearableWorldObject == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.wear.not_found")); - return; - } - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - wearableWorldObject.requestWear(player); - } - - public static boolean handleSellJobNpcInventoryItem(Player player) { - JobNPC jobNPCNearby = getNearbyJobNPC(player); - if(jobNPCNearby == null) return false; - Inventory inventory = InventoryManager.getMainInventory(player); - for (JobNPCListItem sellListItem : jobNPCNearby.getBuyList()) { - if(!sellListItem.getType().equals("item")) continue; - InventoryItem inventoryItem = inventory.getItemByType(String.valueOf(sellListItem.getItemId())); - if(inventoryItem == null) continue; - Onset.print("Selling item to the npc price=" + sellListItem.getPrice()); - inventory.removeItem(inventoryItem, 1); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 0.8); - //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre " + inventoryItem.getTemplate().getName() + - // " pour " + sellListItem.getPrice() + "$"); - jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, sellListItem.getPrice(), false); - } - return true; - } - - public static void handleUnwearObject(Player player) { - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return; - Account account = WorldManager.getPlayerAccount(player); - - // Try to sell it to the nearby npc - JobNPC jobNPCNearby = getNearbyJobNPC(player); - if(jobNPCNearby != null) { - JobNPCListItem jobNPCListItem = jobNPCNearby.getBuyItemByWearableItem(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject()); - if(jobNPCListItem != null) { - Onset.print("Selling item to the npc price=" + jobNPCListItem.getPrice()); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, jobNPCListItem.getPrice(), false); - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); - jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); - SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); - //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + jobNPCListItem.getPrice() + "$"); - } else { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.npc.no_buy_kind_item")); - } - return; - } - - // Try to use a job tool nearby - JobTool jobToolNearby = getNearbyJobTool(player); - if(jobToolNearby != null) { - if(!jobToolNearby.getJobToolHandler().hasLevelRequired(player)) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); - return; - } - - if(jobToolNearby.getJobToolHandler().canInteract(player)) { - Onset.print("Use job tool type="+jobToolNearby.getJobToolType()); - if(jobToolNearby.getJobToolHandler().onUnwear(player, CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject())) { - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); - } - } - else { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_kind_item")); - } - return; - } - - // Unwear the item - CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, false); - } - - public static boolean requestVehicleRental(Player player) { - JobVehicleRental nearbyJobVehicleRental = getNearbyVehicleRental(player); - if(nearbyJobVehicleRental == null) return false; - if(player.getVehicle() != null) return false; - - Account account = WorldManager.getPlayerAccount(player); - - // Check vehicle around - Vector spawnPoint = new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()); - if(VehicleManager.getNearestVehicle(spawnPoint) != null) { - if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 600) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); - return true; - } - } - - Job job = jobs.values().stream().filter(x -> x.getJobType().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); - if(job == null) return false; - - // Check level and whitelist level - if(job.isWhitelisted()) { - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) - .findFirst().orElse(null); - if(accountJobWhitelist == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return true; - } - if(accountJobWhitelist.getJobLevel() < nearbyJobVehicleRental.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return true; - } - } else { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); - if(characterJobLevel == null) return false; - if(characterJobLevel.getJobLevel().getLevel() < nearbyJobVehicleRental.getLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return true; - } - } - - destroyRentalVehiclesForPlayer(player); - - VehicleManager.CreateVehicleResult result = VehicleManager.createVehicle(nearbyJobVehicleRental.getVehicleModelId(), - new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()), - player.getLocationAndHeading().getHeading(), player, null, true); - - java.awt.Color color = java.awt.Color.decode(nearbyJobVehicleRental.getColor()); - result.getVehicle().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.job_vehicle.success_rental", - String.valueOf(nearbyJobVehicleRental.getCost()))); - return true; - } - - public static void destroyRentalVehiclesForPlayer(Player player) { - Account account = WorldManager.getPlayerAccount(player); - for(VehicleGarage vehicleGarage : GarageManager.getVehicleGarages().stream() - .filter(x -> x.isRental() && x.getOwner() == account.getId()).collect(Collectors.toList())) { - if(vehicleGarage.getVehicle() != null) { - VehicleManager.clearKeysForVehicle(vehicleGarage.getVehicle(), player); - } - vehicleGarage.destroy(); - GarageManager.getVehicleGarages().remove(vehicleGarage); - } - } - - public static void handleRequestCharacterJobs(Player player) { - if(!UIStateManager.handleUIToogle(player, "characterjob")) return; - Account account = WorldManager.getPlayerAccount(player); - ArrayList characterJobLevels = account.decodeCharacterJob(); - for(CharacterJobLevel characterJobLevel : characterJobLevels) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCharacterJobPayload(characterJobLevel))); - } - } - - public static void handleUseJobTool(Player player, String uuid) { - JobTool jobTool = jobTools.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); - if(jobTool == null) return; - jobTool.getJobToolHandler().onUse(player); - } - - public static ArrayList getWhitelistedPlayersForJob(JobEnum jobEnum) { - ArrayList players = new ArrayList<>(); - for(Player player : Onset.getPlayers()) { - try { - Account account = WorldManager.getPlayerAccount(player); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(jobEnum.type)) - .findFirst().orElse(null); - if(accountJobWhitelist != null) { - players.add(player); - } - }catch (Exception exception) {} - } - return players; - } - - public static JobVehicleRental getNearbyVehicleRental(Player player) { - for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { - if(jobVehicleRental.isNear(player)) return jobVehicleRental; - } - return null; - } - - public static JobNPC getNearbyJobNPC(Player player) { - for(JobNPC jobNPC : jobNPCS) { - if(jobNPC.isNear(player)) return jobNPC; - } - return null; - } - - public static JobTool getNearbyJobTool(Player player) { - for(JobTool jobTool : jobTools) { - if(jobTool.isNear(player)) return jobTool; - } - return null; - } - - public static LinkedHashMap getJobs() { - return jobs; - } - - public static ArrayList getWearableWorldObjects() { - return wearableWorldObjects; - } - - public static ArrayList getJobNPCS() { - return jobNPCS; - } - - public static ArrayList getJobTools() { - return jobTools; - } - - public static ArrayList getJobLevels() { - return jobLevels; - } - - public static ArrayList getJobVehicleRentals() { - return jobVehicleRentals; - } - - public static DeliveryPointConfig getDeliveryPointConfig() { - return deliveryPointConfig; - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.*; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.AddCharacterJobPayload; +import fr.yuki.yrpf.net.payload.AddXpBarItemPayload; +import lombok.Getter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Color; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.sql.SQLException; +import java.util.*; +import java.util.stream.Collectors; + +public class JobManager { + @Getter + private static Map jobs; + @Getter + private static List wearableWorldObjects; + @Getter + private static List jobNPCS; + @Getter + private static List jobTools; + @Getter + private static List jobLevels; + @Getter + private static List jobVehicleRentals; + @Getter + private static DeliveryPointConfig deliveryPointConfig; + @Getter + private static List jobOutfits; + + public static void init() throws SQLException, IOException { + jobNPCS = Repo.get(JobNPC.class).all(); + Onset.print("Loaded " + jobNPCS.size() + " job npc(s) from the database"); + + jobOutfits = Repo.get(JobOutfit.class).all(); + Onset.print("Loaded " + jobOutfits.size() + " job outfit(s) from the database"); + + jobTools = Repo.get(JobTool.class).all(); + Onset.print("Loaded " + jobTools.size() + " job tool(s) from the database"); + + jobLevels = Repo.get(JobLevel.class).all(); + Onset.print("Loaded " + jobLevels.size() + " job level(s) from the database"); + + jobVehicleRentals = Repo.get(JobVehicleRental.class).all(); + Onset.print("Loaded " + jobVehicleRentals.size() + " job vehicle(s) from the database"); + + loadDeliveryPoints(); + + wearableWorldObjects = new ArrayList<>(); + jobs = new LinkedHashMap<>(); + jobs.put(JobEnum.LUMBERJACK.name(), new LumberjackJob()); + jobs.put(JobEnum.GARBAGE.name(), new GarbageJob()); + jobs.put(JobEnum.DELIVERY.name(), new DeliveryJob()); + jobs.put(JobEnum.MINER.name(), new MinerJob()); + jobs.put(JobEnum.FISHER.name(), new FisherJob()); + jobs.put(JobEnum.POLICE.name(), new PoliceJob()); + jobs.put(JobEnum.WEED.name(), new WeedJob()); + jobs.put(JobEnum.EMS.name(), new EMSJob()); + + spawnJobOutfitsPoint(); + spawnVehicleRentalSpawns(); + initPaycheck(); + //initWorldWearableObjectExpiration(); + } + + public static void initWorldWearableObjectExpiration() { + Onset.timer(60000, () -> { + for(WearableWorldObject wearableWorldObject : wearableWorldObjects.stream().filter(x -> !x.isWeared() && x.getVehicleUUID().equals("")) + .collect(Collectors.toList())) { + try { + if(wearableWorldObject.isExpired()) wearableWorldObject.deleteObject(); + }catch (Exception ex) {} + } + }); + } + + public static void initPaycheck() { + int paycheckAmount = 1000; + Onset.timer(60000 * 30, () -> { + for(Player player : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(player); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId()) + .findFirst().orElse(null); + if(accountJobWhitelist != null){ + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Salaire +" + paycheckAmount + "$ !"); + account.setBankMoney(account.getBankMoney() + paycheckAmount); + } + } catch (Exception ex) {} + } + }); + } + + private static void loadDeliveryPoints() throws IOException { + new File("yrpf").mkdir(); + if(new File("yrpf/delivery_config.json").exists()) { + deliveryPointConfig = new Gson().fromJson(new FileReader("yrpf/delivery_config.json"), DeliveryPointConfig.class); + } else { + deliveryPointConfig = new DeliveryPointConfig(); + deliveryPointConfig.setPoints(new HashMap<>()); + deliveryPointConfig.getPoints().put("houses", new ArrayList<>()); + new File("yrpf/delivery_config.json").createNewFile(); + FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); + fileWriter.write(new Gson().toJson(deliveryPointConfig)); + fileWriter.close(); + } + } + + public static void saveDeliveryPoints() { + try { + FileWriter fileWriter = new FileWriter("yrpf/delivery_config.json"); + fileWriter.write(new Gson().toJson(deliveryPointConfig)); + fileWriter.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Init job levels for the character + * @param player The player + */ + public static void initCharacterJobs(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + for(Map.Entry job : jobs.entrySet()) { + if(characterJobLevels.stream().filter(x -> x.getJobId().equals(job.getKey())).findFirst().orElse(null) == null) { + CharacterJobLevel characterJobLevel = new CharacterJobLevel(); + characterJobLevel.setJobId(job.getKey()); + characterJobLevel.setExp(0); + characterJobLevels.add(characterJobLevel); + } + } + account.setJobLevels(characterJobLevels); + } + + private static void spawnVehicleRentalSpawns() { + for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { + Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector + (jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ()-100), 336); + pickup.setScale(new Vector(4,4,0.3d)); + pickup.setProperty("color", "0096a3", true); + Onset.getServer().createText3D(jobVehicleRental.getName() + " [Utiliser]", 20, + jobVehicleRental.getX(), jobVehicleRental.getY(), jobVehicleRental.getZ() + 150, 0 , 0 ,0); + } + } + + private static void spawnJobOutfitsPoint() { + for(JobOutfit jobOutfit : jobOutfits) { + Pickup pickup = Onset.getServer().createPickup(new net.onfirenetwork.onsetjava.data.Vector + (jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ()-100), 336); + pickup.setScale(new Vector(4,4,0.3d)); + pickup.setProperty("color", "0030a1", true); + Onset.getServer().createText3D(jobOutfit.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 17, + jobOutfit.getX(), jobOutfit.getY(), jobOutfit.getZ() + 150, 0 , 0 ,0); + } + } + + private static JobOutfit getNearbyJobOutfit(Player player) { + for(JobOutfit jobOutfit : jobOutfits) { + if(jobOutfit.isNear(player)) return jobOutfit; + } + return null; + } + + public static boolean handleJobOutfitRequest(Player player) { + JobOutfit jobOutfit = getNearbyJobOutfit(player); + if(jobOutfit == null) return false; + Account account = WorldManager.getPlayerAccount(player); + Job job = jobs.values().stream().filter(x -> x.getJobType().equals(jobOutfit.getJobId())).findFirst().orElse(null); + if(job == null) return false; + + // Check level and whitelist level + if(job.isWhitelisted()) { + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) + .findFirst().orElse(null); + if(accountJobWhitelist == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); + return true; + } + if(accountJobWhitelist.getJobLevel() < jobOutfit.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); + return true; + } + } else { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(jobOutfit.getJobId())).findFirst().orElse(null); + if(characterJobLevel == null) return false; + if(characterJobLevel.getJobLevel().getLevel() < jobOutfit.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.outfit.level_required")); + return true; + } + } + + if(account.isInService()) { + CharacterStyle characterStyle = account.decodeOriginalCharacterStyle(); + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + account.setInService(false); + } else { + // Apply the outfit + CharacterStyle characterStyle = account.decodeCharacterStyle(); + for(JobOutfitItem jobOutfitItem : jobOutfit.decodeOutfit()) { + switch (jobOutfitItem.getType().toLowerCase()) { + case "top": + characterStyle.setTop(jobOutfitItem.getValue()); + break; + + case "pant": + characterStyle.setPant(jobOutfitItem.getValue()); + break; + + case "shoes": + characterStyle.setShoes(jobOutfitItem.getValue()); + break; + } + } + account.setCharacterStyle(characterStyle); + characterStyle.attachStyleToPlayer(player); + account.setInService(true); + } + SoundManager.playSound3D("sounds/zip.mp3", player.getLocation(), 500, 0.2); + WorldManager.savePlayer(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.outfit.success_change")); + + return true; + } + + public static int getJobLevelForPlayer(Player player, String job) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); + return characterJobLevel.getJobLevel().getLevel(); + } + + /** + * Try to find a object to harvest for the player + * @param player The player + */ + public static boolean tryToHarvest(Player player) { + if(player.getVehicle() != null) return false; + + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return false; + + Account account = WorldManager.getPlayerAccount(player); + for(Map.Entry job : jobs.entrySet()) { + for(WorldHarvestObject worldHarvestObject : job.getValue().getWorldHarvestObjects()) { + try { + if(worldHarvestObject.isNear(player)) { + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return true; + } + + + worldHarvestObject.harvest(player); + return true; + } + } catch (Exception ex) {} + } + } + return false; + } + + public static void addExp(Player player, String job, int amount) { + if(amount <= 0) return; + amount = amount * WorldManager.getServerConfig().getXpRate(); + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(job)).findFirst().orElse(null); + if(characterJobLevel == null) return; + + JobLevel previousJobLevel = characterJobLevel.getJobLevel(); + characterJobLevel.setExp(characterJobLevel.getExp() + amount); + account.setJobLevels(characterJobLevels); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload("+" + amount + " XP " + + I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName())))); + JobLevel nextJobLevel = characterJobLevel.getJobLevel(); + if(previousJobLevel.getLevel() != nextJobLevel.getLevel()) { + SoundManager.playSound3D("sounds/success_1.mp3", player.getLocation(), 200, 1); + String translatedJobName = I18n.t(account.getLang(), "ui.characterJob.jobLevel_" + characterJobLevel.getJobLevel().getTranslateName()); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddXpBarItemPayload( + I18n.t(account.getLang(), "toast.xp.level_up", translatedJobName)))); + } + + WorldManager.savePlayer(player); + } + + /** + * Request to wear a object in the world + * @param player The player + * @param uuid The object uuid + */ + public static void handleWearObjectRequest(Player player, String uuid) { + Account account = WorldManager.getPlayerAccount(player); + WearableWorldObject wearableWorldObject = wearableWorldObjects.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); + if(wearableWorldObject == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.wear.not_found")); + return; + } + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + wearableWorldObject.requestWear(player); + } + + public static boolean handleSellJobNpcInventoryItem(Player player) { + JobNPC jobNPCNearby = getNearbyJobNPC(player); + if(jobNPCNearby == null) return false; + Inventory inventory = InventoryManager.getMainInventory(player); + for (JobNPCListItem sellListItem : jobNPCNearby.getBuyList()) { + if(!sellListItem.getType().equals("item")) continue; + InventoryItem inventoryItem = inventory.getItemByType(String.valueOf(sellListItem.getItemId())); + if(inventoryItem == null) continue; + Onset.print("Selling item to the npc price=" + sellListItem.getPrice()); + inventory.removeItem(inventoryItem, 1); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 0.8); + //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre " + inventoryItem.getTemplate().getName() + + // " pour " + sellListItem.getPrice() + "$"); + jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, sellListItem.getPrice(), false); + } + return true; + } + + public static void handleUnwearObject(Player player) { + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() == null) return; + Account account = WorldManager.getPlayerAccount(player); + + // Try to sell it to the nearby npc + JobNPC jobNPCNearby = getNearbyJobNPC(player); + if(jobNPCNearby != null) { + JobNPCListItem jobNPCListItem = jobNPCNearby.getBuyItemByWearableItem(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject()); + if(jobNPCListItem != null) { + Onset.print("Selling item to the npc price=" + jobNPCListItem.getPrice()); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, jobNPCListItem.getPrice(), false); + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); + jobNPCNearby.getNpc().setAnimation(Animation.THUMBSUP); + SoundManager.playSound3D("sounds/cash_register.mp3", player.getLocation(), 200, 1); + //UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Vous avez vendu votre ressource pour " + jobNPCListItem.getPrice() + "$"); + } else { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.npc.no_buy_kind_item")); + } + return; + } + + // Try to use a job tool nearby + JobTool jobToolNearby = getNearbyJobTool(player); + if(jobToolNearby != null) { + if(!jobToolNearby.getJobToolHandler().hasLevelRequired(player)) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_level_required")); + return; + } + + if(jobToolNearby.getJobToolHandler().canInteract(player)) { + Onset.print("Use job tool type="+jobToolNearby.getJobToolType()); + if(jobToolNearby.getJobToolHandler().onUnwear(player, CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject())) { + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, true); + } + } + else { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.tool.no_kind_item")); + } + return; + } + + // Unwear the item + CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject().requestUnwear(player, false); + } + + public static boolean requestVehicleRental(Player player) { + JobVehicleRental nearbyJobVehicleRental = getNearbyVehicleRental(player); + if(nearbyJobVehicleRental == null) return false; + if(player.getVehicle() != null) return false; + + Account account = WorldManager.getPlayerAccount(player); + + // Check vehicle around + Vector spawnPoint = new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()); + if(VehicleManager.getNearestVehicle(spawnPoint) != null) { + if(VehicleManager.getNearestVehicle(spawnPoint).getLocation().distance(spawnPoint) < 600) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.garage.vehicle_block_spawn")); + return true; + } + } + + Job job = jobs.values().stream().filter(x -> x.getJobType().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); + if(job == null) return false; + + // Check level and whitelist level + if(job.isWhitelisted()) { + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) + .findFirst().orElse(null); + if(accountJobWhitelist == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return true; + } + if(accountJobWhitelist.getJobLevel() < nearbyJobVehicleRental.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return true; + } + } else { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(nearbyJobVehicleRental.getJobId())).findFirst().orElse(null); + if(characterJobLevel == null) return false; + if(characterJobLevel.getJobLevel().getLevel() < nearbyJobVehicleRental.getLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return true; + } + } + + destroyRentalVehiclesForPlayer(player); + + VehicleManager.CreateVehicleResult result = VehicleManager.createVehicle(nearbyJobVehicleRental.getVehicleModelId(), + new Vector(nearbyJobVehicleRental.getSpawnX(), nearbyJobVehicleRental.getSpawnY(), nearbyJobVehicleRental.getSpawnZ()), + player.getLocationAndHeading().getHeading(), player, null, true); + + java.awt.Color color = java.awt.Color.decode(nearbyJobVehicleRental.getColor()); + result.getVehicle().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.job_vehicle.success_rental", + String.valueOf(nearbyJobVehicleRental.getCost()))); + return true; + } + + public static void destroyRentalVehiclesForPlayer(Player player) { + Account account = WorldManager.getPlayerAccount(player); + for(VehicleGarage vehicleGarage : GarageManager.getVehicleGarages().stream() + .filter(x -> x.isRental() && x.getOwner() == account.getId()).collect(Collectors.toList())) { + if(vehicleGarage.getVehicle() != null) { + VehicleManager.clearKeysForVehicle(vehicleGarage.getVehicle(), player); + } + vehicleGarage.destroy(); + GarageManager.getVehicleGarages().remove(vehicleGarage); + } + } + + public static void handleRequestCharacterJobs(Player player) { + if(!UIStateManager.handleUIToogle(player, "characterjob")) return; + Account account = WorldManager.getPlayerAccount(player); + ArrayList characterJobLevels = account.decodeCharacterJob(); + for(CharacterJobLevel characterJobLevel : characterJobLevels) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddCharacterJobPayload(characterJobLevel))); + } + } + + public static void handleUseJobTool(Player player, String uuid) { + JobTool jobTool = jobTools.stream().filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); + if(jobTool == null) return; + jobTool.getJobToolHandler().onUse(player); + } + + public static ArrayList getWhitelistedPlayersForJob(JobEnum jobEnum) { + ArrayList players = new ArrayList<>(); + for(Player player : Onset.getPlayers()) { + try { + Account account = WorldManager.getPlayerAccount(player); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(jobEnum.name())) + .findFirst().orElse(null); + if(accountJobWhitelist != null) { + players.add(player); + } + }catch (Exception exception) {} + } + return players; + } + + public static JobVehicleRental getNearbyVehicleRental(Player player) { + for(JobVehicleRental jobVehicleRental : jobVehicleRentals) { + if(jobVehicleRental.isNear(player)) return jobVehicleRental; + } + return null; + } + + public static JobNPC getNearbyJobNPC(Player player) { + for(JobNPC jobNPC : jobNPCS) { + if(jobNPC.isNear(player)) return jobNPC; + } + return null; + } + + public static JobTool getNearbyJobTool(Player player) { + for(JobTool jobTool : jobTools) { + if(jobTool.isNear(player)) return jobTool; + } + return null; + } + +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/MapManager.java b/src/main/java/fr/yuki/yrpf/manager/MapManager.java similarity index 70% rename from src/main/java/fr/yuki/YukiRPFramework/manager/MapManager.java rename to src/main/java/fr/yuki/yrpf/manager/MapManager.java index 262d9ce..736ae9b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/MapManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/MapManager.java @@ -1,42 +1,40 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.model.GameMapConfig; -import fr.yuki.YukiRPFramework.model.GameMapMarker; -import fr.yuki.YukiRPFramework.model.GameMapZone; -import fr.yuki.YukiRPFramework.net.payload.AddGameMapMarkerPayload; -import fr.yuki.YukiRPFramework.net.payload.AddGameMapZonePayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; - -public class MapManager { - private static GameMapConfig mapConfig; - - public static void init() throws FileNotFoundException { - new File("yrpf").mkdir(); - mapConfig = new Gson().fromJson(new FileReader("yrpf/gamemap.json"), GameMapConfig.class); - Onset.print("Loaded the gamemap from the JSON config file"); - } - - public static void setupGameMap(Player player) { - // Send markers - for(GameMapMarker gameMapMarker : mapConfig.getMarkers()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapMarkerPayload(gameMapMarker))); - } - - // Send zones - for(GameMapZone gameMapZone : mapConfig.getZones()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapZonePayload(gameMapZone))); - } - } - - public static GameMapConfig getMapConfig() { - return mapConfig; - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.model.GameMapConfig; +import fr.yuki.yrpf.model.GameMapMarker; +import fr.yuki.yrpf.model.GameMapZone; +import fr.yuki.yrpf.net.payload.AddGameMapMarkerPayload; +import fr.yuki.yrpf.net.payload.AddGameMapZonePayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; + +public class MapManager { + private static GameMapConfig mapConfig; + + public static void init() throws FileNotFoundException { + new File("yrpf").mkdir(); + mapConfig = new Gson().fromJson(new FileReader("yrpf/gamemap.json"), GameMapConfig.class); + Onset.print("Loaded the gamemap from the JSON config file"); + } + + public static void setupGameMap(Player player) { + // Send markers + for(GameMapMarker gameMapMarker : mapConfig.getMarkers()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapMarkerPayload(gameMapMarker))); + } + + // Send zones + for(GameMapZone gameMapZone : mapConfig.getZones()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddGameMapZonePayload(gameMapZone))); + } + } + + public static GameMapConfig getMapConfig() { + return mapConfig; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/ModdingManager.java b/src/main/java/fr/yuki/yrpf/manager/ModdingManager.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/manager/ModdingManager.java rename to src/main/java/fr/yuki/yrpf/manager/ModdingManager.java index 5082979..7eb8896 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/ModdingManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/ModdingManager.java @@ -1,55 +1,54 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.job.JobConfig; -import fr.yuki.YukiRPFramework.modding.ModdingCustomModel; -import fr.yuki.YukiRPFramework.modding.ModdingFile; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.io.FileNotFoundException; -import java.io.FileReader; - -public class ModdingManager { - private static ModdingFile moddingFile; - - public static void init() throws FileNotFoundException { - moddingFile = new Gson().fromJson(new FileReader("yrpf/modding.json"), ModdingFile.class); - Onset.print("Modding file loaded with " + moddingFile.getCustomModels().size() + " custom model(s)"); - } - - public static ModdingFile getModdingFile() { - return moddingFile; - } - - public static boolean isCustomModelId(int modelId) { - return moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null) != null; - } - - public static void assignCustomModel(WorldObject worldObject, int modelId) { - ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); - if(moddingCustomModel == null) { - Onset.print("Can't assign custom model, can't find the model: " + modelId); - return; - } - worldObject.setProperty("customModelPath", moddingCustomModel.getPath(), true); - } - - public static void assignCustomModel(Pickup pickup, int modelId) { - ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); - if(moddingCustomModel == null) { - Onset.print("Can't assign custom model, can't find the model: " + modelId); - return; - } - pickup.setProperty("customModelPath", moddingCustomModel.getPath(), true); - } - - public static void onEditorOpen(Player player) { - Onset.print("Editor opened"); - for(ModdingCustomModel customModel : moddingFile.getCustomModels()) { - player.callRemoteEvent("Editor:AddCustomObject", customModel.getId(), customModel.getPath()); - } - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.modding.ModdingCustomModel; +import fr.yuki.yrpf.modding.ModdingFile; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.io.FileNotFoundException; +import java.io.FileReader; + +public class ModdingManager { + private static ModdingFile moddingFile; + + public static void init() throws FileNotFoundException { + moddingFile = new Gson().fromJson(new FileReader("yrpf/modding.json"), ModdingFile.class); + Onset.print("Modding file loaded with " + moddingFile.getCustomModels().size() + " custom model(s)"); + } + + public static ModdingFile getModdingFile() { + return moddingFile; + } + + public static boolean isCustomModelId(int modelId) { + return moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null) != null; + } + + public static void assignCustomModel(WorldObject worldObject, int modelId) { + ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); + if(moddingCustomModel == null) { + Onset.print("Can't assign custom model, can't find the model: " + modelId); + return; + } + worldObject.setProperty("customModelPath", moddingCustomModel.getPath(), true); + } + + public static void assignCustomModel(Pickup pickup, int modelId) { + ModdingCustomModel moddingCustomModel = moddingFile.getCustomModels().stream().filter(x -> x.getId() == modelId).findFirst().orElse(null); + if(moddingCustomModel == null) { + Onset.print("Can't assign custom model, can't find the model: " + modelId); + return; + } + pickup.setProperty("customModelPath", moddingCustomModel.getPath(), true); + } + + public static void onEditorOpen(Player player) { + Onset.print("Editor opened"); + for(ModdingCustomModel customModel : moddingFile.getCustomModels()) { + player.callRemoteEvent("Editor:AddCustomObject", customModel.getId(), customModel.getPath()); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/PhoneManager.java b/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/manager/PhoneManager.java rename to src/main/java/fr/yuki/yrpf/manager/PhoneManager.java index 811577d..7a56510 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/PhoneManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/PhoneManager.java @@ -1,331 +1,328 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.character.CharacterToolAnimation; -import fr.yuki.YukiRPFramework.dao.PhoneContactDAO; -import fr.yuki.YukiRPFramework.enums.JobEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import fr.yuki.YukiRPFramework.model.PhoneContact; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.phone.PhoneCall; -import fr.yuki.YukiRPFramework.phone.PhoneMessage; -import fr.yuki.YukiRPFramework.phone.UrgencyPhoneMessage; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.sql.SQLException; -import java.util.*; -import java.util.stream.Collectors; - -public class PhoneManager { - private static ArrayList phoneContacts; - private static ArrayList phoneMessages; - private static HashMap> urgencyMessages; - - private static int urgencyPhoneMessageCurrentId = 1; - - public static void init() throws SQLException { - phoneContacts = PhoneContactDAO.loadPhoneContacts(); - Onset.print("Loaded " + phoneContacts.size() + " phone contact(s) from the database"); - - phoneMessages = new ArrayList<>(); - - // init urgency - urgencyMessages = new HashMap<>(); - urgencyMessages.put("police", new ArrayList<>()); - urgencyMessages.put("hospital", new ArrayList<>()); - } - - public static String generateRandomPhoneNumber() { - String phoneNumber = "07"; - for(int i = 0; i < 8; i++) { - phoneNumber += String.valueOf(Basic.randomNumber(1, 9)); - } - return phoneNumber; - } - - public static void handleRequestPhoneContacts(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); - for(PhoneContact contact : contacts) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddClientContactPayload(contact.getId(), contact.getName(), contact.getNumber()))); - } - } - - public static void handleAddPhoneContact(Player player, PhoneAddContactPayload payload) throws SQLException { - if(payload.getName().trim().equals("")|| payload.getNumber().trim() == "") return; - Account account = WorldManager.getPlayerAccount(player); - ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); - if(contacts.size() >= 30) return; // Too much contact - PhoneContact phoneContact = new PhoneContact(); - phoneContact.setName(payload.getName()); - phoneContact.setNumber(payload.getNumber()); - phoneContact.setAccountId(account.getId()); - PhoneContactDAO.insertPhoneContact(phoneContact); - phoneContacts.add(phoneContact); - Onset.print("Phone contact created"); - } - - public static void handleRequestSendMessage(Player player, RequestPhoneSendMessagePayload payload) { - if(payload.getMessage().trim().equals("") || payload.getNumber().trim().equals("")) return; - Account account = WorldManager.getPlayerAccount(player); - PhoneMessage phoneMessage = new PhoneMessage(); - phoneMessage.setFromNumber(account.getPhoneNumber()); - phoneMessage.setToNumber(payload.getNumber()); - phoneMessage.setMessage(payload.getMessage()); - phoneMessage.setMessageType(1); // Text message - phoneMessages.add(phoneMessage); - - // Send message to players - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload - (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); - Player otherPlayer = WorldManager.getPlayerByPhoneNumber(phoneMessage.getToNumber()); - if(otherPlayer != null) { - Account otherAccount = WorldManager.getPlayerAccount(otherPlayer); - otherPlayer.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload - (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); - SoundManager.playSound3D("sounds/notif_1.mp3", otherPlayer.getLocation(), 350, 2); - UIStateManager.sendNotification(otherPlayer, ToastTypeEnum.SUCCESS, I18n.t(otherAccount.getLang(), - "toast.phone.you_have_received_message", account.getPhoneNumber())); - } - } - - public static ArrayList getConversation(String number1, String number2) { - ArrayList messages = new ArrayList<>(); - for(PhoneMessage phoneMessage : phoneMessages) { - if(phoneMessage.getFromNumber().equals(number1)) { - if(phoneMessage.getToNumber().equals(number2)) { - messages.add(phoneMessage); - continue; - } - } - - if(phoneMessage.getFromNumber().equals(number2)) { - if(phoneMessage.getToNumber().equals(number1)) { - messages.add(phoneMessage); - continue; - } - } - } - return messages; - } - - public static void handleRequestConversation(Player player, String number) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList messages = getConversation(account.getPhoneNumber(), number); - - for(PhoneMessage phoneMessage : messages) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload - (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); - } - } - - public static void handleRequestConversationsList(Player player) { - Account account = WorldManager.getPlayerAccount(player); - ArrayList phoneMessages = getConversationsWithNumber(account.getPhoneNumber()); - HashMap> uniqueConversation = new HashMap<>(); - - // Make unique conversation - for(PhoneMessage phoneMessage : phoneMessages) { - if(phoneMessage.getFromNumber().equals(account.getPhoneNumber())) { - if(!uniqueConversation.containsKey(phoneMessage.getToNumber())) { - uniqueConversation.put(phoneMessage.getToNumber(), new ArrayList<>()); - uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); - } - else { - uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); - } - } - - if(phoneMessage.getToNumber().equals(account.getPhoneNumber())) { - if(!uniqueConversation.containsKey(phoneMessage.getFromNumber())) { - uniqueConversation.put(phoneMessage.getFromNumber(), new ArrayList<>()); - uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); - } - else { - uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); - } - } - } - - for(Map.Entry> conversations : uniqueConversation.entrySet()) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneConversationPayload( - conversations.getKey(), conversations.getValue().get(conversations.getValue().size() - 1).getMessage() - ))); - } - } - - public static void handleRequestCall(Player player, String phoneNumber) { - Onset.print("Request call to " + phoneNumber); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneCall() != null){ - Onset.print("Caller already in call"); - return; - } - Player receiver = WorldManager.getPlayerByPhoneNumber(phoneNumber); - if(receiver == null) { - Onset.print("Can't find the receiver"); - return; - } - CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(receiver); - if(receiverState.getCurrentPhoneCall() != null) { - Onset.print("Receiver already in call"); - return; - } - - PhoneCall phoneCall = new PhoneCall(player, receiver); - state.setCurrentPhoneCall(phoneCall); - receiverState.setCurrentPhoneCall(phoneCall); - phoneCall.displayCall(); - Onset.print("Call begin"); - } - - public static void handleCallAnswer(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneCall() == null){ - Onset.print("Can't answer because there is no call"); - return; - } - state.getCurrentPhoneCall().begin(); - attachPhone(state.getCurrentPhoneCall().getCaller()); - attachPhone(state.getCurrentPhoneCall().getReceiver()); - } - - public static void handleCallEnd(Player player) { - Onset.print("Request end call"); - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneCall() == null){ - Onset.print("Can't answer because there is no call"); - return; - } - state.getCurrentPhoneCall().end(); - } - - public static void handleAttachPhone(Player player, String phoneState) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - if(phoneState.equals("true")) { - attachPhone(player); - } else { - if(state.getCurrentPhoneCall() == null) { - player.setAnimation(Animation.PHONE_PUTAWAY); - state.getCurrentPhoneAttached().unAttach(); - state.setCurrentPhoneAttached(null); - } - } - } - - public static void handleUrgencyRequest(Player player, UrgencyRequestPayload payload) { - Account account = WorldManager.getPlayerAccount(player); - UrgencyPhoneMessage urgencyPhoneMessage = new UrgencyPhoneMessage(); - urgencyPhoneMessage.setId(urgencyPhoneMessageCurrentId++); - urgencyPhoneMessage.setFromNumber(account.getPhoneNumber()); - urgencyPhoneMessage.setToNumber(payload.getService()); - urgencyPhoneMessage.setMessage(payload.getText()); - urgencyPhoneMessage.setMessageType(1); - urgencyPhoneMessage.setService(payload.getService().toLowerCase()); - urgencyPhoneMessage.setPosition(player.getLocation()); - urgencyMessages.get(payload.getService()).add(urgencyPhoneMessage); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Votre demande est désormais en attente"); - - // Display messages - JobEnum jobEnum = JobEnum.POLICE; - Onset.print("Add urgency for service: " + payload.getService().toLowerCase()); - switch (payload.getService().toLowerCase()) { - case "police": - jobEnum = JobEnum.POLICE; - break; - - case "hospital": - jobEnum = JobEnum.EMS; - break; - } - ArrayList whitelistedPlayers = JobManager.getWhitelistedPlayersForJob(jobEnum); - for(Player wPlayer : whitelistedPlayers) { - try { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( - urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), - urgencyPhoneMessage.getService(), - urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() - ))); - UIStateManager.sendNotification(wPlayer, ToastTypeEnum.SUCCESS, "Vous avez reçu une nouvelle urgence"); - SoundManager.playSound3D("sounds/notif_1.mp3", wPlayer.getLocation(), 350, 2); - } catch (Exception ex) { - Onset.print("Can't send urgency: " + ex.toString()); - } - } - } - - public static void attachPhone(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state.getCurrentPhoneAttached() != null) return; - CharacterToolAnimation toolAnimation = new CharacterToolAnimation(50011, new Vector(-10,4,5), - new Vector(180,-40,90), new Vector(0.02, 0.02, 0.02), "hand_r"); - player.setAnimation(Animation.PHONE_HOLD); - state.setCurrentPhoneAttached(toolAnimation); - toolAnimation.attach(player); - } - - public static ArrayList getConversationsWithNumber(String number) { - ArrayList messages = new ArrayList<>(); - for(PhoneMessage phoneMessage : phoneMessages) { - if(phoneMessage.getToNumber().equals(number)) { - messages.add(phoneMessage); - continue; - } - - if(phoneMessage.getFromNumber().equals(number)) { - messages.add(phoneMessage); - continue; - } - } - return messages; - } - - private static void refreshUrgencyMessages(Player player) { - Account account = WorldManager.getPlayerAccount(player); - boolean isPolice = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.POLICE.type)) - .findFirst().orElse(null) != null; - boolean isEMS = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.EMS.type)) - .findFirst().orElse(null) != null; - ArrayList urgencyPhoneMessages = new ArrayList<>(); - - // Check whitelists - if(isPolice) urgencyPhoneMessages.addAll(urgencyMessages.get("police")); - if(isEMS) urgencyPhoneMessages.addAll(urgencyMessages.get("hospital")); - - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearPhoneUrgencyPayload())); - Collections.reverse(urgencyPhoneMessages); // Reverse to get the newest before - for(UrgencyPhoneMessage urgencyPhoneMessage : urgencyPhoneMessages) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( - urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), - urgencyPhoneMessage.getService(), - urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() - ))); - } - } - - public static void handleUrgencyListRequest(Player player) { - refreshUrgencyMessages(player); - } - - public static void handleUrgencySolveRequest(Player player, SolveUrgencyPayload payload) { - UrgencyPhoneMessage phoneMessage = urgencyMessages.get(payload.getService()).stream() - .filter(x -> x.getId() == payload.getId()).findFirst().orElse(null); - if(phoneMessage == null) return; - urgencyMessages.get(payload.getService()).remove(phoneMessage); - refreshUrgencyMessages(player); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Urgence clôturée"); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.character.CharacterToolAnimation; +import fr.yuki.yrpf.enums.JobEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.PhoneContact; +import fr.yuki.yrpf.net.payload.*; +import fr.yuki.yrpf.phone.PhoneCall; +import fr.yuki.yrpf.phone.PhoneMessage; +import fr.yuki.yrpf.phone.UrgencyPhoneMessage; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.sql.SQLException; +import java.util.*; +import java.util.stream.Collectors; + +public class PhoneManager { + private static List phoneContacts; + private static List phoneMessages; + private static Map> urgencyMessages; + + private static int urgencyPhoneMessageCurrentId = 1; + + public static void init() throws SQLException { + phoneContacts = Repo.get(PhoneContact.class).all(); + Onset.print("Loaded " + phoneContacts.size() + " phone contact(s) from the database"); + + phoneMessages = new ArrayList<>(); + + // init urgency + urgencyMessages = new HashMap<>(); + urgencyMessages.put("police", new ArrayList<>()); + urgencyMessages.put("hospital", new ArrayList<>()); + } + + public static String generateRandomPhoneNumber() { + String phoneNumber = "07"; + for(int i = 0; i < 8; i++) { + phoneNumber += String.valueOf(Basic.randomNumber(1, 9)); + } + return phoneNumber; + } + + public static void handleRequestPhoneContacts(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); + for(PhoneContact contact : contacts) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddClientContactPayload(contact.getId(), contact.getName(), contact.getNumber()))); + } + } + + public static void handleAddPhoneContact(Player player, PhoneAddContactPayload payload) throws SQLException { + if(payload.getName().trim().equals("")|| payload.getNumber().trim() == "") return; + Account account = WorldManager.getPlayerAccount(player); + ArrayList contacts = new ArrayList<>(phoneContacts.stream().filter(x -> x.getAccountId() == account.getId()).collect(Collectors.toList())); + if(contacts.size() >= 30) return; // Too much contact + PhoneContact phoneContact = new PhoneContact(); + phoneContact.setName(payload.getName()); + phoneContact.setNumber(payload.getNumber()); + phoneContact.setAccountId(account.getId()); + phoneContact.save(); + phoneContacts.add(phoneContact); + Onset.print("Phone contact created"); + } + + public static void handleRequestSendMessage(Player player, RequestPhoneSendMessagePayload payload) { + if(payload.getMessage().trim().equals("") || payload.getNumber().trim().equals("")) return; + Account account = WorldManager.getPlayerAccount(player); + PhoneMessage phoneMessage = new PhoneMessage(); + phoneMessage.setFromNumber(account.getPhoneNumber()); + phoneMessage.setToNumber(payload.getNumber()); + phoneMessage.setMessage(payload.getMessage()); + phoneMessage.setMessageType(1); // Text message + phoneMessages.add(phoneMessage); + + // Send message to players + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload + (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); + Player otherPlayer = WorldManager.getPlayerByPhoneNumber(phoneMessage.getToNumber()); + if(otherPlayer != null) { + Account otherAccount = WorldManager.getPlayerAccount(otherPlayer); + otherPlayer.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload + (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); + SoundManager.playSound3D("sounds/notif_1.mp3", otherPlayer.getLocation(), 350, 2); + UIStateManager.sendNotification(otherPlayer, ToastTypeEnum.SUCCESS, I18n.t(otherAccount.getLang(), + "toast.phone.you_have_received_message", account.getPhoneNumber())); + } + } + + public static ArrayList getConversation(String number1, String number2) { + ArrayList messages = new ArrayList<>(); + for(PhoneMessage phoneMessage : phoneMessages) { + if(phoneMessage.getFromNumber().equals(number1)) { + if(phoneMessage.getToNumber().equals(number2)) { + messages.add(phoneMessage); + continue; + } + } + + if(phoneMessage.getFromNumber().equals(number2)) { + if(phoneMessage.getToNumber().equals(number1)) { + messages.add(phoneMessage); + continue; + } + } + } + return messages; + } + + public static void handleRequestConversation(Player player, String number) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList messages = getConversation(account.getPhoneNumber(), number); + + for(PhoneMessage phoneMessage : messages) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneMessagePayload + (phoneMessage.getMessageType(), phoneMessage.getFromNumber(), phoneMessage.getMessage()))); + } + } + + public static void handleRequestConversationsList(Player player) { + Account account = WorldManager.getPlayerAccount(player); + ArrayList phoneMessages = getConversationsWithNumber(account.getPhoneNumber()); + HashMap> uniqueConversation = new HashMap<>(); + + // Make unique conversation + for(PhoneMessage phoneMessage : phoneMessages) { + if(phoneMessage.getFromNumber().equals(account.getPhoneNumber())) { + if(!uniqueConversation.containsKey(phoneMessage.getToNumber())) { + uniqueConversation.put(phoneMessage.getToNumber(), new ArrayList<>()); + uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); + } + else { + uniqueConversation.get(phoneMessage.getToNumber()).add(phoneMessage); + } + } + + if(phoneMessage.getToNumber().equals(account.getPhoneNumber())) { + if(!uniqueConversation.containsKey(phoneMessage.getFromNumber())) { + uniqueConversation.put(phoneMessage.getFromNumber(), new ArrayList<>()); + uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); + } + else { + uniqueConversation.get(phoneMessage.getFromNumber()).add(phoneMessage); + } + } + } + + for(Map.Entry> conversations : uniqueConversation.entrySet()) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneConversationPayload( + conversations.getKey(), conversations.getValue().get(conversations.getValue().size() - 1).getMessage() + ))); + } + } + + public static void handleRequestCall(Player player, String phoneNumber) { + Onset.print("Request call to " + phoneNumber); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneCall() != null){ + Onset.print("Caller already in call"); + return; + } + Player receiver = WorldManager.getPlayerByPhoneNumber(phoneNumber); + if(receiver == null) { + Onset.print("Can't find the receiver"); + return; + } + CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(receiver); + if(receiverState.getCurrentPhoneCall() != null) { + Onset.print("Receiver already in call"); + return; + } + + PhoneCall phoneCall = new PhoneCall(player, receiver); + state.setCurrentPhoneCall(phoneCall); + receiverState.setCurrentPhoneCall(phoneCall); + phoneCall.displayCall(); + Onset.print("Call begin"); + } + + public static void handleCallAnswer(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneCall() == null){ + Onset.print("Can't answer because there is no call"); + return; + } + state.getCurrentPhoneCall().begin(); + attachPhone(state.getCurrentPhoneCall().getCaller()); + attachPhone(state.getCurrentPhoneCall().getReceiver()); + } + + public static void handleCallEnd(Player player) { + Onset.print("Request end call"); + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneCall() == null){ + Onset.print("Can't answer because there is no call"); + return; + } + state.getCurrentPhoneCall().end(); + } + + public static void handleAttachPhone(Player player, String phoneState) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + if(phoneState.equals("true")) { + attachPhone(player); + } else { + if(state.getCurrentPhoneCall() == null) { + player.setAnimation(Animation.PHONE_PUTAWAY); + state.getCurrentPhoneAttached().unAttach(); + state.setCurrentPhoneAttached(null); + } + } + } + + public static void handleUrgencyRequest(Player player, UrgencyRequestPayload payload) { + Account account = WorldManager.getPlayerAccount(player); + UrgencyPhoneMessage urgencyPhoneMessage = new UrgencyPhoneMessage(); + urgencyPhoneMessage.setId(urgencyPhoneMessageCurrentId++); + urgencyPhoneMessage.setFromNumber(account.getPhoneNumber()); + urgencyPhoneMessage.setToNumber(payload.getService()); + urgencyPhoneMessage.setMessage(payload.getText()); + urgencyPhoneMessage.setMessageType(1); + urgencyPhoneMessage.setService(payload.getService().toLowerCase()); + urgencyPhoneMessage.setPosition(player.getLocation()); + urgencyMessages.get(payload.getService()).add(urgencyPhoneMessage); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Votre demande est désormais en attente"); + + // Display messages + JobEnum jobEnum = JobEnum.POLICE; + Onset.print("Add urgency for service: " + payload.getService().toLowerCase()); + switch (payload.getService().toLowerCase()) { + case "police": + jobEnum = JobEnum.POLICE; + break; + + case "hospital": + jobEnum = JobEnum.EMS; + break; + } + ArrayList whitelistedPlayers = JobManager.getWhitelistedPlayersForJob(jobEnum); + for(Player wPlayer : whitelistedPlayers) { + try { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( + urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), + urgencyPhoneMessage.getService(), + urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() + ))); + UIStateManager.sendNotification(wPlayer, ToastTypeEnum.SUCCESS, "Vous avez reçu une nouvelle urgence"); + SoundManager.playSound3D("sounds/notif_1.mp3", wPlayer.getLocation(), 350, 2); + } catch (Exception ex) { + Onset.print("Can't send urgency: " + ex.toString()); + } + } + } + + public static void attachPhone(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state.getCurrentPhoneAttached() != null) return; + CharacterToolAnimation toolAnimation = new CharacterToolAnimation(50011, new Vector(-10,4,5), + new Vector(180,-40,90), new Vector(0.02, 0.02, 0.02), "hand_r"); + player.setAnimation(Animation.PHONE_HOLD); + state.setCurrentPhoneAttached(toolAnimation); + toolAnimation.attach(player); + } + + public static ArrayList getConversationsWithNumber(String number) { + ArrayList messages = new ArrayList<>(); + for(PhoneMessage phoneMessage : phoneMessages) { + if(phoneMessage.getToNumber().equals(number)) { + messages.add(phoneMessage); + continue; + } + + if(phoneMessage.getFromNumber().equals(number)) { + messages.add(phoneMessage); + continue; + } + } + return messages; + } + + private static void refreshUrgencyMessages(Player player) { + Account account = WorldManager.getPlayerAccount(player); + boolean isPolice = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.POLICE.name())) + .findFirst().orElse(null) != null; + boolean isEMS = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(JobEnum.EMS.name())) + .findFirst().orElse(null) != null; + ArrayList urgencyPhoneMessages = new ArrayList<>(); + + // Check whitelists + if(isPolice) urgencyPhoneMessages.addAll(urgencyMessages.get("police")); + if(isEMS) urgencyPhoneMessages.addAll(urgencyMessages.get("hospital")); + + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearPhoneUrgencyPayload())); + Collections.reverse(urgencyPhoneMessages); // Reverse to get the newest before + for(UrgencyPhoneMessage urgencyPhoneMessage : urgencyPhoneMessages) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddPhoneUrgencyPayload( + urgencyPhoneMessage.getId(), urgencyPhoneMessage.getFromNumber(), urgencyPhoneMessage.getMessage(), + urgencyPhoneMessage.getService(), + urgencyPhoneMessage.getPosition().getX(), urgencyPhoneMessage.getPosition().getY(), urgencyPhoneMessage.getPosition().getZ() + ))); + } + } + + public static void handleUrgencyListRequest(Player player) { + refreshUrgencyMessages(player); + } + + public static void handleUrgencySolveRequest(Player player, SolveUrgencyPayload payload) { + UrgencyPhoneMessage phoneMessage = urgencyMessages.get(payload.getService()).stream() + .filter(x -> x.getId() == payload.getId()).findFirst().orElse(null); + if(phoneMessage == null) return; + urgencyMessages.get(payload.getService()).remove(phoneMessage); + refreshUrgencyMessages(player); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, "Urgence clôturée"); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/SoundManager.java b/src/main/java/fr/yuki/yrpf/manager/SoundManager.java similarity index 95% rename from src/main/java/fr/yuki/YukiRPFramework/manager/SoundManager.java rename to src/main/java/fr/yuki/yrpf/manager/SoundManager.java index 26d350a..6aa6840 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/SoundManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/SoundManager.java @@ -1,82 +1,82 @@ -package fr.yuki.YukiRPFramework.manager; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.HashMap; - -public class SoundManager { - private static HashMap ambiantSounds = new HashMap(); - - public static void init() { - createAmbiantSound("hammerhead_station", "sounds/ambiant_1.mp3", - new Vector(127357, 78077, 1568), 6000, 0.3); - } - - /** - * Play a sound for players around the position - * @param fileName The sound file name - * @param position The position source - * @param radius The radius max of the sound - */ - public static void playSound3D(String fileName, Vector position, double radius, double volume) { - try { - for(Player player : Onset.getPlayers()) { - try { - if(player.getLocation().distance(position) < radius + 500) { - player.callRemoteEvent("Sound:PlaySound3D", fileName, position.getX(), position.getY(), position.getZ(), radius, volume); - } - } - catch (Exception ex) { - ex.printStackTrace(); - } - } - } - catch (Exception ex) { - ex.printStackTrace(); - } - } - - /** - * Create a ambiant sound, for making like a radio for example - * @param name The key - * @param soundName The sound path - * @param position The position - * @param radius The radius - * @param volume The volume - */ - public static WorldObject createAmbiantSound(String name, String soundName, Vector position, int radius, double volume) { - WorldObject worldObject = Onset.getServer().createObject(position, 1); - worldObject.setProperty("ambiantSoundObject", 1, true); - worldObject.setProperty("ambiantSoundName", soundName, true); - worldObject.setProperty("ambiantSoundRadius", radius, true); - worldObject.setProperty("ambiantSoundVolume", volume, true); - worldObject.setStreamDistance(radius); - ambiantSounds.put(name, worldObject); - return worldObject; - } - - public static HashMap getAmbiantSounds() { - return ambiantSounds; - } - - public static void playSound2D(Player player, String id, String fileName, double volume) { - try { - player.callRemoteEvent("Sound:PlayAndRegister2DSound", id, fileName, volume); - } - catch (Exception ex) { - ex.printStackTrace(); - } - } - - public static void stopSound2D(Player player, String id) { - try { - player.callRemoteEvent("Sound:Stop2DSound", id); - } - catch (Exception ex) { - ex.printStackTrace(); - } - } -} +package fr.yuki.yrpf.manager; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.HashMap; + +public class SoundManager { + private static HashMap ambiantSounds = new HashMap(); + + public static void init() { + createAmbiantSound("hammerhead_station", "sounds/ambiant_1.mp3", + new Vector(127357, 78077, 1568), 6000, 0.3); + } + + /** + * Play a sound for players around the position + * @param fileName The sound file name + * @param position The position source + * @param radius The radius max of the sound + */ + public static void playSound3D(String fileName, Vector position, double radius, double volume) { + try { + for(Player player : Onset.getPlayers()) { + try { + if(player.getLocation().distance(position) < radius + 500) { + player.callRemoteEvent("Sound:PlaySound3D", fileName, position.getX(), position.getY(), position.getZ(), radius, volume); + } + } + catch (Exception ex) { + ex.printStackTrace(); + } + } + } + catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Create a ambiant sound, for making like a radio for example + * @param name The key + * @param soundName The sound path + * @param position The position + * @param radius The radius + * @param volume The volume + */ + public static WorldObject createAmbiantSound(String name, String soundName, Vector position, int radius, double volume) { + WorldObject worldObject = Onset.getServer().createObject(position, 1); + worldObject.setProperty("ambiantSoundObject", 1, true); + worldObject.setProperty("ambiantSoundName", soundName, true); + worldObject.setProperty("ambiantSoundRadius", radius, true); + worldObject.setProperty("ambiantSoundVolume", volume, true); + worldObject.setStreamDistance(radius); + ambiantSounds.put(name, worldObject); + return worldObject; + } + + public static HashMap getAmbiantSounds() { + return ambiantSounds; + } + + public static void playSound2D(Player player, String id, String fileName, double volume) { + try { + player.callRemoteEvent("Sound:PlayAndRegister2DSound", id, fileName, volume); + } + catch (Exception ex) { + ex.printStackTrace(); + } + } + + public static void stopSound2D(Player player, String id) { + try { + player.callRemoteEvent("Sound:Stop2DSound", id); + } + catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/TebexManager.java b/src/main/java/fr/yuki/yrpf/manager/TebexManager.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/manager/TebexManager.java rename to src/main/java/fr/yuki/yrpf/manager/TebexManager.java index 20d79a0..3c905ee 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/TebexManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/TebexManager.java @@ -1,70 +1,70 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import fr.yuki.YukiRPFramework.tebex.TebexAPI; -import fr.yuki.YukiRPFramework.tebex.responses.Command; -import fr.yuki.YukiRPFramework.tebex.responses.TebexCommandQueue; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.io.IOException; - -public class TebexManager { - public static TebexAPI tebexAPI; - - public static void init() throws Exception { - if(WorldManager.getServerConfig().getTebexSecretKey().equals("")) { - Onset.print("TebexAPI not configured, you need to put your secret key in yrpf/server_config.json"); - return; - } - tebexAPI = new TebexAPI(WorldManager.getServerConfig().getTebexSecretKey()); - Onset.print("TebexAPI initialized"); - - Onset.timer(10000, () -> { - processCommands(); - }); - } - - private static void processCommands() { - try { - TebexCommandQueue commandQueue = tebexAPI.getCommandQueues(); - if(commandQueue == null) return; - for(Command command : commandQueue.getCommands()) { - Onset.print("Process command id: " + command.getID()); - Onset.print("Command parameters: " + command.getCommand()); - - String commandType = command.getCommand().split(" ")[0]; - boolean isSuccess = false; - switch (commandType) { - case "purchase_item": - isSuccess = onPurchaseItem(command); - break; - } - - if(isSuccess) { - Onset.print("Purchase success, now delete it from Tebex queue"); - tebexAPI.deleteCommand(command); - } else { - Onset.print("Purchase failed, we keep it in queue"); - } - } - } catch (IOException e) { - e.printStackTrace(); - Onset.print("Can't process tebex commands"); - } - } - - private static boolean onPurchaseItem(Command command) { - int itemId = Integer.parseInt(command.getCommand().split(" ")[1]); - int quantity = Integer.parseInt(command.getCommand().split(" ")[2]); - Player player = WorldManager.findPlayerBySteamId(command.getPlayer().getUUID()); - if(player == null) return false; - if(CharacterManager.getCharacterStateByPlayer(player) == null) return false; - if(!CharacterManager.getCharacterStateByPlayer(player).isHasUIReady()) return false; - - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(itemId); - InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), quantity, false); - - return true; - } -} +package fr.yuki.yrpf.manager; + +import fr.yuki.yrpf.model.ItemTemplate; +import fr.yuki.yrpf.tebex.TebexAPI; +import fr.yuki.yrpf.tebex.responses.Command; +import fr.yuki.yrpf.tebex.responses.TebexCommandQueue; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.io.IOException; + +public class TebexManager { + public static TebexAPI tebexAPI; + + public static void init() throws Exception { + if(WorldManager.getServerConfig().getTebexSecretKey().equals("")) { + Onset.print("TebexAPI not configured, you need to put your secret key in yrpf/server_config.json"); + return; + } + tebexAPI = new TebexAPI(WorldManager.getServerConfig().getTebexSecretKey()); + Onset.print("TebexAPI initialized"); + + Onset.timer(10000, () -> { + processCommands(); + }); + } + + private static void processCommands() { + try { + TebexCommandQueue commandQueue = tebexAPI.getCommandQueues(); + if(commandQueue == null) return; + for(Command command : commandQueue.getCommands()) { + Onset.print("Process command id: " + command.getID()); + Onset.print("Command parameters: " + command.getCommand()); + + String commandType = command.getCommand().split(" ")[0]; + boolean isSuccess = false; + switch (commandType) { + case "purchase_item": + isSuccess = onPurchaseItem(command); + break; + } + + if(isSuccess) { + Onset.print("Purchase success, now delete it from Tebex queue"); + tebexAPI.deleteCommand(command); + } else { + Onset.print("Purchase failed, we keep it in queue"); + } + } + } catch (IOException e) { + e.printStackTrace(); + Onset.print("Can't process tebex commands"); + } + } + + private static boolean onPurchaseItem(Command command) { + int itemId = Integer.parseInt(command.getCommand().split(" ")[1]); + int quantity = Integer.parseInt(command.getCommand().split(" ")[2]); + Player player = WorldManager.findPlayerBySteamId(command.getPlayer().getUUID()); + if(player == null) return false; + if(CharacterManager.getCharacterStateByPlayer(player) == null) return false; + if(!CharacterManager.getCharacterStateByPlayer(player).isHasUIReady()) return false; + + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(itemId); + InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), quantity, false); + + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/TimeManager.java b/src/main/java/fr/yuki/yrpf/manager/TimeManager.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/manager/TimeManager.java rename to src/main/java/fr/yuki/yrpf/manager/TimeManager.java index 1cc72c8..dff8154 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/TimeManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/TimeManager.java @@ -1,49 +1,49 @@ -package fr.yuki.YukiRPFramework.manager; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; - -public class TimeManager { - private static float currentHour; - - public static void init() { - currentHour = WorldManager.getServerConfig().getStartHour(); - Onset.timer(getRealTimePerHour() / 60, () -> tickHour()); - Onset.print("Time initialized"); - } - - public static int getRealTimePerHour() { - return WorldManager.getServerConfig().getTimePerHour(); - } - - public static void setCurrentHourForPlayer(Player player) { - player.callRemoteEvent("Time:SetHour", String.valueOf(getCurrentHour())); - } - - public static void tickHour() { - currentHour += 1f / 60f; - if(currentHour > 18 || currentHour < 8) currentHour += (1f / 60f) * 4; - if(currentHour > 24) currentHour = 0; - //Onset.print("Time changed, current hour: " + currentHour); - for(Player player : Onset.getPlayers()) { - try { - setCurrentHourForPlayer(player); - } - catch(Exception ex) {} - } - } - - public static float getCurrentHour() { - return currentHour; - } - - public static void setCurrentHour(float value) { - currentHour = value; - for(Player player : Onset.getPlayers()) { - try { - setCurrentHourForPlayer(player); - } - catch(Exception ex) {} - } - } -} +package fr.yuki.yrpf.manager; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; + +public class TimeManager { + private static float currentHour; + + public static void init() { + currentHour = WorldManager.getServerConfig().getStartHour(); + Onset.timer(getRealTimePerHour() / 60, () -> tickHour()); + Onset.print("Time initialized"); + } + + public static int getRealTimePerHour() { + return WorldManager.getServerConfig().getTimePerHour(); + } + + public static void setCurrentHourForPlayer(Player player) { + player.callRemoteEvent("Time:SetHour", String.valueOf(getCurrentHour())); + } + + public static void tickHour() { + currentHour += 1f / 60f; + if(currentHour > 18 || currentHour < 8) currentHour += (1f / 60f) * 4; + if(currentHour > 24) currentHour = 0; + //Onset.print("Time changed, current hour: " + currentHour); + for(Player player : Onset.getPlayers()) { + try { + setCurrentHourForPlayer(player); + } + catch(Exception ex) {} + } + } + + public static float getCurrentHour() { + return currentHour; + } + + public static void setCurrentHour(float value) { + currentHour = value; + for(Player player : Onset.getPlayers()) { + try { + setCurrentHourForPlayer(player); + } + catch(Exception ex) {} + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java b/src/main/java/fr/yuki/yrpf/manager/UIStateManager.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java rename to src/main/java/fr/yuki/yrpf/manager/UIStateManager.java index 885c478..d87b1e9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/UIStateManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/UIStateManager.java @@ -1,249 +1,247 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.AccountDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.*; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.Basic; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.sql.SQLException; - -public class UIStateManager { - /** - * Toogle the window requested by the player - * @param player The player - * @param windowType The window type requested - */ - public static boolean handleUIToogle(Player player, String windowType) { - Onset.print("Toogle UI type="+windowType); - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - UIState uiState = characterState.getUiState(); - boolean r = false; - switch (windowType) { - case "inventory": - uiState.setInventory(!uiState.isInventory()); - r = uiState.isInventory(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("inventory", uiState.isInventory()))); - break; - - case "atm": - uiState.setAtm(!uiState.isAtm()); - r = uiState.isAtm(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("atm", uiState.isAtm()))); - break; - - case "garage": - uiState.setGarage(!uiState.isGarage()); - r = uiState.isGarage(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("garage", uiState.isGarage()))); - break; - - case "vseller": - uiState.setVseller(!uiState.isVseller()); - r = uiState.isVseller(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("vseller", uiState.isVseller()))); - break; - - case "customCharacter": - uiState.setCustomCharacter(!uiState.isCustomCharacter()); - r = uiState.isCustomCharacter(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("customCharacter", uiState.isCustomCharacter()))); - break; - - case "vchest": - uiState.setVchest(!uiState.isVchest()); - r = uiState.isVchest(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("vchest", uiState.isVchest()))); - break; - - case "bigmap": - uiState.setBigmap(!uiState.isBigmap()); - r = uiState.isBigmap(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("bigmap", uiState.isBigmap()))); - break; - - case "death": - uiState.setDeath(!uiState.isDeath()); - r = uiState.isDeath(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("death", uiState.isDeath()))); - break; - - case "characterjob": - uiState.setCharacterJob(!uiState.isCharacterJob()); - r = uiState.isCharacterJob(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("characterjob", uiState.isCharacterJob()))); - break; - - case "seller": - uiState.setSeller(!uiState.isSeller()); - r = uiState.isSeller(); - if(!r) CharacterManager.setCharacterFreeze(player, false); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("seller", uiState.isSeller()))); - break; - - case "statewindow": - uiState.setStatewindow(!uiState.isStatewindow()); - r = uiState.isStatewindow(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("statewindow", uiState.isStatewindow()))); - break; - - case "growboxmenu": - uiState.setGrowboxmenu(!uiState.isGrowboxmenu()); - r = uiState.isGrowboxmenu(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("growboxmenu", uiState.isGrowboxmenu()))); - break; - - case "phone": - uiState.setPhone(!uiState.isPhone()); - r = uiState.isPhone(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("phone", uiState.isPhone()))); - break; - - case "houseBuy": - uiState.setHouseBuy(!uiState.isHouseBuy()); - r = uiState.isHouseBuy(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("houseBuy", uiState.isHouseBuy()))); - break; - - case "genericMenu": - uiState.setGenericMenu(!uiState.isGenericMenu()); - r = uiState.isGenericMenu(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("genericMenu", uiState.isGenericMenu()))); - break; - - case "customOutfit": - uiState.setCustomOutfit(!uiState.isCustomOutfit()); - r = uiState.isCustomOutfit(); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("customOutfit", uiState.isCustomOutfit()))); - break; - - } - return r; - } - - /** - * Send a notification to the player - * @param player The player - * @param type The toast type - * @param message The message - */ - public static void sendNotification(Player player, ToastTypeEnum type, String message) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type.type, message))); - } - - public static void sendNotification(Player player, String type, String message) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type, message))); - } - - public static void setLang(Player player, String lang) { - Account account = WorldManager.getPlayerAccount(player); - account.setLang(lang); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetLangPayload(account.getLang()))); - } - - public static void handleUIReady(Player player) throws SQLException { - Account account = WorldManager.getPlayerAccount(player); - MapManager.setupGameMap(player); - - // Temp for beta - Inventory inventory = InventoryManager.getMainInventory(player); - /** - if(inventory.getItemByType(ItemTemplateEnum.LUMBERJACK_HATCHET_1.id) == null) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.LUMBERJACK_HATCHET_1.id, 1); - } - if(inventory.getItemByType(ItemTemplateEnum.MINER_PICKAXE_1.id) == null) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.MINER_PICKAXE_1.id, 1); - } - if(inventory.getItemByType(ItemTemplateEnum.FISHING_ROD.id) == null) { - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.FISHING_ROD.id, 1); - }*/ - - CharacterManager.getCharacterStateByPlayer(player).setHasUIReady(true); - - // Set lang to the UI - setLang(player, account.getLang()); - CharacterManager.refreshFood(player); - - // Set phone number - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneNumberPayload(account.getPhoneNumber()))); - - // Send compagny - CompagnyManager.refreshCompagny(player); - - // Generate a phone number for the player - if(account.getPhoneNumber().trim().equals("")) { - account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); - AccountDAO.updateAccount(account, null); - Onset.print("Phone number generated : " + account.getPhoneNumber()); - } - - // Apply style to character if there is one saved - if(account.getCharacterCreationRequest() == 0) { - CharacterManager.setCharacterStyle(player); - - if(account.getIsDead() == 0) { - player.setRagdoll(false); - CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), - account.getSaveY(), - account.getSaveZ() + 50, - account.getSaveH())); - } - else { - CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), - account.getSaveY(), - account.getSaveZ() + 50, - account.getSaveH())); - CharacterManager.setCharacterFreeze(player, true); - Onset.delay(1500, () -> { - player.setRagdoll(true); - CharacterManager.setCharacterStyle(player); - player.setHealth(0); - - // Apply interface - UIState uiState = new Gson().fromJson(player.getProperty("uiState").toString(), UIState.class); - uiState.setDeath(true); - player.setProperty("uiState", new Gson().toJson(uiState), true); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload - ("death", uiState.isDeath()))); - WorldManager.savePlayer(player); - }); - } - } else if(account.getCharacterCreationRequest() == 1) { // Request character creation if no style set - CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), - WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), - WorldManager.getServerConfig().getSpawnPointH())); - Onset.delay(1000, () -> { - CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), - WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), - WorldManager.getServerConfig().getSpawnPointH())); - Onset.delay(500, () -> { - UIStateManager.handleUIToogle(player, "customCharacter"); - }); - }); - } - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.*; +import fr.yuki.yrpf.ui.UIState; +import fr.yuki.yrpf.utils.Basic; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.SQLException; + +public class UIStateManager { + /** + * Toogle the window requested by the player + * @param player The player + * @param windowType The window type requested + */ + public static boolean handleUIToogle(Player player, String windowType) { + Onset.print("Toogle UI type="+windowType); + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + UIState uiState = characterState.getUiState(); + boolean r = false; + switch (windowType) { + case "inventory": + uiState.setInventory(!uiState.isInventory()); + r = uiState.isInventory(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("inventory", uiState.isInventory()))); + break; + + case "atm": + uiState.setAtm(!uiState.isAtm()); + r = uiState.isAtm(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("atm", uiState.isAtm()))); + break; + + case "garage": + uiState.setGarage(!uiState.isGarage()); + r = uiState.isGarage(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("garage", uiState.isGarage()))); + break; + + case "vseller": + uiState.setVseller(!uiState.isVseller()); + r = uiState.isVseller(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("vseller", uiState.isVseller()))); + break; + + case "customCharacter": + uiState.setCustomCharacter(!uiState.isCustomCharacter()); + r = uiState.isCustomCharacter(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("customCharacter", uiState.isCustomCharacter()))); + break; + + case "vchest": + uiState.setVchest(!uiState.isVchest()); + r = uiState.isVchest(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("vchest", uiState.isVchest()))); + break; + + case "bigmap": + uiState.setBigmap(!uiState.isBigmap()); + r = uiState.isBigmap(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("bigmap", uiState.isBigmap()))); + break; + + case "death": + uiState.setDeath(!uiState.isDeath()); + r = uiState.isDeath(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("death", uiState.isDeath()))); + break; + + case "characterjob": + uiState.setCharacterJob(!uiState.isCharacterJob()); + r = uiState.isCharacterJob(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("characterjob", uiState.isCharacterJob()))); + break; + + case "seller": + uiState.setSeller(!uiState.isSeller()); + r = uiState.isSeller(); + if(!r) CharacterManager.setCharacterFreeze(player, false); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("seller", uiState.isSeller()))); + break; + + case "statewindow": + uiState.setStatewindow(!uiState.isStatewindow()); + r = uiState.isStatewindow(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("statewindow", uiState.isStatewindow()))); + break; + + case "growboxmenu": + uiState.setGrowboxmenu(!uiState.isGrowboxmenu()); + r = uiState.isGrowboxmenu(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("growboxmenu", uiState.isGrowboxmenu()))); + break; + + case "phone": + uiState.setPhone(!uiState.isPhone()); + r = uiState.isPhone(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("phone", uiState.isPhone()))); + break; + + case "houseBuy": + uiState.setHouseBuy(!uiState.isHouseBuy()); + r = uiState.isHouseBuy(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("houseBuy", uiState.isHouseBuy()))); + break; + + case "genericMenu": + uiState.setGenericMenu(!uiState.isGenericMenu()); + r = uiState.isGenericMenu(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("genericMenu", uiState.isGenericMenu()))); + break; + + case "customOutfit": + uiState.setCustomOutfit(!uiState.isCustomOutfit()); + r = uiState.isCustomOutfit(); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("customOutfit", uiState.isCustomOutfit()))); + break; + + } + return r; + } + + /** + * Send a notification to the player + * @param player The player + * @param type The toast type + * @param message The message + */ + public static void sendNotification(Player player, ToastTypeEnum type, String message) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type.type, message))); + } + + public static void sendNotification(Player player, String type, String message) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddToastPayload(type, message))); + } + + public static void setLang(Player player, String lang) { + Account account = WorldManager.getPlayerAccount(player); + account.setLang(lang); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetLangPayload(account.getLang()))); + } + + public static void handleUIReady(Player player) throws SQLException { + Account account = WorldManager.getPlayerAccount(player); + MapManager.setupGameMap(player); + + // Temp for beta + Inventory inventory = InventoryManager.getMainInventory(player); + /** + if(inventory.getItemByType(ItemTemplateEnum.LUMBERJACK_HATCHET_1.id) == null) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.LUMBERJACK_HATCHET_1.id, 1); + } + if(inventory.getItemByType(ItemTemplateEnum.MINER_PICKAXE_1.id) == null) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.MINER_PICKAXE_1.id, 1); + } + if(inventory.getItemByType(ItemTemplateEnum.FISHING_ROD.id) == null) { + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.FISHING_ROD.id, 1); + }*/ + + CharacterManager.getCharacterStateByPlayer(player).setHasUIReady(true); + + // Set lang to the UI + setLang(player, account.getLang()); + CharacterManager.refreshFood(player); + + // Set phone number + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneNumberPayload(account.getPhoneNumber()))); + + // Send compagny + CompanyManager.refreshCompany(player); + + // Generate a phone number for the player + if(account.getPhoneNumber().trim().equals("")) { + account.setPhoneNumber(PhoneManager.generateRandomPhoneNumber()); + account.save(); + Onset.print("Phone number generated : " + account.getPhoneNumber()); + } + + // Apply style to character if there is one saved + if(!account.isCharacterCreationRequest()) { + CharacterManager.setCharacterStyle(player); + + if(!account.isDead()) { + player.setRagdoll(false); + CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), + account.getSaveY(), + account.getSaveZ() + 50, + account.getSaveH())); + } + else { + CharacterManager.teleportWithLevelLoading(player, new Location(account.getSaveX(), + account.getSaveY(), + account.getSaveZ() + 50, + account.getSaveH())); + CharacterManager.setCharacterFreeze(player, true); + Onset.delay(1500, () -> { + player.setRagdoll(true); + CharacterManager.setCharacterStyle(player); + player.setHealth(0); + + // Apply interface + UIState uiState = new Gson().fromJson(player.getProperty("uiState").toString(), UIState.class); + uiState.setDeath(true); + player.setProperty("uiState", new Gson().toJson(uiState), true); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetWindowStatePayload + ("death", uiState.isDeath()))); + WorldManager.savePlayer(player); + }); + } + } else if(account.isCharacterCreationRequest()) { // Request character creation if no style set + CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), + WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), + WorldManager.getServerConfig().getSpawnPointH())); + Onset.delay(1000, () -> { + CharacterManager.teleportWithLevelLoading(player, new Location(WorldManager.getServerConfig().getSpawnPointX() + Basic.randomNumber(-30,30), + WorldManager.getServerConfig().getSpawnPointY() + Basic.randomNumber(-30,30), WorldManager.getServerConfig().getSpawnPointZ(), + WorldManager.getServerConfig().getSpawnPointH())); + Onset.delay(500, () -> { + UIStateManager.handleUIToogle(player, "customCharacter"); + }); + }); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/VehicleManager.java b/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/manager/VehicleManager.java rename to src/main/java/fr/yuki/yrpf/manager/VehicleManager.java index 7cc458e..b027020 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/VehicleManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/VehicleManager.java @@ -1,362 +1,355 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.dao.VehicleGarageDAO; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.customGoal.DeliveryPointGoal; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.House; -import fr.yuki.YukiRPFramework.model.VehicleGarage; -import fr.yuki.YukiRPFramework.net.payload.AddVChestItemPayload; -import fr.yuki.YukiRPFramework.net.payload.AddVehicleGaragePayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.Basic; -import fr.yuki.YukiRPFramework.vehicle.storeLayout.*; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Color; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Vehicle; -import net.onfirenetwork.onsetjava.plugin.event.EventHandler; -import net.onfirenetwork.onsetjava.plugin.event.player.PlayerEnterVehicleEvent; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.UUID; -import java.util.stream.Collectors; - -public class VehicleManager { - - private static ArrayList vehicleStoreLayouts; - - public static void init() { - vehicleStoreLayouts = new ArrayList<>(); - vehicleStoreLayouts.add(new MiniTruckStoreLayout()); - vehicleStoreLayouts.add(new GarbageTruckStoreLayout()); - vehicleStoreLayouts.add(new MiniPickupStoreLayout()); - vehicleStoreLayouts.add(new TruckStoreLayout()); - } - - public static class CreateVehicleResult { - private Vehicle vehicle; - private VehicleGarage vehicleGarage; - - public CreateVehicleResult(Vehicle vehicle, VehicleGarage vehicleGarage){ - this.vehicle = vehicle; - this.vehicleGarage = vehicleGarage; - } - - public Vehicle getVehicle() { - return vehicle; - } - - public VehicleGarage getVehicleGarage() { - return vehicleGarage; - } - } - - /** - * Create a vehicle at positon, if player is given, he will be the owner - * @param modelId The model id - * @param position The position - * @param heading The heading - * @param player Attach a player to the vehicle, the player will be the owner - */ - public static CreateVehicleResult createVehicle(int modelId, Vector position, double heading, Player player, VehicleGarage vehicleGarage, - boolean isRental) { - try { - Vehicle vehicle = Onset.getServer().createVehicle(position, heading, modelId); - vehicle.disableRespawn(); // Disable the respawn of it - if(vehicleGarage == null) { - vehicle.setLicensePlate(getRandomLicencePlate("C")); - String vehicleUUID = UUID.randomUUID().toString(); - vehicle.setProperty("uuid", vehicleUUID, true); - vehicle.setColor(new Color(Basic.randomNumber(0, 255), Basic.randomNumber(0, 255), Basic.randomNumber(0, 255))); - - // Save the vehicle in garage - vehicleGarage = new VehicleGarage(); - vehicleGarage.setUuid(vehicleUUID); - vehicleGarage.setOwner(WorldManager.getPlayerAccount(player).getId()); - vehicleGarage.setGarageId(-1); - vehicleGarage.setGarageLastId(WorldManager.getGarages().get(0).getId()); - vehicleGarage.setModelId(modelId); - vehicleGarage.setDamage("[0,0,0,0,0,0,0,0]"); - vehicleGarage.setHealth(5000); - vehicleGarage.setRental(isRental); - vehicleGarage.setLicencePlate(vehicle.getLicensePlate()); - vehicleGarage.setColor("#" + Integer.toHexString(vehicle.getColor().getRed()) + Integer.toHexString(vehicle.getColor().getGreen()) + Integer.toHexString(vehicle.getColor().getBlue())); - if(!isRental) VehicleGarageDAO.createVehicleGarage(vehicleGarage); - GarageManager.getVehicleGarages().add(vehicleGarage); - } - else { - vehicleGarage.setRental(isRental); - vehicle.setLicensePlate(vehicleGarage.getLicencePlate()); - vehicle.setProperty("uuid", vehicleGarage.getUuid(), true); - java.awt.Color color = java.awt.Color.decode(vehicleGarage.getColor()); - vehicle.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); - } - - vehicle.setProperty("owner", player.getSteamId(), true); - vehicle.setProperty("locked", 0, true); - vehicle.setProperty("fuel", 50, true); - - // Create the key for the player - createKeyForVehicle(vehicle, player); - player.enterVehicle(vehicle); - vehicle.setHeading(heading); - - return new CreateVehicleResult(vehicle, vehicleGarage); - } catch (Exception ex) { - ex.printStackTrace(); - Onset.print("Can't create the vehicle: " + ex.toString()); - return null; - } - } - - /** - * Create a vehicle key for the vehicle in the player inventory - * @param vehicle The vehicle - * @param player The player where the key will be put in - * @return The key item - */ - public static InventoryItem createKeyForVehicle(Vehicle vehicle, Player player) { - String vehicleUUID = vehicle.getPropertyString("uuid"); - InventoryItem keyItem = InventoryManager.addItemToPlayer(player, ItemTemplateEnum.VKEY.id, 1, false); - if(keyItem == null) return null; - keyItem.getExtraProperties().put("vehicle_uuid", vehicleUUID); - InventoryManager.getMainInventory(player).save(); - return keyItem; - } - - /** - * Delete all keys in player inventory for the vehicle - * @param vehicle The vehicle - * @param player The player where delete keys - */ - public static void clearKeysForVehicle(Vehicle vehicle, Player player) { - for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { - try { - if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { - InventoryManager.getMainInventory(player).removeItem(keyItem, keyItem.getAmount()); - } - } - catch (Exception ex) {} - } - } - - /** - * The player request to lock the nearest vehicle - * @param player The player - */ - public static void handleVehicleLockRequest(Player player) { - Onset.print("Request lock toogle from player="+player.getSteamId()); - - Account account = WorldManager.getPlayerAccount(player); - Door nearestDoor = WorldManager.getNearestDoor(player.getLocation()); - if(nearestDoor.getLocation().distance(player.getLocation()) < 200) { - House house = HouseManager.getHouseAtLocation(nearestDoor.getLocation()); - if(house != null) { - if(HouseManager.canBuildInHouse(player, house)) { - if(house.isLocked()) { - house.setLocked(false); - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.house.doors_unlocked")); - } else { - house.setLocked(true); - for(Door door : house.getLine3D().getDoorsInside()) { - door.close(); - } - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.doors_locked")); - } - SoundManager.playSound3D("sounds/lock_door.mp3", nearestDoor.getLocation(), 500, 0.8); - return; - } - } - } - - for(Vehicle vehicle : Onset.getServer().getVehicles()) { - if(vehicle.getLocation().distance(player.getLocation()) < 1500) { - tryToogleLockVehicle(player, vehicle); - } - } - } - - /** - * Try to lock/unlock the vehicle if player have the right key - * @param player The player - * @param vehicle The vehicle - */ - public static void tryToogleLockVehicle(Player player, Vehicle vehicle) { - Account account = WorldManager.getPlayerAccount(player); - for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { - if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { - if(vehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), - "toast.vehicle.lock_off", vehicle.getLicensePlate())); - vehicle.setProperty("locked", 0, true); - SoundManager.playSound3D("sounds/carUnlock.mp3", vehicle.getLocation(), 2500, 1); - } else { - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), - "toast.vehicle.lock_on", vehicle.getLicensePlate())); - vehicle.setProperty("locked", 1, true); - SoundManager.playSound3D("sounds/carLock.mp3", vehicle.getLocation(), 2500, 1); - } - blinkVehicleLight(vehicle); - } - } - } - - /** - * Blink lights of the vehicle - * @param vehicle The vehicle - */ - private static void blinkVehicleLight(Vehicle vehicle) { - for(int i=0; i<6; i++){ - int c = i; - Onset.delay(c*200, () -> { - vehicle.setLightOn(c%2==0); - }); - } - } - - /** - * Get a random licence plate - * @return A random licence plate - */ - private static String getRandomLicencePlate(String prefix) { - return prefix + "-" + Basic.randomNumber(1000, 9999); - } - - public static void onPlayerEnterVehicle(Player player, Vehicle vehicle, int seatId) { - if(seatId == 1) { - if(vehicle.getPropertyInt("fuel") > 0) { - vehicle.setEngineOn(true); - } - } - - Account account = WorldManager.getPlayerAccount(player); - // Show waypoints for items in storage - for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { - if(wearableWorldObject.getDeliveryPointGoal() == null) continue; - DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); - player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), - deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), - deliveryPointGoal.getPosition().getZ()); - } - } - - public static void onPlayerVehicleExit(Player player, Vehicle vehicle, int seatId) { - if(seatId == 1) vehicle.setEngineOn(false); - - // Remove waypoints for items in storage - for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { - if(wearableWorldObject.getDeliveryPointGoal() == null) continue; - DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); - player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); - } - } - - public static Vehicle getNearestVehicle(Vector position) { - Vehicle nearestVehicle = null; - for(Vehicle vehicle : Onset.getVehicles()) { - try { - if(nearestVehicle == null) { - nearestVehicle = vehicle; - } - else { - if(vehicle.getLocation().distance(position) < nearestVehicle.getLocation().distance(position)) { - nearestVehicle = vehicle; - } - } - }catch (Exception ex) { - continue; - } - } - return nearestVehicle; - } - - public static boolean canStoreWorldWearableObject(Vehicle vehicle) { - if(vehicle.getModel() == 22 || vehicle.getModel() == 23) - return true; - return false; - } - - public static int getInteractionDistance(Vehicle vehicle) { - if(vehicle.getModel() == 22 || vehicle.getModel() == 23) - return 500; - if(vehicle.getModel() == 9 || vehicle.getModel() == 28) - return 700; - return 400; - } - - - public static boolean storeWorldWearableObject(Vehicle vehicle, WearableWorldObject wearableWorldObject) { - VehicleStoreLayout vehicleStoreLayout = vehicleStoreLayouts.stream() - .filter(x -> x.isAdaptedForModel(vehicle.getModel())).findFirst().orElse(null); - if(vehicleStoreLayout == null) return false; - return vehicleStoreLayout.store(vehicle, wearableWorldObject); - } - - public static ArrayList getVehicleWearableObjects(Vehicle vehicle) { - return new ArrayList<>(JobManager.getWearableWorldObjects().stream() - .filter(x -> x.getVehicleUUID() != null) - .filter(x -> x.getVehicleUUID().equals(vehicle.getPropertyString("uuid"))) - .collect(Collectors.toList())); - } - - public static boolean handleVehicleChestStorageRequest(Player player) { - if(player.getVehicle() != null) return false; - Vehicle vehicle = getNearestVehicle(player.getLocation()); - if(vehicle == null) return false; - if(vehicle.getModel() == 33 || vehicle.getModel() == 34) return false; - if(vehicle.getLocation().distance(player.getLocation()) > getInteractionDistance(vehicle)) return false; - - Account account = WorldManager.getPlayerAccount(player); - try{ - if(vehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); - return true; - } - if(!UIStateManager.handleUIToogle(player, "vchest")) return true; - } catch (Exception ex) { - return false; - } - for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { - try { - player.callRemoteEvent("GlobalUI:DispatchToUI", - new Gson().toJson(new AddVChestItemPayload(wearableWorldObject.getUuid(), wearableWorldObject.getModelId(), ""))); - }catch (Exception ex) { - - } - } - return true; - } - - public static void handleRequestWearFromVehicleChest(Player player, String uuid) { - if(player.getVehicle() != null) return; - Vehicle vehicle = getNearestVehicle(player.getLocation()); - if(vehicle.getLocation().distance(player.getLocation()) > VehicleManager.getInteractionDistance(vehicle)) return; - - Account account = WorldManager.getPlayerAccount(player); - if(vehicle.getPropertyInt("locked") == 1) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); - return; - } - WearableWorldObject wearableWorldObject = getVehicleWearableObjects(vehicle).stream() - .filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); - if(wearableWorldObject == null) return; - UIStateManager.handleUIToogle(player, "vchest"); - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); - return; - } - - wearableWorldObject.removeFromVehicle(); - wearableWorldObject.requestWear(player); - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.job.customGoal.DeliveryPointGoal; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.House; +import fr.yuki.yrpf.model.VehicleGarage; +import fr.yuki.yrpf.net.payload.AddVChestItemPayload; +import fr.yuki.yrpf.utils.Basic; +import fr.yuki.yrpf.vehicle.storeLayout.*; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Color; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.util.ArrayList; +import java.util.UUID; +import java.util.stream.Collectors; + +public class VehicleManager { + + private static ArrayList vehicleStoreLayouts; + + public static void init() { + vehicleStoreLayouts = new ArrayList<>(); + vehicleStoreLayouts.add(new MiniTruckStoreLayout()); + vehicleStoreLayouts.add(new GarbageTruckStoreLayout()); + vehicleStoreLayouts.add(new MiniPickupStoreLayout()); + vehicleStoreLayouts.add(new TruckStoreLayout()); + } + + public static class CreateVehicleResult { + private Vehicle vehicle; + private VehicleGarage vehicleGarage; + + public CreateVehicleResult(Vehicle vehicle, VehicleGarage vehicleGarage){ + this.vehicle = vehicle; + this.vehicleGarage = vehicleGarage; + } + + public Vehicle getVehicle() { + return vehicle; + } + + public VehicleGarage getVehicleGarage() { + return vehicleGarage; + } + } + + /** + * Create a vehicle at positon, if player is given, he will be the owner + * @param modelId The model id + * @param position The position + * @param heading The heading + * @param player Attach a player to the vehicle, the player will be the owner + */ + public static CreateVehicleResult createVehicle(int modelId, Vector position, double heading, Player player, VehicleGarage vehicleGarage, + boolean isRental) { + try { + Vehicle vehicle = Onset.getServer().createVehicle(position, heading, modelId); + vehicle.disableRespawn(); // Disable the respawn of it + if(vehicleGarage == null) { + vehicle.setLicensePlate(getRandomLicencePlate("C")); + String vehicleUUID = UUID.randomUUID().toString(); + vehicle.setProperty("uuid", vehicleUUID, true); + vehicle.setColor(new Color(Basic.randomNumber(0, 255), Basic.randomNumber(0, 255), Basic.randomNumber(0, 255))); + + // Save the vehicle in garage + vehicleGarage = new VehicleGarage(); + vehicleGarage.setUuid(vehicleUUID); + vehicleGarage.setOwner(WorldManager.getPlayerAccount(player).getId()); + vehicleGarage.setGarageId(-1); + vehicleGarage.setGarageLastId(WorldManager.getGarages().get(0).getId()); + vehicleGarage.setModelId(modelId); + vehicleGarage.setDamage("[0,0,0,0,0,0,0,0]"); + vehicleGarage.setHealth(5000); + vehicleGarage.setRental(isRental); + vehicleGarage.setLicencePlate(vehicle.getLicensePlate()); + vehicleGarage.setColor("#" + Integer.toHexString(vehicle.getColor().getRed()) + Integer.toHexString(vehicle.getColor().getGreen()) + Integer.toHexString(vehicle.getColor().getBlue())); + vehicleGarage.save(); + GarageManager.getVehicleGarages().add(vehicleGarage); + } + else { + vehicleGarage.setRental(isRental); + vehicle.setLicensePlate(vehicleGarage.getLicencePlate()); + vehicle.setProperty("uuid", vehicleGarage.getUuid(), true); + java.awt.Color color = java.awt.Color.decode(vehicleGarage.getColor()); + vehicle.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue())); + } + + vehicle.setProperty("owner", player.getSteamId(), true); + vehicle.setProperty("locked", 0, true); + vehicle.setProperty("fuel", 50, true); + + // Create the key for the player + createKeyForVehicle(vehicle, player); + player.enterVehicle(vehicle); + vehicle.setHeading(heading); + + return new CreateVehicleResult(vehicle, vehicleGarage); + } catch (Exception ex) { + ex.printStackTrace(); + Onset.print("Can't create the vehicle: " + ex.toString()); + return null; + } + } + + /** + * Create a vehicle key for the vehicle in the player inventory + * @param vehicle The vehicle + * @param player The player where the key will be put in + * @return The key item + */ + public static InventoryItem createKeyForVehicle(Vehicle vehicle, Player player) { + String vehicleUUID = vehicle.getPropertyString("uuid"); + InventoryItem keyItem = InventoryManager.addItemToPlayer(player, ItemTemplateEnum.VKEY.id, 1, false); + if(keyItem == null) return null; + keyItem.getExtraProperties().put("vehicle_uuid", vehicleUUID); + InventoryManager.getMainInventory(player).save(); + return keyItem; + } + + /** + * Delete all keys in player inventory for the vehicle + * @param vehicle The vehicle + * @param player The player where delete keys + */ + public static void clearKeysForVehicle(Vehicle vehicle, Player player) { + for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { + try { + if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { + InventoryManager.getMainInventory(player).removeItem(keyItem, keyItem.getAmount()); + } + } + catch (Exception ex) {} + } + } + + /** + * The player request to lock the nearest vehicle + * @param player The player + */ + public static void handleVehicleLockRequest(Player player) { + Onset.print("Request lock toogle from player="+player.getSteamId()); + + Account account = WorldManager.getPlayerAccount(player); + Door nearestDoor = WorldManager.getNearestDoor(player.getLocation()); + if(nearestDoor.getLocation().distance(player.getLocation()) < 200) { + House house = HouseManager.getHouseAtLocation(nearestDoor.getLocation()); + if(house != null) { + if(HouseManager.canBuildInHouse(player, house)) { + if(house.isLocked()) { + house.setLocked(false); + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.house.doors_unlocked")); + } else { + house.setLocked(true); + for(Door door : house.getLine3D().getDoorsInside()) { + door.close(); + } + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.house.doors_locked")); + } + SoundManager.playSound3D("sounds/lock_door.mp3", nearestDoor.getLocation(), 500, 0.8); + return; + } + } + } + + for(Vehicle vehicle : Onset.getServer().getVehicles()) { + if(vehicle.getLocation().distance(player.getLocation()) < 1500) { + tryToogleLockVehicle(player, vehicle); + } + } + } + + /** + * Try to lock/unlock the vehicle if player have the right key + * @param player The player + * @param vehicle The vehicle + */ + public static void tryToogleLockVehicle(Player player, Vehicle vehicle) { + Account account = WorldManager.getPlayerAccount(player); + for(InventoryItem keyItem : InventoryManager.getMainInventory(player).getItemsByType(ItemTemplateEnum.VKEY.id)) { + if(keyItem.getExtraProperties().get("vehicle_uuid").equals(vehicle.getPropertyString("uuid"))) { + if(vehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), + "toast.vehicle.lock_off", vehicle.getLicensePlate())); + vehicle.setProperty("locked", 0, true); + SoundManager.playSound3D("sounds/carUnlock.mp3", vehicle.getLocation(), 2500, 1); + } else { + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), + "toast.vehicle.lock_on", vehicle.getLicensePlate())); + vehicle.setProperty("locked", 1, true); + SoundManager.playSound3D("sounds/carLock.mp3", vehicle.getLocation(), 2500, 1); + } + blinkVehicleLight(vehicle); + } + } + } + + /** + * Blink lights of the vehicle + * @param vehicle The vehicle + */ + private static void blinkVehicleLight(Vehicle vehicle) { + for(int i=0; i<6; i++){ + int c = i; + Onset.delay(c*200, () -> { + vehicle.setLightOn(c%2==0); + }); + } + } + + /** + * Get a random licence plate + * @return A random licence plate + */ + private static String getRandomLicencePlate(String prefix) { + return prefix + "-" + Basic.randomNumber(1000, 9999); + } + + public static void onPlayerEnterVehicle(Player player, Vehicle vehicle, int seatId) { + if(seatId == 1) { + if(vehicle.getPropertyInt("fuel") > 0) { + vehicle.setEngineOn(true); + } + } + + Account account = WorldManager.getPlayerAccount(player); + // Show waypoints for items in storage + for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { + if(wearableWorldObject.getDeliveryPointGoal() == null) continue; + DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); + player.callRemoteEvent("Map:AddWaypoint", I18n.t(account.getLang(), "toast.delivery.delivery_point"), deliveryPointGoal.getWearableWorldObject().getUuid(), + deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(), + deliveryPointGoal.getPosition().getZ()); + } + } + + public static void onPlayerVehicleExit(Player player, Vehicle vehicle, int seatId) { + if(seatId == 1) vehicle.setEngineOn(false); + + // Remove waypoints for items in storage + for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { + if(wearableWorldObject.getDeliveryPointGoal() == null) continue; + DeliveryPointGoal deliveryPointGoal = wearableWorldObject.getDeliveryPointGoal(); + player.callRemoteEvent("Map:RemoveWaypoint", deliveryPointGoal.getWearableWorldObject().getUuid()); + } + } + + public static Vehicle getNearestVehicle(Vector position) { + Vehicle nearestVehicle = null; + for(Vehicle vehicle : Onset.getVehicles()) { + try { + if(nearestVehicle == null) { + nearestVehicle = vehicle; + } + else { + if(vehicle.getLocation().distance(position) < nearestVehicle.getLocation().distance(position)) { + nearestVehicle = vehicle; + } + } + }catch (Exception ex) { + continue; + } + } + return nearestVehicle; + } + + public static boolean canStoreWorldWearableObject(Vehicle vehicle) { + if(vehicle.getModel() == 22 || vehicle.getModel() == 23) + return true; + return false; + } + + public static int getInteractionDistance(Vehicle vehicle) { + if(vehicle.getModel() == 22 || vehicle.getModel() == 23) + return 500; + if(vehicle.getModel() == 9 || vehicle.getModel() == 28) + return 700; + return 400; + } + + + public static boolean storeWorldWearableObject(Vehicle vehicle, WearableWorldObject wearableWorldObject) { + VehicleStoreLayout vehicleStoreLayout = vehicleStoreLayouts.stream() + .filter(x -> x.isAdaptedForModel(vehicle.getModel())).findFirst().orElse(null); + if(vehicleStoreLayout == null) return false; + return vehicleStoreLayout.store(vehicle, wearableWorldObject); + } + + public static ArrayList getVehicleWearableObjects(Vehicle vehicle) { + return new ArrayList<>(JobManager.getWearableWorldObjects().stream() + .filter(x -> x.getVehicleUUID() != null) + .filter(x -> x.getVehicleUUID().equals(vehicle.getPropertyString("uuid"))) + .collect(Collectors.toList())); + } + + public static boolean handleVehicleChestStorageRequest(Player player) { + if(player.getVehicle() != null) return false; + Vehicle vehicle = getNearestVehicle(player.getLocation()); + if(vehicle == null) return false; + if(vehicle.getModel() == 33 || vehicle.getModel() == 34) return false; + if(vehicle.getLocation().distance(player.getLocation()) > getInteractionDistance(vehicle)) return false; + + Account account = WorldManager.getPlayerAccount(player); + try{ + if(vehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); + return true; + } + if(!UIStateManager.handleUIToogle(player, "vchest")) return true; + } catch (Exception ex) { + return false; + } + for(WearableWorldObject wearableWorldObject : getVehicleWearableObjects(vehicle)) { + try { + player.callRemoteEvent("GlobalUI:DispatchToUI", + new Gson().toJson(new AddVChestItemPayload(wearableWorldObject.getUuid(), wearableWorldObject.getModelId(), ""))); + }catch (Exception ex) { + + } + } + return true; + } + + public static void handleRequestWearFromVehicleChest(Player player, String uuid) { + if(player.getVehicle() != null) return; + Vehicle vehicle = getNearestVehicle(player.getLocation()); + if(vehicle.getLocation().distance(player.getLocation()) > VehicleManager.getInteractionDistance(vehicle)) return; + + Account account = WorldManager.getPlayerAccount(player); + if(vehicle.getPropertyInt("locked") == 1) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.locked")); + return; + } + WearableWorldObject wearableWorldObject = getVehicleWearableObjects(vehicle).stream() + .filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null); + if(wearableWorldObject == null) return; + UIStateManager.handleUIToogle(player, "vchest"); + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "action.vehicle.wearSomething")); + return; + } + + wearableWorldObject.removeFromVehicle(); + wearableWorldObject.requestWear(player); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/WeaponManager.java b/src/main/java/fr/yuki/yrpf/manager/WeaponManager.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/manager/WeaponManager.java rename to src/main/java/fr/yuki/yrpf/manager/WeaponManager.java index 7c77dff..b3b7b6b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/WeaponManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/WeaponManager.java @@ -1,75 +1,71 @@ -package fr.yuki.YukiRPFramework.manager; - -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.model.ItemTemplate; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Weapon; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; -import java.util.HashMap; - -public class WeaponManager { - public static boolean requestEquipWeapon(Player player, int weaponId) { - HashMap weapons = getPlayerWeapons(player); - int slot = -1; - if(weapons.get(1).getModel() == 1) { - slot = 1; - } else if(weapons.get(2).getModel() == 1) { - slot = 2; - } else if(weapons.get(3).getModel() == 1) { - slot = 3; - } - if(slot == -1) return false; - Onset.print("Set weapon slot=" + slot + ", weaponId=" + weaponId); - player.setWeapon(slot, weaponId, 0, true, false); - WorldManager.savePlayer(player); - return true; - } - - public static HashMap getPlayerWeapons(Player player) { - HashMap weapons = new HashMap<>(); - weapons.put(1, player.getWeapon(1)); - weapons.put(2, player.getWeapon(2)); - weapons.put(3, player.getWeapon(3)); - return weapons; - } - - public static boolean fillWeaponWithAmmo(Player player) { - Weapon weapon = player.getWeapon(player.getWeaponSlot()); - if(weapon.getModel() == 1) return false; - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() - .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); - if(itemTemplate == null) return false; - weapon.setAmmo(weapon.getAmmo() + itemTemplate.getAmmoPerRecharge()); - player.setWeapon(player.getWeaponSlot(), weapon.getModel(), weapon.getAmmo(), true, false); - WorldManager.savePlayer(player); - return true; - } - - public static void storeWeapon(Player player) { - Weapon weapon = player.getWeapon(player.getWeaponSlot()); - if(weapon.getModel() == 1) return; - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() - .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); - if(itemTemplate == null) return; - - if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), 1, true) == null) return; - int ammoBack = (weapon.getAmmo() - (weapon.getAmmo() % itemTemplate.getAmmoPerRecharge())) / itemTemplate.getAmmoPerRecharge(); - player.setWeapon(player.getWeaponSlot(), 1, 0, true, false); - WorldManager.savePlayer(player); - if(ammoBack == 0) return; - if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.AMMO.id, ammoBack, false) == null) { - return; - } - } - - public static void clearWeapons(Player player) { - player.setWeapon(1, 1, 0, true, false); - player.setWeapon(2, 1, 0, true, false); - player.setWeapon(3, 1, 0, true, false); - } -} +package fr.yuki.yrpf.manager; + +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.model.ItemTemplate; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Weapon; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.HashMap; + +public class WeaponManager { + public static boolean requestEquipWeapon(Player player, int weaponId) { + HashMap weapons = getPlayerWeapons(player); + int slot = -1; + if(weapons.get(1).getModel() == 1) { + slot = 1; + } else if(weapons.get(2).getModel() == 1) { + slot = 2; + } else if(weapons.get(3).getModel() == 1) { + slot = 3; + } + if(slot == -1) return false; + Onset.print("Set weapon slot=" + slot + ", weaponId=" + weaponId); + player.setWeapon(slot, weaponId, 0, true, false); + WorldManager.savePlayer(player); + return true; + } + + public static HashMap getPlayerWeapons(Player player) { + HashMap weapons = new HashMap<>(); + weapons.put(1, player.getWeapon(1)); + weapons.put(2, player.getWeapon(2)); + weapons.put(3, player.getWeapon(3)); + return weapons; + } + + public static boolean fillWeaponWithAmmo(Player player) { + Weapon weapon = player.getWeapon(player.getWeaponSlot()); + if(weapon.getModel() == 1) return false; + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() + .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); + if(itemTemplate == null) return false; + weapon.setAmmo(weapon.getAmmo() + itemTemplate.getAmmoPerRecharge()); + player.setWeapon(player.getWeaponSlot(), weapon.getModel(), weapon.getAmmo(), true, false); + WorldManager.savePlayer(player); + return true; + } + + public static void storeWeapon(Player player) { + Weapon weapon = player.getWeapon(player.getWeaponSlot()); + if(weapon.getModel() == 1) return; + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().values().stream() + .filter(x -> x.getWeaponId() == weapon.getModel()).findFirst().orElse(null); + if(itemTemplate == null) return; + + if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), 1, true) == null) return; + int ammoBack = (weapon.getAmmo() - (weapon.getAmmo() % itemTemplate.getAmmoPerRecharge())) / itemTemplate.getAmmoPerRecharge(); + player.setWeapon(player.getWeaponSlot(), 1, 0, true, false); + WorldManager.savePlayer(player); + if(ammoBack == 0) return; + if(InventoryManager.addItemToPlayer(player, ItemTemplateEnum.AMMO.id, ammoBack, false) == null) { + return; + } + } + + public static void clearWeapons(Player player) { + player.setWeapon(1, 1, 0, true, false); + player.setWeapon(2, 1, 0, true, false); + player.setWeapon(3, 1, 0, true, false); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java b/src/main/java/fr/yuki/yrpf/manager/WorldManager.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java rename to src/main/java/fr/yuki/yrpf/manager/WorldManager.java index 6ef4fce..8fc8a32 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/manager/WorldManager.java +++ b/src/main/java/fr/yuki/yrpf/manager/WorldManager.java @@ -1,635 +1,606 @@ -package fr.yuki.YukiRPFramework.manager; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; -import fr.yuki.YukiRPFramework.character.CharacterLoopAnimation; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.dao.*; -import fr.yuki.YukiRPFramework.enums.ItemTemplateEnum; -import fr.yuki.YukiRPFramework.enums.ToastTypeEnum; -import fr.yuki.YukiRPFramework.i18n.I18n; -import fr.yuki.YukiRPFramework.inventory.Inventory; -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.job.DeliveryPointConfig; -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance; -import fr.yuki.YukiRPFramework.job.placementObject.GenericPlacementInstance; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.*; -import fr.yuki.YukiRPFramework.net.payload.AddSellerItemPayload; -import fr.yuki.YukiRPFramework.net.payload.AddToastPayload; -import fr.yuki.YukiRPFramework.net.payload.BuySellItemRequestPayload; -import fr.yuki.YukiRPFramework.net.payload.SetWindowStatePayload; -import fr.yuki.YukiRPFramework.ui.UIState; -import fr.yuki.YukiRPFramework.utils.ServerConfig; -import fr.yuki.YukiRPFramework.world.RestrictedZone; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Location; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.*; -import net.onfirenetwork.onsetjava.enums.Animation; - -import java.io.*; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; - -public class WorldManager { - private static ServerConfig serverConfig; - private static HashMap accounts; - private static ArrayList atms; - private static ArrayList garages; - private static ArrayList vehicleSellers; - private static ArrayList groundItems; - private static ArrayList sellers; - private static ArrayList restrictedZones; - private static ArrayList outfitPoints; - - /** - * Init the world manager - * @throws SQLException - */ - public static void init() throws SQLException, IOException { - accounts = new HashMap<>(); - groundItems = new ArrayList<>(); - restrictedZones = new ArrayList<>(); - - // Load atms - atms = ATMDAO.loadATMs(); - spawnATMs(); - Onset.print("Loaded " + atms.size() + " atm(s) from the database"); - - // Load garages - garages = GarageDAO.loadGarages(); - spawnGarages(); - Onset.print("Loaded " + garages.size() + " garage(s) from the database"); - - // Load vehicle sellers - vehicleSellers = VehicleSellerDAO.loadVehicleSellers(); - Onset.print("Loaded " + vehicleSellers.size() + " vehicle seller(s) from the database"); - spawnVehicleSellers(); - - // Load sellers - sellers = SellerDAO.loadSellers(); - Onset.print("Loaded " + sellers.size() + " seller(s) from the database"); - spawnSellers(); - - // Load outfit points - outfitPoints = OutfitPointDAO.loadOutfitPoint(); - Onset.print("Loaded " + outfitPoints.size() + " outfit point(s) from the database"); - spawnOutfitPoints(); - } - - public static void initServerConfig() throws IOException { - new File("yrpf").mkdir(); - if(new File("yrpf/server_config.json").exists()) { - serverConfig = new Gson().fromJson(new FileReader("yrpf/server_config.json"), ServerConfig.class); - } else { - serverConfig = new ServerConfig(); - new File("yrpf/server_config.json").createNewFile(); - FileWriter fileWriter = new FileWriter("yrpf/server_config.json"); - fileWriter.write(new Gson().toJson(serverConfig)); - fileWriter.close(); - } - } - - private static void spawnOutfitPoints() { - for(OutfitPoint outfitPoint : outfitPoints) { - try { - Pickup pickup = Onset.getServer().createPickup(new Vector(outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ()-100), 336); - pickup.setScale(new Vector(1,1,0.1d)); - pickup.setProperty("color", "5314b8", true); - Onset.getServer().createText3D("Changer de style [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ() + 150, 0 , 0 ,0); - } - catch(Exception ex) { - Onset.print("Can't spawn the atm: " + ex.toString()); - } - } - } - - /** - * Spanw atms in the world - */ - private static void spawnATMs() { - for(ATM atm : atms) { - try { - Pickup pickup = Onset.getServer().createPickup(new Vector(atm.getX(), atm.getY(), atm.getZ()-100), 336); - pickup.setScale(new Vector(1,1,0.1d)); - pickup.setProperty("color", "02e630", true); - atm.setPickup(pickup); - Onset.getServer().createText3D("ATM [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, atm.getX(), atm.getY(), atm.getZ() + 150, 0 , 0 ,0); - - GameMapMarker mapMarker = new GameMapMarker(); - mapMarker.setType("atm"); - mapMarker.setIcon("icon_atm"); - mapMarker.setPosition(new ArrayList<>()); - mapMarker.getPosition().add((int)atm.getY()); - mapMarker.getPosition().add((int)atm.getX()); - MapManager.getMapConfig().getMarkers().add(mapMarker); - } - catch(Exception ex) { - Onset.print("Can't spawn the atm: " + ex.toString()); - } - } - } - - /** - * Spawns garages in the world - */ - private static void spawnGarages() { - for(Garage garage : garages) { - Pickup pickup = Onset.getServer().createPickup(new Vector(garage.getX(), garage.getY(), garage.getZ()-100), 336); - pickup.setScale(new Vector(3,3,0.1d)); - pickup.setProperty("color", "6500bd", true); - Onset.getServer().createText3D("Garage [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, garage.getX(), garage.getY(), garage.getZ() + 150, 0 , 0 ,0); - } - } - - private static void spawnVehicleSellers() { - for(VehicleSeller vehicleSeller : vehicleSellers) { - Pickup pickup = Onset.getServer().createPickup(new Vector(vehicleSeller.getX(), vehicleSeller.getY(), - vehicleSeller.getZ()-100), 336); - pickup.setScale(new Vector(1,1,0.1d)); - pickup.setProperty("color", "ffa600", true); - Onset.getServer().createText3D("Vendeur " + vehicleSeller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, vehicleSeller.getX(), - vehicleSeller.getY(), vehicleSeller.getZ() + 150, 0 , 0 ,0); - NPC npc = Onset.getServer().createNPC(new Location(vehicleSeller.getX(), vehicleSeller.getY(), - vehicleSeller.getZ(), vehicleSeller.getH())); - npc.setRespawnTime(1); - npc.setHealth(999999); - npc.setProperty("clothing", vehicleSeller.getNpcClothing(), true); - } - } - - public static void spawnSellers() { - for(Seller seller : sellers) { - Onset.getServer().createText3D(seller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, seller.getX(), - seller.getY(), seller.getZ() + 150, 0 , 0 ,0); - NPC npc = Onset.getServer().createNPC(new Location(seller.getX(), seller.getY(), - seller.getZ(), seller.getH())); - npc.setRespawnTime(1); - npc.setHealth(999999); - npc.setProperty("clothing", seller.getNpcClothing(), true); - } - } - - /** - * Find a player by the steam id - * @param steamId The steam id - * @return The player - */ - public static Player findPlayerBySteamId(final String steamId) { - for(Player p : Onset.getPlayers()) { - if(p.getSteamId().equals(steamId)) return p; - } - return null; - } - - /** - * Find a player by the account id - * @param accountId The account id - * @return The player - */ - public static Player findPlayerByAccountId(int accountId) { - for (Player p : Onset.getPlayers()) { - try { - if(CharacterManager.getCharacterStateByPlayer(p) == null) continue; - if(p.getProperty("accountId") == null) continue; - if(p.getPropertyInt("accountId") == accountId) { - return p; - } - } - catch (Exception ex) {} - } - return null; - } - - /** - * Handle the interaction request and send it to all interactible elements - * @param player The player - */ - public static void handleInteract(Player player) { - try { - if(CharacterManager.getCharacterStateByPlayer(player).isDead()) { - return; - } - - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(!state.canInteract()) return; - - // Check weared object - if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null && player.getVehicle() == null) { - JobManager.handleUnwearObject(player); - return; - } - - if(ATMManager.handleATMInteract(player)) return; - if(handleOutfitPointsInteract(player)) return; - if(GarageManager.handleVSellerInteract(player)) return; - if(player.getVehicle() == null) - if(handlePickupGroundItem(player)) return; - if(FuelManager.interactFuelPoint(player, false)) return; - if(JobManager.tryToHarvest(player)) return; - if(player.getVehicle() == null) { - if(VehicleManager.handleVehicleChestStorageRequest(player)) return; - } - if(GarageManager.handleGarageInteract(player)) return; - if(player.getVehicle() == null){ - if(JobManager.requestVehicleRental(player)) return; - } else { - if(JobManager.getNearbyVehicleRental(player) != null) { - JobManager.destroyRentalVehiclesForPlayer(player); - return; - } - } - if(player.getVehicle() == null) - if(JobManager.handleSellJobNpcInventoryItem(player)) return; - if(player.getVehicle() == null) if(JobManager.handleJobOutfitRequest(player)) return; - if(player.getVehicle() == null) if(handleSellerInteract(player)) return; - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - public static boolean handleOutfitPointsInteract(Player player) { - OutfitPoint outfitPoint = getNearbyOutfitPoint(player); - if(outfitPoint == null) return false; - UIStateManager.handleUIToogle(player, "customOutfit"); - return true; - } - - /** - * Save the player account (position, inventory ..) - * @param player The player - */ - public static void savePlayer(Player player) { - try { - Account account = getPlayerAccount(player); - AccountDAO.updateAccount(account, player); - } catch (Exception ex) { - Onset.print("Can't save the account: " + ex.toString()); - } - } - - public static GroundItem getNearestGroundItem(Vector position) { - GroundItem nearestGroundItem = null; - for(GroundItem groundItem : groundItems) { - try { - if(nearestGroundItem == null) { - if(groundItem.getPosition().distance(position) < 150) { - nearestGroundItem = groundItem; - } - } - else { - if(groundItem.getPosition().distance(position) < nearestGroundItem.getPosition().distance(position)) { - nearestGroundItem = groundItem; - } - } - }catch (Exception ex) { - continue; - } - } - return nearestGroundItem; - } - - public static boolean handlePickupGroundItem(Player player) { - try { - GroundItem groundItem = getNearestGroundItem(player.getLocation()); - if(groundItem == null) return false; - CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); - if(!characterState.canInteract()) return false; - groundItem.pickByPlayer(player); - return true; - } catch (Exception ex) { - Onset.print("Can't pick up the object on the ground: " + ex.toString()); - return false; - } - } - - public static boolean handleSellerInteract(Player player) { - for(Seller seller : sellers) { - if(seller.isNear(player)) { - openSeller(player, seller); - return true; - } - } - return false; - } - - public static OutfitPoint getNearbyOutfitPoint(Player player) { - for(OutfitPoint outfitPoint : outfitPoints) { - if(outfitPoint.isNear(player)) { - return outfitPoint; - } - } - return null; - } - - public static Seller getNearbySeller(Player player) { - for(Seller seller : sellers) { - if(seller.isNear(player)) { - return seller; - } - } - return null; - } - - public static void openSeller(Player player, Seller seller) { - // Check job - if(!seller.getJobRequired().equals("")) { - Account account = WorldManager.getPlayerAccount(player); - Job job = JobManager.getJobs().values().stream().filter(x -> x.getJobType().equals(seller.getJobRequired())).findFirst().orElse(null); - if(job == null) return; - - // Check level and whitelist level - if(job.isWhitelisted()) { - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) - .findFirst().orElse(null); - if(accountJobWhitelist == null) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return; - } - if(accountJobWhitelist.getJobLevel() < seller.getJobLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return; - } - } else { - ArrayList characterJobLevels = account.decodeCharacterJob(); - CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(seller.getJobRequired())).findFirst().orElse(null); - if(characterJobLevel == null) return; - if(characterJobLevel.getJobLevel().getLevel() < seller.getJobLevelRequired()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); - return; - } - } - } - - if(!UIStateManager.handleUIToogle(player, "seller")) { - CharacterManager.setCharacterFreeze(player, false); - return; - } - - CharacterManager.setCharacterFreeze(player, true); - for(SellerItem sellerItem : seller.decodeItems()) { - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddSellerItemPayload - (String.valueOf(sellerItem.getId()), itemTemplate.getName(), sellerItem.getPrice()))); - } - } - - public static void handleBuySellItemSeller(Player player, BuySellItemRequestPayload payload) { - Seller seller = getNearbySeller(player); - if(seller == null) return; - SellerItem sellerItem = seller.decodeItems().stream().filter(x -> x.getId() == Integer.parseInt(payload.getId())) - .findFirst().orElse(null); - if(sellerItem == null) return; - if(payload.getQuantity() <= 0) return; - - Account account = WorldManager.getPlayerAccount(player); - - ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); - Inventory inventory = InventoryManager.getMainInventory(player); - if(sellerItem.getPrice() >= 0) { - // Buy - int totalPrice = sellerItem.getPrice() * payload.getQuantity(); - if(inventory.getCashAmount() < totalPrice) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.seller.no_enought_money_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - return; - } - if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), payload.getQuantity(), true) == null) { - return; - } - inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), totalPrice); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.seller.success_buy", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - } else { - // Sell - InventoryItem inventoryItem = inventory.getItemByType(payload.getId()); - if(inventoryItem == null) return; - if(inventoryItem.getAmount() < payload.getQuantity()) { - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, - I18n.t(account.getLang(), "toast.seller.no_enought_item_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - return; - } - int totalPrice = (-(sellerItem.getPrice())) * payload.getQuantity(); - inventory.removeItem(inventoryItem, payload.getQuantity()); - InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, totalPrice, false); - UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, - I18n.t(account.getLang(), "toast.seller.sell_success", String.valueOf(payload.getQuantity()),itemTemplate.getName())); - } - WorldManager.savePlayer(player); - } - - public static void handleObjectRequestPlacement(Player player) { - UIStateManager.handleUIToogle(player, "statewindow"); - } - - public static void handleObjectEditPlacementCancel(Player player) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state == null) return; - if(state.getCurrentObjectPlacementInstance() == null) { - return; - } - Account account = WorldManager.getPlayerAccount(player); - - if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); - ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); - objectPlacementInstance.destroy(); - state.setCurrentObjectPlacementInstance(null); - Onset.print("Cancel placement of the object instance modelId="+objectPlacementInstance.getModelId() - + " uuid=" + objectPlacementInstance.getUuid()); - UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.placement.cancel_placement")); - } - - public static void handleObjectPlacementDone(Player player, Vector position, Vector rotation) { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state == null) return; - if(state.getCurrentObjectPlacementInstance() == null) { - Onset.print("Can't cancel placement, there is instance for the player in the state"); - return; - } - House house = HouseManager.getHouseAtLocation(position); - Account account = WorldManager.getPlayerAccount(player); - if(house == null) { - handleObjectEditPlacementCancel(player); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); - return; - } - if(!HouseManager.canBuildInHouse(player, house)) { - handleObjectEditPlacementCancel(player); - UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); - return; - } - - // Remove interface - if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); - ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); - objectPlacementInstance.destroy(); - state.setCurrentObjectPlacementInstance(null); - objectPlacementInstance.onPlacementDone(player, position, rotation); - } - - public static void handleEditExistingPlacement(Player player, int houseItemId) throws SQLException { - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - if(state == null) return; - if(state.getCurrentObjectPlacementInstance() != null) { - return; - } - House house = HouseManager.getHouseAtLocation(player.getLocation()); - Account account = WorldManager.getPlayerAccount(player); - if(house == null) return; - if(!HouseManager.canBuildInHouse(player, house)) - { - return; - } - HouseItemObject houseItemObject = house.getHouseItemObjects().stream() - .filter(x -> x.getId() == houseItemId).findFirst().orElse(null); - if(houseItemObject == null) return; - - houseItemObject.destroy(); - HouseItemDAO.deleteHouseItem(houseItemObject); - - ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(houseItemObject.getPosition(), - houseItemObject.getModelId(), 0); - state.setCurrentObjectPlacementInstance(objectPlacementInstance); - objectPlacementInstance.spawn(); - objectPlacementInstance.setEditableBy(player); - } - - public static void cuffPlayer(Player player) { - if(player.getVehicle() != null) return; - CharacterState state = CharacterManager.getCharacterStateByPlayer(player); - - if(state.isCuffed()) { - state.setCuffed(false); - player.setAnimation(Animation.STOP); - player.setProperty("cuffed", 0, true); - SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); - } else { - if(!state.canInteract()) { - return; - } - SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); - state.setCuffed(true); - player.setAnimation(Animation.CUFF); - player.setProperty("cuffed", 1, true); - } - } - - public static void revive(Player player, Player target) { - CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); - if(!targetState.isDead()) return; - CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.REVIVE, - 5000, 2, "sounds/defibrilator.mp3"); - characterLoopAnimation.start(); - CharacterManager.setCharacterFreeze(player, true); - CharacterManager.setCharacterFreeze(target, true); - Onset.delay(10000, () -> { - - targetState.setDead(false); - Account account = WorldManager.getPlayerAccount(target); - account.setIsDead(0); - Location location = target.getLocationAndHeading(); - account.setSaveX(location.getX()); - account.setSaveY(location.getY()); - account.setSaveZ(location.getZ()); - account.setSaveH(location.getHeading()); - target.setRespawnTime(100); - - target.setRagdoll(false); - target.setHealth(100); - CharacterManager.setCharacterStyle(target); - WorldManager.savePlayer(target); - UIStateManager.handleUIToogle(target, "death"); - - characterLoopAnimation.stop(); - Onset.delay(500, () -> { - player.setAnimation(Animation.STOP); - target.setAnimation(Animation.PUSHUP_END); - CharacterManager.setCharacterFreeze(player, false); - CharacterManager.setCharacterFreeze(target, false); - }); - }); - } - - /** - * Get the account for the player - * @param player The player - * @return The account - */ - public static Account getPlayerAccount(Player player) { - return accounts.get(player.getPropertyInt("accountId")); - } - - public static Player getPlayerByPhoneNumber(String phoneNumber) { - for(Player player : Onset.getPlayers()) { - Account account = getPlayerAccount(player); - if(account.getPhoneNumber().equals(phoneNumber)) return player; - } - return null; - } - - public static ArrayList getAtms() { - return atms; - } - - public static HashMap getAccounts() { - return accounts; - } - - public static ArrayList getGarages() { - return garages; - } - - public static ArrayList getVehicleSellers() { - return vehicleSellers; - } - - public static ServerConfig getServerConfig() { - return serverConfig; - } - - public static ArrayList getGroundItems() { - return groundItems; - } - - public static Player getNearestPlayer(Player player) { - Player search = null; - double currentDistance = 99999; - for(Player p : Onset.getPlayers()) { - try { - if(p.getId() == player.getId()) continue;; - if(p.getLocation().distance(player.getLocation()) < currentDistance) { - search = p; - currentDistance = p.getLocation().distance(player.getLocation()); - } - }catch (Exception ex) { - continue; - } - } - return search; - } - - public static Door getNearestDoor(Vector position) { - Door search = null; - double currentDistance = 99999; - for(Door d : Onset.getDoors()) { - try { - if(d.getLocation().distance(position) < currentDistance) { - search = d; - currentDistance = d.getLocation().distance(position); - } - }catch (Exception ex) { - continue; - } - } - return search; - } - - public static ArrayList getRestrictedZones() { - return restrictedZones; - } -} +package fr.yuki.yrpf.manager; + +import com.google.gson.Gson; +import eu.bebendorf.ajorm.Repo; +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterLoopAnimation; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.enums.ItemTemplateEnum; +import fr.yuki.yrpf.enums.ToastTypeEnum; +import fr.yuki.yrpf.i18n.I18n; +import fr.yuki.yrpf.inventory.Inventory; +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.ObjectPlacementInstance; +import fr.yuki.yrpf.job.placementObject.GenericPlacementInstance; +import fr.yuki.yrpf.model.*; +import fr.yuki.yrpf.net.payload.AddSellerItemPayload; +import fr.yuki.yrpf.net.payload.BuySellItemRequestPayload; +import fr.yuki.yrpf.utils.ServerConfig; +import fr.yuki.yrpf.world.RestrictedZone; +import lombok.Getter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.*; +import net.onfirenetwork.onsetjava.enums.Animation; + +import java.io.*; +import java.sql.SQLException; +import java.util.*; + +public class WorldManager { + @Getter + private static ServerConfig serverConfig; + @Getter + private static Map accounts; + @Getter + private static List atms; + @Getter + private static List garages; + @Getter + private static List vehicleSellers; + @Getter + private static List groundItems; + @Getter + private static List sellers; + @Getter + private static List restrictedZones; + @Getter + private static List outfitPoints; + + /** + * Init the world manager + * @throws SQLException + */ + public static void init() throws SQLException, IOException { + accounts = new HashMap<>(); + groundItems = new ArrayList<>(); + restrictedZones = new ArrayList<>(); + + // Load atms + atms = Repo.get(ATM.class).all(); + spawnATMs(); + Onset.print("Loaded " + atms.size() + " atm(s) from the database"); + + // Load garages + garages = Repo.get(Garage.class).all(); + spawnGarages(); + Onset.print("Loaded " + garages.size() + " garage(s) from the database"); + + // Load vehicle sellers + vehicleSellers = Repo.get(VehicleSeller.class).all(); + Onset.print("Loaded " + vehicleSellers.size() + " vehicle seller(s) from the database"); + spawnVehicleSellers(); + + // Load sellers + sellers = Repo.get(Seller.class).all(); + Onset.print("Loaded " + sellers.size() + " seller(s) from the database"); + spawnSellers(); + + // Load outfit points + outfitPoints = Repo.get(OutfitPoint.class).all(); + Onset.print("Loaded " + outfitPoints.size() + " outfit point(s) from the database"); + spawnOutfitPoints(); + } + + public static void initServerConfig() throws IOException { + new File("yrpf").mkdir(); + if(new File("yrpf/server_config.json").exists()) { + serverConfig = new Gson().fromJson(new FileReader("yrpf/server_config.json"), ServerConfig.class); + } else { + serverConfig = new ServerConfig(); + new File("yrpf/server_config.json").createNewFile(); + FileWriter fileWriter = new FileWriter("yrpf/server_config.json"); + fileWriter.write(new Gson().toJson(serverConfig)); + fileWriter.close(); + } + } + + private static void spawnOutfitPoints() { + for(OutfitPoint outfitPoint : outfitPoints) { + try { + Pickup pickup = Onset.getServer().createPickup(new Vector(outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ()-100), 336); + pickup.setScale(new Vector(1,1,0.1d)); + pickup.setProperty("color", "5314b8", true); + Onset.getServer().createText3D("Changer de style [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, outfitPoint.getX(), outfitPoint.getY(), outfitPoint.getZ() + 150, 0 , 0 ,0); + } + catch(Exception ex) { + Onset.print("Can't spawn the atm: " + ex.toString()); + } + } + } + + /** + * Spanw atms in the world + */ + private static void spawnATMs() { + for(ATM atm : atms) { + try { + Pickup pickup = Onset.getServer().createPickup(new Vector(atm.getX(), atm.getY(), atm.getZ()-100), 336); + pickup.setScale(new Vector(1,1,0.1d)); + pickup.setProperty("color", "02e630", true); + atm.setPickup(pickup); + Onset.getServer().createText3D("ATM [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 15, atm.getX(), atm.getY(), atm.getZ() + 150, 0 , 0 ,0); + + GameMapMarker mapMarker = new GameMapMarker(); + mapMarker.setType("atm"); + mapMarker.setIcon("icon_atm"); + mapMarker.setPosition(new ArrayList<>()); + mapMarker.getPosition().add((int)atm.getY()); + mapMarker.getPosition().add((int)atm.getX()); + MapManager.getMapConfig().getMarkers().add(mapMarker); + } + catch(Exception ex) { + Onset.print("Can't spawn the atm: " + ex.toString()); + } + } + } + + /** + * Spawns garages in the world + */ + private static void spawnGarages() { + for(Garage garage : garages) { + Pickup pickup = Onset.getServer().createPickup(new Vector(garage.getX(), garage.getY(), garage.getZ()-100), 336); + pickup.setScale(new Vector(3,3,0.1d)); + pickup.setProperty("color", "6500bd", true); + Onset.getServer().createText3D("Garage [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, garage.getX(), garage.getY(), garage.getZ() + 150, 0 , 0 ,0); + } + } + + private static void spawnVehicleSellers() { + for(VehicleSeller vehicleSeller : vehicleSellers) { + Pickup pickup = Onset.getServer().createPickup(new Vector(vehicleSeller.getX(), vehicleSeller.getY(), + vehicleSeller.getZ()-100), 336); + pickup.setScale(new Vector(1,1,0.1d)); + pickup.setProperty("color", "ffa600", true); + Onset.getServer().createText3D("Vendeur " + vehicleSeller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, vehicleSeller.getX(), + vehicleSeller.getY(), vehicleSeller.getZ() + 150, 0 , 0 ,0); + NPC npc = Onset.getServer().createNPC(new Location(vehicleSeller.getX(), vehicleSeller.getY(), + vehicleSeller.getZ(), vehicleSeller.getH())); + npc.setRespawnTime(1); + npc.setHealth(999999); + npc.setProperty("clothing", vehicleSeller.getNpcClothing(), true); + } + } + + public static void spawnSellers() { + for(Seller seller : sellers) { + Onset.getServer().createText3D(seller.getName() + " [" + I18n.t(WorldManager.getServerConfig().getServerLanguage(), "ui.common.use") + "]", 20, seller.getX(), + seller.getY(), seller.getZ() + 150, 0 , 0 ,0); + NPC npc = Onset.getServer().createNPC(new Location(seller.getX(), seller.getY(), + seller.getZ(), seller.getH())); + npc.setRespawnTime(1); + npc.setHealth(999999); + npc.setProperty("clothing", seller.getNpcClothing(), true); + } + } + + /** + * Find a player by the steam id + * @param steamId The steam id + * @return The player + */ + public static Player findPlayerBySteamId(final String steamId) { + for(Player p : Onset.getPlayers()) { + if(p.getSteamId().equals(steamId)) return p; + } + return null; + } + + /** + * Find a player by the account id + * @param accountId The account id + * @return The player + */ + public static Player findPlayerByAccountId(int accountId) { + for (Player p : Onset.getPlayers()) { + try { + if(CharacterManager.getCharacterStateByPlayer(p) == null) continue; + if(p.getProperty("accountId") == null) continue; + if(p.getPropertyInt("accountId") == accountId) { + return p; + } + } + catch (Exception ex) {} + } + return null; + } + + /** + * Handle the interaction request and send it to all interactible elements + * @param player The player + */ + public static void handleInteract(Player player) { + try { + if(CharacterManager.getCharacterStateByPlayer(player).isDead()) { + return; + } + + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(!state.canInteract()) return; + + // Check weared object + if(CharacterManager.getCharacterStateByPlayer(player).getWearableWorldObject() != null && player.getVehicle() == null) { + JobManager.handleUnwearObject(player); + return; + } + + if(ATMManager.handleATMInteract(player)) return; + if(handleOutfitPointsInteract(player)) return; + if(GarageManager.handleVSellerInteract(player)) return; + if(player.getVehicle() == null) + if(handlePickupGroundItem(player)) return; + if(FuelManager.interactFuelPoint(player, false)) return; + if(JobManager.tryToHarvest(player)) return; + if(player.getVehicle() == null) { + if(VehicleManager.handleVehicleChestStorageRequest(player)) return; + } + if(GarageManager.handleGarageInteract(player)) return; + if(player.getVehicle() == null){ + if(JobManager.requestVehicleRental(player)) return; + } else { + if(JobManager.getNearbyVehicleRental(player) != null) { + JobManager.destroyRentalVehiclesForPlayer(player); + return; + } + } + if(player.getVehicle() == null) + if(JobManager.handleSellJobNpcInventoryItem(player)) return; + if(player.getVehicle() == null) if(JobManager.handleJobOutfitRequest(player)) return; + if(player.getVehicle() == null) if(handleSellerInteract(player)) return; + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public static boolean handleOutfitPointsInteract(Player player) { + OutfitPoint outfitPoint = getNearbyOutfitPoint(player); + if(outfitPoint == null) return false; + UIStateManager.handleUIToogle(player, "customOutfit"); + return true; + } + + /** + * Save the player account (position, inventory ..) + * @param player The player + */ + public static void savePlayer(Player player) { + Account account = getPlayerAccount(player); + account.save(player); + } + + public static GroundItem getNearestGroundItem(Vector position) { + GroundItem nearestGroundItem = null; + for(GroundItem groundItem : groundItems) { + try { + if(nearestGroundItem == null) { + if(groundItem.getPosition().distance(position) < 150) { + nearestGroundItem = groundItem; + } + } + else { + if(groundItem.getPosition().distance(position) < nearestGroundItem.getPosition().distance(position)) { + nearestGroundItem = groundItem; + } + } + }catch (Exception ex) { + continue; + } + } + return nearestGroundItem; + } + + public static boolean handlePickupGroundItem(Player player) { + try { + GroundItem groundItem = getNearestGroundItem(player.getLocation()); + if(groundItem == null) return false; + CharacterState characterState = CharacterManager.getCharacterStateByPlayer(player); + if(!characterState.canInteract()) return false; + groundItem.pickByPlayer(player); + return true; + } catch (Exception ex) { + Onset.print("Can't pick up the object on the ground: " + ex.toString()); + return false; + } + } + + public static boolean handleSellerInteract(Player player) { + for(Seller seller : sellers) { + if(seller.isNear(player)) { + openSeller(player, seller); + return true; + } + } + return false; + } + + public static OutfitPoint getNearbyOutfitPoint(Player player) { + for(OutfitPoint outfitPoint : outfitPoints) { + if(outfitPoint.isNear(player)) { + return outfitPoint; + } + } + return null; + } + + public static Seller getNearbySeller(Player player) { + for(Seller seller : sellers) { + if(seller.isNear(player)) { + return seller; + } + } + return null; + } + + public static void openSeller(Player player, Seller seller) { + // Check job + if(!seller.getJobRequired().equals("")) { + Account account = WorldManager.getPlayerAccount(player); + Job job = JobManager.getJobs().values().stream().filter(x -> x.getJobType().equals(seller.getJobRequired())).findFirst().orElse(null); + if(job == null) return; + + // Check level and whitelist level + if(job.isWhitelisted()) { + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(job.getJobType())) + .findFirst().orElse(null); + if(accountJobWhitelist == null) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return; + } + if(accountJobWhitelist.getJobLevel() < seller.getJobLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return; + } + } else { + ArrayList characterJobLevels = account.decodeCharacterJob(); + CharacterJobLevel characterJobLevel = characterJobLevels.stream().filter(x -> x.getJobId().equals(seller.getJobRequired())).findFirst().orElse(null); + if(characterJobLevel == null) return; + if(characterJobLevel.getJobLevel().getLevel() < seller.getJobLevelRequired()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.job.not_whitelisted")); + return; + } + } + } + + if(!UIStateManager.handleUIToogle(player, "seller")) { + CharacterManager.setCharacterFreeze(player, false); + return; + } + + CharacterManager.setCharacterFreeze(player, true); + for(SellerItem sellerItem : seller.decodeItems()) { + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new AddSellerItemPayload + (String.valueOf(sellerItem.getId()), itemTemplate.getName(), sellerItem.getPrice()))); + } + } + + public static void handleBuySellItemSeller(Player player, BuySellItemRequestPayload payload) { + Seller seller = getNearbySeller(player); + if(seller == null) return; + SellerItem sellerItem = seller.decodeItems().stream().filter(x -> x.getId() == Integer.parseInt(payload.getId())) + .findFirst().orElse(null); + if(sellerItem == null) return; + if(payload.getQuantity() <= 0) return; + + Account account = WorldManager.getPlayerAccount(player); + + ItemTemplate itemTemplate = InventoryManager.getItemTemplates().get(sellerItem.getId()); + Inventory inventory = InventoryManager.getMainInventory(player); + if(sellerItem.getPrice() >= 0) { + // Buy + int totalPrice = sellerItem.getPrice() * payload.getQuantity(); + if(inventory.getCashAmount() < totalPrice) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.seller.no_enought_money_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + return; + } + if(InventoryManager.addItemToPlayer(player, String.valueOf(itemTemplate.getId()), payload.getQuantity(), true) == null) { + return; + } + inventory.removeItem(inventory.getItemByType(ItemTemplateEnum.CASH.id), totalPrice); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.seller.success_buy", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + } else { + // Sell + InventoryItem inventoryItem = inventory.getItemByType(payload.getId()); + if(inventoryItem == null) return; + if(inventoryItem.getAmount() < payload.getQuantity()) { + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, + I18n.t(account.getLang(), "toast.seller.no_enought_item_on_me", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + return; + } + int totalPrice = (-(sellerItem.getPrice())) * payload.getQuantity(); + inventory.removeItem(inventoryItem, payload.getQuantity()); + InventoryManager.addItemToPlayer(player, ItemTemplateEnum.CASH.id, totalPrice, false); + UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, + I18n.t(account.getLang(), "toast.seller.sell_success", String.valueOf(payload.getQuantity()),itemTemplate.getName())); + } + WorldManager.savePlayer(player); + } + + public static void handleObjectRequestPlacement(Player player) { + UIStateManager.handleUIToogle(player, "statewindow"); + } + + public static void handleObjectEditPlacementCancel(Player player) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state == null) return; + if(state.getCurrentObjectPlacementInstance() == null) { + return; + } + Account account = WorldManager.getPlayerAccount(player); + + if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); + ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); + objectPlacementInstance.destroy(); + state.setCurrentObjectPlacementInstance(null); + Onset.print("Cancel placement of the object instance modelId="+objectPlacementInstance.getModelId() + + " uuid=" + objectPlacementInstance.getUuid()); + UIStateManager.sendNotification(player, ToastTypeEnum.WARN, I18n.t(account.getLang(), "toast.placement.cancel_placement")); + } + + public static void handleObjectPlacementDone(Player player, Vector position, Vector rotation) { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state == null) return; + if(state.getCurrentObjectPlacementInstance() == null) { + Onset.print("Can't cancel placement, there is instance for the player in the state"); + return; + } + House house = HouseManager.getHouseAtLocation(position); + Account account = WorldManager.getPlayerAccount(player); + if(house == null) { + handleObjectEditPlacementCancel(player); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); + return; + } + if(!HouseManager.canBuildInHouse(player, house)) { + handleObjectEditPlacementCancel(player); + UIStateManager.sendNotification(player, ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.need_to_be_inside")); + return; + } + + // Remove interface + if(state.getUiState().isStatewindow()) UIStateManager.handleUIToogle(player, "statewindow"); + ObjectPlacementInstance objectPlacementInstance = state.getCurrentObjectPlacementInstance(); + objectPlacementInstance.destroy(); + state.setCurrentObjectPlacementInstance(null); + objectPlacementInstance.onPlacementDone(player, position, rotation); + } + + public static void handleEditExistingPlacement(Player player, int houseItemId) throws SQLException { + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + if(state == null) return; + if(state.getCurrentObjectPlacementInstance() != null) { + return; + } + House house = HouseManager.getHouseAtLocation(player.getLocation()); + Account account = WorldManager.getPlayerAccount(player); + if(house == null) return; + if(!HouseManager.canBuildInHouse(player, house)) + { + return; + } + HouseItemObject houseItemObject = house.getHouseItemObjects().stream() + .filter(x -> x.getId() == houseItemId).findFirst().orElse(null); + if(houseItemObject == null) return; + + houseItemObject.destroy(); + houseItemObject.delete(); + + ObjectPlacementInstance objectPlacementInstance = new GenericPlacementInstance(houseItemObject.getPosition(), + houseItemObject.getModelId(), 0); + state.setCurrentObjectPlacementInstance(objectPlacementInstance); + objectPlacementInstance.spawn(); + objectPlacementInstance.setEditableBy(player); + } + + public static void cuffPlayer(Player player) { + if(player.getVehicle() != null) return; + CharacterState state = CharacterManager.getCharacterStateByPlayer(player); + + if(state.isCuffed()) { + state.setCuffed(false); + player.setAnimation(Animation.STOP); + player.setProperty("cuffed", 0, true); + SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); + } else { + if(!state.canInteract()) { + return; + } + SoundManager.playSound3D("sounds/hand_cuff.mp3", player.getLocation(), 500, 1); + state.setCuffed(true); + player.setAnimation(Animation.CUFF); + player.setProperty("cuffed", 1, true); + } + } + + public static void revive(Player player, Player target) { + CharacterState targetState = CharacterManager.getCharacterStateByPlayer(target); + if(!targetState.isDead()) return; + CharacterLoopAnimation characterLoopAnimation = new CharacterLoopAnimation(player, Animation.REVIVE, + 5000, 2, "sounds/defibrilator.mp3"); + characterLoopAnimation.start(); + CharacterManager.setCharacterFreeze(player, true); + CharacterManager.setCharacterFreeze(target, true); + Onset.delay(10000, () -> { + + targetState.setDead(false); + Account account = WorldManager.getPlayerAccount(target); + account.setDead(false); + Location location = target.getLocationAndHeading(); + account.setSaveX(location.getX()); + account.setSaveY(location.getY()); + account.setSaveZ(location.getZ()); + account.setSaveH(location.getHeading()); + target.setRespawnTime(100); + + target.setRagdoll(false); + target.setHealth(100); + CharacterManager.setCharacterStyle(target); + WorldManager.savePlayer(target); + UIStateManager.handleUIToogle(target, "death"); + + characterLoopAnimation.stop(); + Onset.delay(500, () -> { + player.setAnimation(Animation.STOP); + target.setAnimation(Animation.PUSHUP_END); + CharacterManager.setCharacterFreeze(player, false); + CharacterManager.setCharacterFreeze(target, false); + }); + }); + } + + /** + * Get the account for the player + * @param player The player + * @return The account + */ + public static Account getPlayerAccount(Player player) { + return accounts.get(player.getPropertyInt("accountId")); + } + + public static Player getPlayerByPhoneNumber(String phoneNumber) { + for(Player player : Onset.getPlayers()) { + Account account = getPlayerAccount(player); + if(account.getPhoneNumber().equals(phoneNumber)) return player; + } + return null; + } + + public static Player getNearestPlayer(Player player) { + Player search = null; + double currentDistance = 99999; + for(Player p : Onset.getPlayers()) { + try { + if(p.getId() == player.getId()) continue;; + if(p.getLocation().distance(player.getLocation()) < currentDistance) { + search = p; + currentDistance = p.getLocation().distance(player.getLocation()); + } + }catch (Exception ex) { + continue; + } + } + return search; + } + + public static Door getNearestDoor(Vector position) { + Door search = null; + double currentDistance = 99999; + for(Door d : Onset.getDoors()) { + try { + if(d.getLocation().distance(position) < currentDistance) { + search = d; + currentDistance = d.getLocation().distance(position); + } + }catch (Exception ex) { + continue; + } + } + return search; + } + +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/Line3D.java b/src/main/java/fr/yuki/yrpf/modding/Line3D.java similarity index 93% rename from src/main/java/fr/yuki/YukiRPFramework/modding/Line3D.java rename to src/main/java/fr/yuki/yrpf/modding/Line3D.java index 1dafd30..4ac527f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/Line3D.java +++ b/src/main/java/fr/yuki/yrpf/modding/Line3D.java @@ -1,81 +1,80 @@ -package fr.yuki.YukiRPFramework.modding; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.UUID; - -public class Line3D { - private String id; - private double sX; - private double sY; - private double sZ; - private double eX; - private double eY; - private double eZ; - private int thickness; - - public Line3D(double sX, double sY, double sZ, double eX, double eY, double eZ, int thickness) { - this.id = UUID.randomUUID().toString(); - this.sX = sX; - this.sY = sY; - this.sZ = sZ; - this.eX = eX; - this.eY = eY; - this.eZ = eZ; - this.thickness = thickness; - } - - public void show(Player player) { - player.callRemoteEvent("World:AddLine3D", this.id, this.sX, this.sY, this.sZ, this.eX, this.eY, this.eZ, this.thickness); - } - - public void hide(Player player) { - player.callRemoteEvent("World:DeleteLine3D", this.id); - } - - public boolean isInside(Vector origin) { - //double szMax = this.sZ + height; - //double ezMax = this.eZ + height; - return (origin.getX() < this.sX && origin.getX() > this.eX && origin.getY() < this.sY && origin.getY() > this.eY); - } - - public ArrayList getDoorsInside() { - ArrayList doors = new ArrayList<>(); - for(Door d : Onset.getDoors()) { - if((d.getLocation().getX() < this.sX && d.getLocation().getX() > this.eX && - d.getLocation().getY() < this.sY && d.getLocation().getY() > this.eY)) { - doors.add(d); - } - } - return doors; - } - - public double getsX() { - return sX; - } - - public double getsY() { - return sY; - } - - public double getsZ() { - return sZ; - } - - public double geteX() { - return eX; - } - - public double geteY() { - return eY; - } - - public double geteZ() { - return eZ; - } -} +package fr.yuki.yrpf.modding; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.UUID; + +public class Line3D { + private String id; + private double sX; + private double sY; + private double sZ; + private double eX; + private double eY; + private double eZ; + private int thickness; + + public Line3D(double sX, double sY, double sZ, double eX, double eY, double eZ, int thickness) { + this.id = UUID.randomUUID().toString(); + this.sX = sX; + this.sY = sY; + this.sZ = sZ; + this.eX = eX; + this.eY = eY; + this.eZ = eZ; + this.thickness = thickness; + } + + public void show(Player player) { + player.callRemoteEvent("World:AddLine3D", this.id, this.sX, this.sY, this.sZ, this.eX, this.eY, this.eZ, this.thickness); + } + + public void hide(Player player) { + player.callRemoteEvent("World:DeleteLine3D", this.id); + } + + public boolean isInside(Vector origin) { + //double szMax = this.sZ + height; + //double ezMax = this.eZ + height; + return (origin.getX() < this.sX && origin.getX() > this.eX && origin.getY() < this.sY && origin.getY() > this.eY); + } + + public ArrayList getDoorsInside() { + ArrayList doors = new ArrayList<>(); + for(Door d : Onset.getDoors()) { + if((d.getLocation().getX() < this.sX && d.getLocation().getX() > this.eX && + d.getLocation().getY() < this.sY && d.getLocation().getY() > this.eY)) { + doors.add(d); + } + } + return doors; + } + + public double getsX() { + return sX; + } + + public double getsY() { + return sY; + } + + public double getsZ() { + return sZ; + } + + public double geteX() { + return eX; + } + + public double geteY() { + return eY; + } + + public double geteZ() { + return eZ; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/LoopSound3D.java b/src/main/java/fr/yuki/yrpf/modding/LoopSound3D.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/modding/LoopSound3D.java rename to src/main/java/fr/yuki/yrpf/modding/LoopSound3D.java index bcc9f5e..23ebc5d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/LoopSound3D.java +++ b/src/main/java/fr/yuki/yrpf/modding/LoopSound3D.java @@ -1,63 +1,63 @@ -package fr.yuki.YukiRPFramework.modding; - -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -public class LoopSound3D { - private WorldObject dummyObject; - private String path; - private Vector position; - private int radius; - private double volume; - private int loopInterval; - private boolean isActive; - - public LoopSound3D(String path, Vector position, int radius, double volume, int loopInterval) { - this.path = path; - this.position = position; - this.radius = radius; - this.volume = volume; - this.loopInterval = loopInterval; - this.isActive = false; - } - - public void start() { - this.isActive = true; - this.tickRestart(); - } - - private void createDummy() { - this.dummyObject = Onset.getServer().createObject(new Vector(0, 0, 0), 1); - this.dummyObject.setProperty("ambiantSoundObject", 1, true); - this.dummyObject.setProperty("ambiantSoundName", this.path, true); - this.dummyObject.setProperty("ambiantSoundRadius", radius, true); - this.dummyObject.setProperty("ambiantSoundVolume", volume, true); - this.dummyObject.setLocation(position); - this.dummyObject.setStreamDistance(radius); - } - - private void destroyDummy() { - if(this.dummyObject == null) return; - this.dummyObject.destroy(); - this.dummyObject = null; - } - - public void tickRestart() { - this.destroyDummy(); - this.createDummy(); - Onset.delay(this.loopInterval, () -> { - if(this.dummyObject == null || !this.isActive) return; - this.tickRestart(); - }); - } - - public void stop() { - this.destroyDummy(); - this.isActive = false; - } - - public boolean isActive() { - return isActive; - } -} +package fr.yuki.yrpf.modding; + +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +public class LoopSound3D { + private WorldObject dummyObject; + private String path; + private Vector position; + private int radius; + private double volume; + private int loopInterval; + private boolean isActive; + + public LoopSound3D(String path, Vector position, int radius, double volume, int loopInterval) { + this.path = path; + this.position = position; + this.radius = radius; + this.volume = volume; + this.loopInterval = loopInterval; + this.isActive = false; + } + + public void start() { + this.isActive = true; + this.tickRestart(); + } + + private void createDummy() { + this.dummyObject = Onset.getServer().createObject(new Vector(0, 0, 0), 1); + this.dummyObject.setProperty("ambiantSoundObject", 1, true); + this.dummyObject.setProperty("ambiantSoundName", this.path, true); + this.dummyObject.setProperty("ambiantSoundRadius", radius, true); + this.dummyObject.setProperty("ambiantSoundVolume", volume, true); + this.dummyObject.setLocation(position); + this.dummyObject.setStreamDistance(radius); + } + + private void destroyDummy() { + if(this.dummyObject == null) return; + this.dummyObject.destroy(); + this.dummyObject = null; + } + + public void tickRestart() { + this.destroyDummy(); + this.createDummy(); + Onset.delay(this.loopInterval, () -> { + if(this.dummyObject == null || !this.isActive) return; + this.tickRestart(); + }); + } + + public void stop() { + this.destroyDummy(); + this.isActive = false; + } + + public boolean isActive() { + return isActive; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingCustomModel.java b/src/main/java/fr/yuki/yrpf/modding/ModdingCustomModel.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/modding/ModdingCustomModel.java rename to src/main/java/fr/yuki/yrpf/modding/ModdingCustomModel.java index 1efa587..b8e3d5b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingCustomModel.java +++ b/src/main/java/fr/yuki/yrpf/modding/ModdingCustomModel.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.modding; - -public class ModdingCustomModel { - private int id; - private String path; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; - } -} +package fr.yuki.yrpf.modding; + +public class ModdingCustomModel { + private int id; + private String path; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingFile.java b/src/main/java/fr/yuki/yrpf/modding/ModdingFile.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/modding/ModdingFile.java rename to src/main/java/fr/yuki/yrpf/modding/ModdingFile.java index 8deed08..3694c58 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/modding/ModdingFile.java +++ b/src/main/java/fr/yuki/yrpf/modding/ModdingFile.java @@ -1,15 +1,15 @@ -package fr.yuki.YukiRPFramework.modding; - -import java.util.ArrayList; - -public class ModdingFile { - private ArrayList customModels; - - public ArrayList getCustomModels() { - return customModels; - } - - public void setCustomModels(ArrayList customModels) { - this.customModels = customModels; - } -} +package fr.yuki.yrpf.modding; + +import java.util.ArrayList; + +public class ModdingFile { + private ArrayList customModels; + + public ArrayList getCustomModels() { + return customModels; + } + + public void setCustomModels(ArrayList customModels) { + this.customModels = customModels; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/ATM.java b/src/main/java/fr/yuki/yrpf/model/ATM.java new file mode 100644 index 0000000..8c69c38 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/ATM.java @@ -0,0 +1,30 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_atm") +public class ATM extends Model { + @Column(column = "id_atm") + private int id; + @Column + private float x; + @Column + private float y; + @Column + private float z; + private Pickup pickup; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 150) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/Account.java b/src/main/java/fr/yuki/yrpf/model/Account.java new file mode 100644 index 0000000..7832eb0 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/Account.java @@ -0,0 +1,115 @@ +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Dates; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.yrpf.character.CharacterJobLevel; +import fr.yuki.yrpf.character.CharacterStyle; +import fr.yuki.yrpf.manager.WeaponManager; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.sql.Timestamp; +import java.util.ArrayList; + +@Dates @Getter @Setter @Table("tbl_account") +public class Account extends Model { + @Column(column = "id_account") + private int id; + @Column + private int adminLevel = 0; + @Column(column = "steam_account_name") + private String steamName; + @Column + private String steamId; + @Column + private boolean isBanned = false; + @Column + private int bankMoney = 4000; + @Column + private double saveX; + @Column + private double saveY; + @Column + private double saveZ; + @Column + private double saveH; + @Column + private boolean characterCreationRequest = true; + @Column + private String characterStyle = ""; + @Column + private String characterName = "Unknown"; + @Column + private String jobLevels = "[]"; + @Column + private boolean isDead = false; + @Column + private String lang = "fr"; + @Column + private int foodState = 100; + @Column + private int drinkState = 100; + @Column + private String phoneNumber; + @Column + private String weapons = "[]"; + @Column + private int bagId = -1; + @Column + private int companyId = -1; + @Column + private boolean isInService = false; + @Column + private String originalStyle = ""; + @Column + private double health = 100; + @Column + private int commandLevel = 0; + @Column + private Timestamp createdAt; + @Column + private Timestamp updatedAt; + + public void setCharacterStyle(CharacterStyle characterStyle) { + this.characterStyle = new Gson().toJson(characterStyle); + } + + public CharacterStyle decodeCharacterStyle() { + if(this.characterStyle.equals("")) return new CharacterStyle(); + return new Gson().fromJson(this.characterStyle, CharacterStyle.class); + } + + public CharacterStyle decodeOriginalCharacterStyle() { + if(this.originalStyle.equals("")) return new CharacterStyle(); + return new Gson().fromJson(this.originalStyle, CharacterStyle.class); + } + + public void setJobLevels(ArrayList jobLevels) { + this.jobLevels = new Gson().toJson(jobLevels); + } + + public ArrayList decodeCharacterJob() { + if(this.jobLevels.equals("")) return new ArrayList<>(); + return new Gson().fromJson(this.jobLevels, new TypeToken>(){}.getType()); + } + + public void save(Player player){ + if(player != null){ + Location loc = player.getLocationAndHeading(); + health = player.getHealth(); + saveX = loc.getX(); + saveY = loc.getY(); + saveZ = loc.getZ(); + saveH = loc.getHeading(); + weapons = new Gson().toJson(WeaponManager.getPlayerWeapons(player)); + } + save(); + } + +} diff --git a/src/main/java/fr/yuki/yrpf/model/AccountJobWhitelist.java b/src/main/java/fr/yuki/yrpf/model/AccountJobWhitelist.java new file mode 100644 index 0000000..06e98d4 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/AccountJobWhitelist.java @@ -0,0 +1,19 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_account_job_whitelist") +public class AccountJobWhitelist extends Model { + @Column(column = "id_account_job_whitelist") + private int id; + @Column(column = "id_account") + private int accountId; + @Column(column = "id_job") + private String jobId; + @Column + private int jobLevel; +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Bag.java b/src/main/java/fr/yuki/yrpf/model/Bag.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/model/Bag.java rename to src/main/java/fr/yuki/yrpf/model/Bag.java index 9665f40..0523bd8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Bag.java +++ b/src/main/java/fr/yuki/yrpf/model/Bag.java @@ -1,112 +1,112 @@ -package fr.yuki.YukiRPFramework.model; - -public class Bag { - private int modelId; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private double sx; - private double sy; - private double sz; - private String socket; - private double bonusWeight; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public String getSocket() { - return socket; - } - - public void setSocket(String socket) { - this.socket = socket; - } - - public double getBonusWeight() { - return bonusWeight; - } - - public void setBonusWeight(double bonusWeight) { - this.bonusWeight = bonusWeight; - } -} +package fr.yuki.yrpf.model; + +public class Bag { + private int modelId; + private double x; + private double y; + private double z; + private double rx; + private double ry; + private double rz; + private double sx; + private double sy; + private double sz; + private String socket; + private double bonusWeight; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getRx() { + return rx; + } + + public void setRx(double rx) { + this.rx = rx; + } + + public double getRy() { + return ry; + } + + public void setRy(double ry) { + this.ry = ry; + } + + public double getRz() { + return rz; + } + + public void setRz(double rz) { + this.rz = rz; + } + + public double getSx() { + return sx; + } + + public void setSx(double sx) { + this.sx = sx; + } + + public double getSy() { + return sy; + } + + public void setSy(double sy) { + this.sy = sy; + } + + public double getSz() { + return sz; + } + + public void setSz(double sz) { + this.sz = sz; + } + + public String getSocket() { + return socket; + } + + public void setSocket(String socket) { + this.socket = socket; + } + + public double getBonusWeight() { + return bonusWeight; + } + + public void setBonusWeight(double bonusWeight) { + this.bonusWeight = bonusWeight; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/Company.java b/src/main/java/fr/yuki/yrpf/model/Company.java new file mode 100644 index 0000000..85a8d08 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/Company.java @@ -0,0 +1,26 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_compagny") +public class Company extends Model { + @Column(column = "id_compagny") + private int id; + @Column + private String name; + @Column + private int bankCash = 0; + @Column + private String owner; + @Column + private int maxMember = 5; + + public boolean isOwner(Player player) { + return this.owner.equals(player.getSteamId()); + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/FuelPoint.java b/src/main/java/fr/yuki/yrpf/model/FuelPoint.java new file mode 100644 index 0000000..66929de --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/FuelPoint.java @@ -0,0 +1,28 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_fuel_point") +public class FuelPoint extends Model { + @Column(column = "id_fuel_point") + private int id; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private int price; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) return true; + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapConfig.java b/src/main/java/fr/yuki/yrpf/model/GameMapConfig.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/model/GameMapConfig.java rename to src/main/java/fr/yuki/yrpf/model/GameMapConfig.java index 5292973..b3ece96 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapConfig.java +++ b/src/main/java/fr/yuki/yrpf/model/GameMapConfig.java @@ -1,24 +1,24 @@ -package fr.yuki.YukiRPFramework.model; - -import java.util.ArrayList; - -public class GameMapConfig { - private ArrayList markers; - private ArrayList zones; - - public ArrayList getMarkers() { - return markers; - } - - public void setMarkers(ArrayList markers) { - this.markers = markers; - } - - public ArrayList getZones() { - return zones; - } - - public void setZones(ArrayList zones) { - this.zones = zones; - } -} +package fr.yuki.yrpf.model; + +import java.util.ArrayList; + +public class GameMapConfig { + private ArrayList markers; + private ArrayList zones; + + public ArrayList getMarkers() { + return markers; + } + + public void setMarkers(ArrayList markers) { + this.markers = markers; + } + + public ArrayList getZones() { + return zones; + } + + public void setZones(ArrayList zones) { + this.zones = zones; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapMarker.java b/src/main/java/fr/yuki/yrpf/model/GameMapMarker.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/model/GameMapMarker.java rename to src/main/java/fr/yuki/yrpf/model/GameMapMarker.java index e1e8436..cc8e1df 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapMarker.java +++ b/src/main/java/fr/yuki/yrpf/model/GameMapMarker.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.model; - -import java.util.ArrayList; - -public class GameMapMarker { - private String type; - private String icon; - private ArrayList position; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getIcon() { - return icon; - } - - public void setIcon(String icon) { - this.icon = icon; - } - - public ArrayList getPosition() { - return position; - } - - public void setPosition(ArrayList position) { - this.position = position; - } -} +package fr.yuki.yrpf.model; + +import java.util.ArrayList; + +public class GameMapMarker { + private String type; + private String icon; + private ArrayList position; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public ArrayList getPosition() { + return position; + } + + public void setPosition(ArrayList position) { + this.position = position; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapZone.java b/src/main/java/fr/yuki/yrpf/model/GameMapZone.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/model/GameMapZone.java rename to src/main/java/fr/yuki/yrpf/model/GameMapZone.java index cf1db74..0225546 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GameMapZone.java +++ b/src/main/java/fr/yuki/yrpf/model/GameMapZone.java @@ -1,24 +1,24 @@ -package fr.yuki.YukiRPFramework.model; - -import java.util.ArrayList; - -public class GameMapZone { - private ArrayList> points; - private String color; - - public ArrayList> getPoints() { - return points; - } - - public void setPoints(ArrayList> points) { - this.points = points; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } -} +package fr.yuki.yrpf.model; + +import java.util.ArrayList; + +public class GameMapZone { + private ArrayList> points; + private String color; + + public ArrayList> getPoints() { + return points; + } + + public void setPoints(ArrayList> points) { + this.points = points; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/Garage.java b/src/main/java/fr/yuki/yrpf/model/Garage.java new file mode 100644 index 0000000..08e623e --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/Garage.java @@ -0,0 +1,32 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_garage") +public class Garage extends Model { + @Column(column = "id_garage") + private int id; + @Column + private String name; + @Column + private int costToUse; + @Column + private double x; + @Column + private double y; + @Column + private double z; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 200) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/GroundItem.java b/src/main/java/fr/yuki/yrpf/model/GroundItem.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/model/GroundItem.java rename to src/main/java/fr/yuki/yrpf/model/GroundItem.java index e2e36f8..814e1ba 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/GroundItem.java +++ b/src/main/java/fr/yuki/yrpf/model/GroundItem.java @@ -1,81 +1,81 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.inventory.InventoryItem; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.InventoryManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Pickup; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Text3D; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class GroundItem { - private InventoryItem inventoryItem; - private Vector position; - private int quantity; - private Pickup pickup; - private Text3D text3D; - private boolean isAvailable = true; - - public GroundItem(InventoryItem inventoryItem, int quantity, Vector position) { - this.inventoryItem = inventoryItem; - this.position = position; - this.quantity = quantity; - this.spawn(); - } - - private void spawn() { - this.pickup = Onset.getServer().createPickup(this.position, - ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId()) ? 1 : this.inventoryItem.getTemplate().getModelId()); - this.pickup.setScale(new Vector(this.inventoryItem.getTemplate().getModelScale(), this.inventoryItem.getTemplate().getModelScale(), - this.inventoryItem.getTemplate().getModelScale())); - this.text3D = Onset.getServer().createText3D("x" + this.quantity + " [" + this.inventoryItem.getTemplate().getName() + "]", - 12, new Vector(this.position.getX(), this.position.getY(), this.position.getZ() + 90), - new Vector(0, 0, 0)); - if(ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId())) - ModdingManager.assignCustomModel(this.pickup, this.inventoryItem.getTemplate().getModelId()); - } - - public void pickByPlayer(Player player) { - if(!this.isAvailable) return; - this.isAvailable = false; - CharacterManager.setCharacterFreeze(player, true); - player.setAnimation(Animation.PICKUP_LOWER); - if(InventoryManager.getMainInventory(player).addItem(inventoryItem) == null) { - Onset.delay(1000, () -> { - CharacterManager.setCharacterFreeze(player, false); - }); - return; - } - WorldManager.getGroundItems().remove(this); - InventoryManager.getMainInventory(player).save(); - Onset.delay(1000, () -> { - CharacterManager.setCharacterFreeze(player, false); - this.pickup.destroy(); - this.text3D.destroy(); - }); - } - - public void destroy() { - - } - - public boolean isNear(Player player) { - return this.position.distance(player.getLocation()) < 150; - } - - public InventoryItem getInventoryItem() { - return inventoryItem; - } - - public Vector getPosition() { - return position; - } - - public int getQuantity() { - return quantity; - } -} +package fr.yuki.yrpf.model; + +import fr.yuki.yrpf.inventory.InventoryItem; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.InventoryManager; +import fr.yuki.yrpf.manager.ModdingManager; +import fr.yuki.yrpf.manager.WorldManager; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Pickup; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Text3D; +import net.onfirenetwork.onsetjava.enums.Animation; + +public class GroundItem { + private InventoryItem inventoryItem; + private Vector position; + private int quantity; + private Pickup pickup; + private Text3D text3D; + private boolean isAvailable = true; + + public GroundItem(InventoryItem inventoryItem, int quantity, Vector position) { + this.inventoryItem = inventoryItem; + this.position = position; + this.quantity = quantity; + this.spawn(); + } + + private void spawn() { + this.pickup = Onset.getServer().createPickup(this.position, + ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId()) ? 1 : this.inventoryItem.getTemplate().getModelId()); + this.pickup.setScale(new Vector(this.inventoryItem.getTemplate().getModelScale(), this.inventoryItem.getTemplate().getModelScale(), + this.inventoryItem.getTemplate().getModelScale())); + this.text3D = Onset.getServer().createText3D("x" + this.quantity + " [" + this.inventoryItem.getTemplate().getName() + "]", + 12, new Vector(this.position.getX(), this.position.getY(), this.position.getZ() + 90), + new Vector(0, 0, 0)); + if(ModdingManager.isCustomModelId(this.inventoryItem.getTemplate().getModelId())) + ModdingManager.assignCustomModel(this.pickup, this.inventoryItem.getTemplate().getModelId()); + } + + public void pickByPlayer(Player player) { + if(!this.isAvailable) return; + this.isAvailable = false; + CharacterManager.setCharacterFreeze(player, true); + player.setAnimation(Animation.PICKUP_LOWER); + if(InventoryManager.getMainInventory(player).addItem(inventoryItem) == null) { + Onset.delay(1000, () -> { + CharacterManager.setCharacterFreeze(player, false); + }); + return; + } + WorldManager.getGroundItems().remove(this); + InventoryManager.getMainInventory(player).save(); + Onset.delay(1000, () -> { + CharacterManager.setCharacterFreeze(player, false); + this.pickup.destroy(); + this.text3D.destroy(); + }); + } + + public void destroy() { + + } + + public boolean isNear(Player player) { + return this.position.distance(player.getLocation()) < 150; + } + + public InventoryItem getInventoryItem() { + return inventoryItem; + } + + public Vector getPosition() { + return position; + } + + public int getQuantity() { + return quantity; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java b/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java new file mode 100644 index 0000000..cdd3fc1 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/GrowboxModel.java @@ -0,0 +1,25 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_growbox") +public class GrowboxModel extends Model { + @Column(column = "id_growbox") + private int id; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double rx; + @Column + private double ry; + @Column + private double rz; +} diff --git a/src/main/java/fr/yuki/yrpf/model/House.java b/src/main/java/fr/yuki/yrpf/model/House.java new file mode 100644 index 0000000..ccdd8ee --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/House.java @@ -0,0 +1,59 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.yrpf.modding.Line3D; +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; + +@Getter @Setter @Table("tbl_house") +public class House extends Model { + @Column(column = "id_house") + private int id; + @Column(column = "id_account") + private int accountId; + @Column + private int price; + @Column + private String name; + @Column + private double sx; + @Column + private double sy; + @Column + private double sz; + @Column + private double ex; + @Column + private double ey; + @Column + private double ez; + + private boolean locked = true; + private List allowedPlayers = new ArrayList<>(); + private List houseItemObjects = new ArrayList<>(); + + public Line3D getLine3D() { + return new Line3D(this.sx, this.sy, this.sz, this.ex, this.ey, this.ez, 5); + } + + public List getHouseItemObjects() { + return houseItemObjects; + } + + public void setHouseItemObjects(ArrayList houseItemObjects) { + this.houseItemObjects = houseItemObjects; + } + + public List getAllowedPlayers() { + return allowedPlayers; + } + + public void setAllowedPlayers(ArrayList allowedPlayers) { + this.allowedPlayers = allowedPlayers; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/HouseItemObject.java b/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java similarity index 55% rename from src/main/java/fr/yuki/YukiRPFramework/model/HouseItemObject.java rename to src/main/java/fr/yuki/yrpf/model/HouseItemObject.java index dcc4176..bbe4d10 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/HouseItemObject.java +++ b/src/main/java/fr/yuki/yrpf/model/HouseItemObject.java @@ -1,148 +1,104 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.house.itembehavior.ATMBehavior; -import fr.yuki.YukiRPFramework.house.itembehavior.ItemBehavior; -import fr.yuki.YukiRPFramework.house.itembehavior.RadioBehavior; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -public class HouseItemObject { - private int id; - private int modelId; - private int functionId; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private WorldObject worldObject; - private House house; - private ItemBehavior itemBehavior; - - public void spawn() { - this.worldObject = Onset.getServer().createObject(this.getPosition(), this.getModelId()); - if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); - this.worldObject.setRotation(this.getRotation()); - this.worldObject.setProperty("houseItemId", this.id, true); - this.worldObject.setStreamDistance(2500); - - if(this.functionId != -1) { - switch (this.functionId) { - case 1: // Radio - this.itemBehavior = new RadioBehavior(this); - break; - - case 2: // ATM - this.itemBehavior = new ATMBehavior(this); - break; - } - - if(this.itemBehavior != null) { - this.itemBehavior.onSpawn(); - } - } - } - - public void destroy() { - this.worldObject.destroy(); - - if(this.itemBehavior != null) { - this.itemBehavior.onDestroy(); - } - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public int getFunctionId() { - return functionId; - } - - public void setFunctionId(int functionId) { - this.functionId = functionId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public WorldObject getWorldObject() { - return worldObject; - } - - public Vector getPosition() { - return new Vector(this.x, this.y, this.z); - } - - public Vector getRotation() { - return new Vector(this.rx, this.ry, this.rz); - } - - public House getHouse() { - return house; - } - - public void setHouse(House house) { - this.house = house; - } -} +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.yrpf.house.itembehavior.ATMBehavior; +import fr.yuki.yrpf.house.itembehavior.ItemBehavior; +import fr.yuki.yrpf.house.itembehavior.RadioBehavior; +import fr.yuki.yrpf.manager.ModdingManager; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +@Getter @Setter @Table("tbl_house_item") +public class HouseItemObject extends Model { + @Column(column = "id_house_item") + private int id; + @Column + private int modelId; + @Column + private int functionId; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double rx; + @Column + private double ry; + @Column + private double rz; + + private WorldObject worldObject; + private House house; + private ItemBehavior itemBehavior; + + public void spawn() { + this.worldObject = Onset.getServer().createObject(this.getPosition(), this.getModelId()); + if(ModdingManager.isCustomModelId(this.getModelId())) ModdingManager.assignCustomModel(this.worldObject, this.getModelId()); + this.worldObject.setRotation(this.getRotation()); + this.worldObject.setProperty("houseItemId", this.id, true); + this.worldObject.setStreamDistance(2500); + + if(this.functionId != -1) { + switch (this.functionId) { + case 1: // Radio + this.itemBehavior = new RadioBehavior(this); + break; + + case 2: // ATM + this.itemBehavior = new ATMBehavior(this); + break; + } + + if(this.itemBehavior != null) { + this.itemBehavior.onSpawn(); + } + } + } + + public void destroy() { + this.worldObject.destroy(); + + if(this.itemBehavior != null) { + this.itemBehavior.onDestroy(); + } + } + + public WorldObject getWorldObject() { + return worldObject; + } + + public Vector getPosition() { + return new Vector(this.x, this.y, this.z); + } + + public Vector getRotation() { + return new Vector(this.rx, this.ry, this.rz); + } + + public void setPosition(Vector position){ + x = position.getX(); + y = position.getY(); + z = position.getZ(); + } + + public void setRotation(Vector rotation){ + rx = rotation.getX(); + ry = rotation.getY(); + rz = rotation.getZ(); + } + + public House getHouse() { + return house; + } + + public void setHouse(House house) { + this.house = house; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/ItemShopObject.java b/src/main/java/fr/yuki/yrpf/model/ItemShopObject.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/model/ItemShopObject.java rename to src/main/java/fr/yuki/yrpf/model/ItemShopObject.java index 3f92269..38215d0 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/ItemShopObject.java +++ b/src/main/java/fr/yuki/yrpf/model/ItemShopObject.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.model; - -public class ItemShopObject { - private int modelId; - private int functionId; - private int price; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public int getFunctionId() { - return functionId; - } - - public void setFunctionId(int functionId) { - this.functionId = functionId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } -} +package fr.yuki.yrpf.model; + +public class ItemShopObject { + private int modelId; + private int functionId; + private int price; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public int getFunctionId() { + return functionId; + } + + public void setFunctionId(int functionId) { + this.functionId = functionId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java b/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java new file mode 100644 index 0000000..af7019b --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/ItemTemplate.java @@ -0,0 +1,39 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_item_template") +public class ItemTemplate extends Model { + @Column(column = "id_item_template") + private int id; + @Column + private String name; + @Column + private String description; + @Column + private float weight; + @Column + private String pictureName; + @Column + private int itemType; + @Column + private int modelId; + @Column + private double modelScale; + @Column + private int foodValue; + @Column + private int drinkValue; + @Column(column = "id_weapon") + private int weaponId; + @Column + private int ammoPerRecharge; + @Column(column = "id_mask") + private int maskId; + @Column(column = "id_bag") + private int bagId; +} diff --git a/src/main/java/fr/yuki/yrpf/model/JobLevel.java b/src/main/java/fr/yuki/yrpf/model/JobLevel.java new file mode 100644 index 0000000..4627ced --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/JobLevel.java @@ -0,0 +1,25 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_job_level") +public class JobLevel extends Model { + @Column(column = "id_job_level") + private int id; + @Column(column = "id_job") + private String jobId; + @Column + private String name; + @Column + private int level; + @Column + private int expFloor; + + public String getTranslateName() { + return name.toLowerCase().replaceAll(" ", "_"); + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/JobNPC.java b/src/main/java/fr/yuki/yrpf/model/JobNPC.java new file mode 100644 index 0000000..8c9f58b --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/JobNPC.java @@ -0,0 +1,82 @@ +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.yrpf.job.WearableWorldObject; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.NPC; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +@Getter @Setter @Table("tbl_job_npc") +public class JobNPC extends Model { + @Column(column = "id_job_npc") + private int id; + @Column(column = "id_job") + private String jobId; + @Column + private String name; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double h; + @Column + private int npcClothing; + @Column(size = 0) + private String buyList; + @Column(size = 0) + private String sellList; + + private List buyListCache; + private List sellListCache; + private NPC npc; + + public List getBuyList() { + if(buyListCache == null){ + buyListCache = new Gson().fromJson(buyList, new TypeToken>(){}.getType()); + } + return buyListCache; + } + + public void setBuyList(List buyList) { + this.buyList = new Gson().toJson(buyList); + buyListCache = buyList; + } + + public List getSellList() { + if(sellListCache == null){ + sellListCache = new Gson().fromJson(sellList, new TypeToken>(){}.getType()); + } + return sellListCache; + } + + public void setSellList(List sellList) { + this.sellList = new Gson().toJson(sellList); + sellListCache = sellList; + } + + public JobNPCListItem getBuyItemByWearableItem(WearableWorldObject wearableWorldObject) { + JobNPCListItem jobNPCListItem = null; + for(JobNPCListItem item : getBuyList()) { + if(item.getType().toLowerCase().equals("worlditem") && item.getItemId() == wearableWorldObject.getModelId()) { + return item; + } + } + return null; + } + + public boolean isNear(Player player) { + return new Vector(x,y,z).distance(player.getLocation()) < 200; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPCListItem.java b/src/main/java/fr/yuki/yrpf/model/JobNPCListItem.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobNPCListItem.java rename to src/main/java/fr/yuki/yrpf/model/JobNPCListItem.java index 2e8f345..15b5a6e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobNPCListItem.java +++ b/src/main/java/fr/yuki/yrpf/model/JobNPCListItem.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.model; - -public class JobNPCListItem { - private int itemId; - private int price; - private String type; - - public int getItemId() { - return itemId; - } - - public void setItemId(int itemId) { - this.itemId = itemId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } -} +package fr.yuki.yrpf.model; + +public class JobNPCListItem { + private int itemId; + private int price; + private String type; + + public int getItemId() { + return itemId; + } + + public void setItemId(int itemId) { + this.itemId = itemId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/JobOutfit.java b/src/main/java/fr/yuki/yrpf/model/JobOutfit.java new file mode 100644 index 0000000..71f5a56 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/JobOutfit.java @@ -0,0 +1,43 @@ +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +@Getter @Setter @Table("tbl_job_outfit") +public class JobOutfit extends Model { + @Column(column = "id_job_outfit") + private int id; + @Column(column = "id_job") + private String jobId; + @Column + private int levelRequired; + @Column + private String name; + @Column + private String outfit; + @Column + private double x; + @Column + private double y; + @Column + private double z; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) return true; + return false; + } + + public List decodeOutfit() { + return new Gson().fromJson(this.outfit, new TypeToken>(){}.getType()); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfitItem.java b/src/main/java/fr/yuki/yrpf/model/JobOutfitItem.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobOutfitItem.java rename to src/main/java/fr/yuki/yrpf/model/JobOutfitItem.java index 114420b..a5f0563 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobOutfitItem.java +++ b/src/main/java/fr/yuki/yrpf/model/JobOutfitItem.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.model; - -public class JobOutfitItem { - private String type; - private String value; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} +package fr.yuki.yrpf.model; + +public class JobOutfitItem { + private String type; + private String value; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/JobTool.java b/src/main/java/fr/yuki/yrpf/model/JobTool.java similarity index 50% rename from src/main/java/fr/yuki/YukiRPFramework/model/JobTool.java rename to src/main/java/fr/yuki/yrpf/model/JobTool.java index 2b9a6f3..a762172 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/JobTool.java +++ b/src/main/java/fr/yuki/yrpf/model/JobTool.java @@ -1,237 +1,132 @@ -package fr.yuki.YukiRPFramework.model; - -import fr.yuki.YukiRPFramework.job.Job; -import fr.yuki.YukiRPFramework.job.tools.*; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.ModdingManager; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.entity.Text3D; -import net.onfirenetwork.onsetjava.entity.WorldObject; - -import java.util.UUID; - -public class JobTool { - private String uuid; - private int id; - private int modelId; - private String name; - private String jobType; - private int levelRequired; - private String jobToolType; - private int reward; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private double sx; - private double sy; - private double sz; - private WorldObject worldObject; - private JobToolHandler jobToolHandler; - private Text3D text3d; - - public JobTool() { - this.uuid = UUID.randomUUID().toString(); - } - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getJobType() { - return jobType; - } - - public void setJobType(String jobType) { - this.jobType = jobType; - } - - public int getLevelRequired() { - return levelRequired; - } - - public void setLevelRequired(int levelRequired) { - this.levelRequired = levelRequired; - } - - public String getJobToolType() { - return jobToolType; - } - - public void setJobToolType(String jobToolType) { - this.jobToolType = jobToolType; - switch (this.jobToolType.toLowerCase()) { - case "sawmill": - this.jobToolHandler = new Sawmill(this); - break; - - case "garbage_bin": - this.jobToolHandler = new GarbageBin(this); - break; - - case "growbox": - this.jobToolHandler = new GrowBox(this); - break; - - case "generator": - this.jobToolHandler = new Generator(this); - break; - } - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public WorldObject getWorldObject() { - return worldObject; - } - - public void setWorldObject(WorldObject worldObject) { - this.worldObject = worldObject; - } - - public boolean isNear(Player player) { - return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 250; - } - - public void spawn(Job job) { - this.worldObject = Onset.getServer().createObject(new Vector(this.x, this.y, this.z), this.modelId); - if(ModdingManager.isCustomModelId(this.modelId)) ModdingManager.assignCustomModel(this.worldObject, this.modelId); - this.worldObject.setRotation(new Vector(this.rx, this.ry, this.rz)); - this.worldObject.setScale(new Vector(this.sx, this.sy, this.sz)); - this.text3d = Onset.getServer().createText3D(this.name + " [Utiliser]", 20, this.x, this.y, this.z + 200, 0 , 0 ,0); - if(this.jobToolHandler != null) { - if(this.jobToolHandler.canBeUse()) { - this.setUsable(); - } - } - } - - public void setUsable() { - this.getWorldObject().setProperty("isJobTool", 1, true); - this.getWorldObject().setProperty("uuid", this.getUuid(), true); - } - - public JobToolHandler getJobToolHandler() { - return jobToolHandler; - } - - public void setJobToolHandler(JobToolHandler jobToolHandler) { - this.jobToolHandler = jobToolHandler; - } - - public int getReward() { - return reward; - } - - public void setReward(int reward) { - this.reward = reward; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public void destroy() { - this.worldObject.destroy(); - this.text3d.destroy(); - JobManager.getJobTools().remove(this); - } -} +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import fr.yuki.yrpf.job.Job; +import fr.yuki.yrpf.job.tools.*; +import fr.yuki.yrpf.manager.JobManager; +import fr.yuki.yrpf.manager.ModdingManager; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.entity.Text3D; +import net.onfirenetwork.onsetjava.entity.WorldObject; + +import java.util.UUID; + +@Getter @Setter @Table("tbl_job_tool") +public class JobTool extends Model { + private String uuid; + @Column(column = "id_job_tool") + private int id; + @Column + private int modelId; + @Column + private String name; + @Column + private String jobType; + @Column + private int levelRequired; + @Column + private String jobToolType; + @Column + private int reward; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double rX; + @Column + private double rY; + @Column + private double rZ; + @Column + private double sX; + @Column + private double sY; + @Column + private double sZ; + + private WorldObject worldObject; + private JobToolHandler jobToolHandler; + private Text3D text3d; + + public JobTool() { + this.uuid = UUID.randomUUID().toString(); + } + + public String getJobToolType() { + return jobToolType; + } + + public void setJobToolType(String jobToolType) { + this.jobToolType = jobToolType; + switch (this.jobToolType.toLowerCase()) { + case "sawmill": + this.jobToolHandler = new Sawmill(this); + break; + + case "garbage_bin": + this.jobToolHandler = new GarbageBin(this); + break; + + case "growbox": + this.jobToolHandler = new GrowBox(this); + break; + + case "generator": + this.jobToolHandler = new Generator(this); + break; + } + } + + public WorldObject getWorldObject() { + return worldObject; + } + + public void setWorldObject(WorldObject worldObject) { + this.worldObject = worldObject; + } + + public boolean isNear(Player player) { + return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 250; + } + + public void spawn(Job job) { + this.worldObject = Onset.getServer().createObject(new Vector(this.x, this.y, this.z), this.modelId); + if(ModdingManager.isCustomModelId(this.modelId)) ModdingManager.assignCustomModel(this.worldObject, this.modelId); + this.worldObject.setRotation(new Vector(this.rX, this.rY, this.rZ)); + this.worldObject.setScale(new Vector(this.sX, this.sY, this.sZ)); + this.text3d = Onset.getServer().createText3D(this.name + " [Utiliser]", 20, this.x, this.y, this.z + 200, 0 , 0 ,0); + if(this.jobToolHandler != null) { + if(this.jobToolHandler.canBeUse()) { + this.setUsable(); + } + } + } + + public void setUsable() { + this.getWorldObject().setProperty("isJobTool", 1, true); + this.getWorldObject().setProperty("uuid", this.getUuid(), true); + } + + public JobToolHandler getJobToolHandler() { + return jobToolHandler; + } + + public void setJobToolHandler(JobToolHandler jobToolHandler) { + this.jobToolHandler = jobToolHandler; + } + + public void destroy() { + this.worldObject.destroy(); + this.text3d.destroy(); + JobManager.getJobTools().remove(this); + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java b/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java new file mode 100644 index 0000000..c3a218f --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/JobVehicleRental.java @@ -0,0 +1,43 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_job_vehicle_rental") +public class JobVehicleRental extends Model { + @Column(column = "id_job_vehicle_rental") + private int id; + @Column(column = "id_job") + private String jobId; + @Column + private int levelRequired; + @Column + private String name; + @Column + private int vehicleModelId; + @Column + private int cost; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double spawnX; + @Column + private double spawnY; + @Column + private double spawnZ; + @Column + private String color; + + public boolean isNear(Player player) { + return new Vector(this.x, this.y, this.z).distance(player.getLocation()) < 350; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/Mask.java b/src/main/java/fr/yuki/yrpf/model/Mask.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/model/Mask.java rename to src/main/java/fr/yuki/yrpf/model/Mask.java index 3f1fcfe..fd15972 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/Mask.java +++ b/src/main/java/fr/yuki/yrpf/model/Mask.java @@ -1,103 +1,103 @@ -package fr.yuki.YukiRPFramework.model; - -public class Mask { - private int modelId; - private double x; - private double y; - private double z; - private double rx; - private double ry; - private double rz; - private double sx; - private double sy; - private double sz; - private String socket; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public double getRx() { - return rx; - } - - public void setRx(double rx) { - this.rx = rx; - } - - public double getRy() { - return ry; - } - - public void setRy(double ry) { - this.ry = ry; - } - - public double getRz() { - return rz; - } - - public void setRz(double rz) { - this.rz = rz; - } - - public double getSx() { - return sx; - } - - public void setSx(double sx) { - this.sx = sx; - } - - public double getSy() { - return sy; - } - - public void setSy(double sy) { - this.sy = sy; - } - - public double getSz() { - return sz; - } - - public void setSz(double sz) { - this.sz = sz; - } - - public String getSocket() { - return socket; - } - - public void setSocket(String socket) { - this.socket = socket; - } -} +package fr.yuki.yrpf.model; + +public class Mask { + private int modelId; + private double x; + private double y; + private double z; + private double rx; + private double ry; + private double rz; + private double sx; + private double sy; + private double sz; + private String socket; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public double getRx() { + return rx; + } + + public void setRx(double rx) { + this.rx = rx; + } + + public double getRy() { + return ry; + } + + public void setRy(double ry) { + this.ry = ry; + } + + public double getRz() { + return rz; + } + + public void setRz(double rz) { + this.rz = rz; + } + + public double getSx() { + return sx; + } + + public void setSx(double sx) { + this.sx = sx; + } + + public double getSy() { + return sy; + } + + public void setSy(double sy) { + this.sy = sy; + } + + public double getSz() { + return sz; + } + + public void setSz(double sz) { + this.sz = sz; + } + + public String getSocket() { + return socket; + } + + public void setSocket(String socket) { + this.socket = socket; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java b/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java new file mode 100644 index 0000000..f2e34a5 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/OutfitPoint.java @@ -0,0 +1,28 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +@Getter @Setter @Table("tbl_outfit_point") +public class OutfitPoint extends Model { + @Column(column = "id_outfit_point") + private int id; + @Column + private double x; + @Column + private double y; + @Column + private double z; + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/PhoneContact.java b/src/main/java/fr/yuki/yrpf/model/PhoneContact.java new file mode 100644 index 0000000..852db39 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/PhoneContact.java @@ -0,0 +1,19 @@ +package fr.yuki.yrpf.model; + +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter @Table("tbl_phone_contact") +public class PhoneContact extends Model { + @Column(column = "id_phone_contact") + private int id; + @Column(column = "id_account") + private int accountId; + @Column + private String name; + @Column + private String number; +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/SellListItem.java b/src/main/java/fr/yuki/yrpf/model/SellListItem.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/model/SellListItem.java rename to src/main/java/fr/yuki/yrpf/model/SellListItem.java index b088c71..6c0bb54 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/SellListItem.java +++ b/src/main/java/fr/yuki/yrpf/model/SellListItem.java @@ -1,40 +1,40 @@ -package fr.yuki.YukiRPFramework.model; - -public class SellListItem { - private int modelId; - private int price; - private String name; - private String description; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } -} +package fr.yuki.yrpf.model; + +public class SellListItem { + private int modelId; + private int price; + private String name; + private String description; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/Seller.java b/src/main/java/fr/yuki/yrpf/model/Seller.java new file mode 100644 index 0000000..949d51a --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/Seller.java @@ -0,0 +1,52 @@ +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.NPC; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +@Getter @Setter @Table("tbl_seller") +public class Seller extends Model { + @Column(column = "id_seller") + private int id; + @Column + private String name; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double h; + @Column + private int npcClothing; + @Column(size = 0) + private String itemList; + @Column + private String jobRequired; + @Column + private int jobLevelRequired; + + private NPC npc; + + public ArrayList decodeItems() { + return new Gson().fromJson(this.itemList, + new TypeToken>(){}.getType()); + } + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/model/SellerItem.java b/src/main/java/fr/yuki/yrpf/model/SellerItem.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/model/SellerItem.java rename to src/main/java/fr/yuki/yrpf/model/SellerItem.java index a1f7ad0..0c9736f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/model/SellerItem.java +++ b/src/main/java/fr/yuki/yrpf/model/SellerItem.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.model; - -public class SellerItem { - private int id; - private int price; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getPrice() { - return price; - } - - public void setPrice(int price) { - this.price = price; - } -} +package fr.yuki.yrpf.model; + +public class SellerItem { + private int id; + private int price; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } +} diff --git a/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java b/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java new file mode 100644 index 0000000..9a2a769 --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/VehicleGarage.java @@ -0,0 +1,85 @@ +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Dates; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.sql.Timestamp; +import java.util.ArrayList; + +@Getter @Setter @Dates @Table("tbl_vehicle_garage") +public class VehicleGarage extends Model { + @Column(column = "id_vehicle_garage") + private int vehicleGarageId; + @Column + private String uuid; + @Column + private int owner; + @Column(column = "id_garage") + private int garageId; + @Column(column = "id_last_garage") + private int garageLastId; + @Column + private int modelId; + @Column + private String damage; + @Column + private double health; + @Column + private String licencePlate; + @Column + private String color; + @Column + private Timestamp createdAt; + @Column + private Timestamp updatedAt; + + private boolean rental; + + public void save() { + if(!rental) super.save(); + } + + public void destroy() { + for(Vehicle vehicle : Onset.getVehicles()) { + if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { + vehicle.destroy(); + return; + } + } + } + + public Vehicle getVehicle() { + for(Vehicle vehicle : Onset.getVehicles()) { + if(vehicle.getPropertyString("uuid").equals(this.getUuid())) { + return vehicle; + } + } + return null; + } + + public void applyDamages(Vehicle vehicle) { + ArrayList damages = new Gson().fromJson(this.damage, new TypeToken>(){}.getType()); + for(int i = 0; i < damages.size(); i++) { + vehicle.setDamage(i + 1, damages.get(i)); + } + vehicle.setHealth(this.health); + } + + public void computeDamages(Vehicle vehicle) { + this.health = vehicle.getHealth(); + ArrayList damages = new ArrayList<>(); + for(int i = 0; i < 8; i++) { + damages.add(vehicle.getDamage(i + 1)); + } + this.damage = new Gson().toJson(damages); + } + +} diff --git a/src/main/java/fr/yuki/yrpf/model/VehicleSeller.java b/src/main/java/fr/yuki/yrpf/model/VehicleSeller.java new file mode 100644 index 0000000..848acef --- /dev/null +++ b/src/main/java/fr/yuki/yrpf/model/VehicleSeller.java @@ -0,0 +1,72 @@ +package fr.yuki.yrpf.model; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import eu.bebendorf.ajorm.Model; +import eu.bebendorf.ajorm.annotation.Column; +import eu.bebendorf.ajorm.annotation.Table; +import lombok.Getter; +import lombok.Setter; +import net.onfirenetwork.onsetjava.data.Location; +import net.onfirenetwork.onsetjava.data.Vector; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +@Getter @Setter @Table("tbl_vehicle_seller") +public class VehicleSeller extends Model { + @Column(column = "id_vehicle_seller") + private int id; + @Column + private String name; + @Column + private int npcClothing; + @Column + private double x; + @Column + private double y; + @Column + private double z; + @Column + private double h; + @Column + private double sX; + @Column + private double sY; + @Column + private double sZ; + @Column + private double sH; + @Column(size = 0) + private String sellList; + private List sellListCache; + + public Location getLocation(){ + return new Location(x, y, z, h); + } + + public Location getSpawnLocation(){ + return new Location(sX, sY, sZ, sH); + } + + public List getSellList(){ + if(sellListCache == null){ + sellListCache = new Gson().fromJson(sellList, + new TypeToken>(){}.getType()); + } + return sellListCache; + } + + public void setSellList(List sellList) { + this.sellList = new Gson().toJson(sellList); + sellListCache = sellList; + } + + public boolean isNear(Player player) { + if(player.getLocation().distance(new Vector(this.x, this.y, this.z)) < 250) { + return true; + } + return false; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCharacterJobPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddCharacterJobPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCharacterJobPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddCharacterJobPayload.java index c53ebc8..e266687 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCharacterJobPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddCharacterJobPayload.java @@ -1,39 +1,39 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.character.CharacterJobLevel; - -public class AddCharacterJobPayload { - private String type; - private String jobId; - private int xp; - private int level; - private String levelName; - - public AddCharacterJobPayload(CharacterJobLevel characterJobLevel) { - this.type = "ADD_CHARACTERJOB_ITEM"; - this.jobId = characterJobLevel.getJobId(); - this.xp = characterJobLevel.getExp(); - this.level = characterJobLevel.getJobLevel().getLevel(); - this.levelName = characterJobLevel.getJobLevel().getName(); - } - - public String getType() { - return type; - } - - public String getJobId() { - return jobId; - } - - public int getXp() { - return xp; - } - - public int getLevel() { - return level; - } - - public String getLevelName() { - return levelName; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.character.CharacterJobLevel; + +public class AddCharacterJobPayload { + private String type; + private String jobId; + private int xp; + private int level; + private String levelName; + + public AddCharacterJobPayload(CharacterJobLevel characterJobLevel) { + this.type = "ADD_CHARACTERJOB_ITEM"; + this.jobId = characterJobLevel.getJobId(); + this.xp = characterJobLevel.getExp(); + this.level = characterJobLevel.getJobLevel().getLevel(); + this.levelName = characterJobLevel.getJobLevel().getName(); + } + + public String getType() { + return type; + } + + public String getJobId() { + return jobId; + } + + public int getXp() { + return xp; + } + + public int getLevel() { + return level; + } + + public String getLevelName() { + return levelName; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddClientContactPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddClientContactPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddClientContactPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddClientContactPayload.java index e745420..a0ce658 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddClientContactPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddClientContactPayload.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddClientContactPayload { - private String type; - - private int id; - private String name; - private String number; - - public AddClientContactPayload(int id, String name, String number) { - this.type = "ADD_CONTACT"; - this.id = id; - this.name = name; - this.number = number; - } - - public String getType() { - return type; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getNumber() { - return number; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddClientContactPayload { + private String type; + + private int id; + private String name; + private String number; + + public AddClientContactPayload(int id, String name, String number) { + this.type = "ADD_CONTACT"; + this.id = id; + this.name = name; + this.number = number; + } + + public String getType() { + return type; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public String getNumber() { + return number; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCompagnyEmployeePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddCompagnyEmployeePayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCompagnyEmployeePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddCompagnyEmployeePayload.java index 21e44d0..01d2c0c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddCompagnyEmployeePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddCompagnyEmployeePayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddCompagnyEmployeePayload { - private String type; - private String steamid; - private String name; - private int rank; - private boolean online; - - public AddCompagnyEmployeePayload(String steamid, String name, int rank, boolean online) { - this.type = "ADD_COMPAGNY_EMPLOYEE"; - this.steamid = steamid; - this.name = name; - this.rank = rank; - this.online = online; - } - - public String getType() { - return type; - } - - public String getSteamid() { - return steamid; - } - - public String getName() { - return name; - } - - public int getRank() { - return rank; - } - - public boolean isOnline() { - return online; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddCompagnyEmployeePayload { + private String type; + private String steamid; + private String name; + private int rank; + private boolean online; + + public AddCompagnyEmployeePayload(String steamid, String name, int rank, boolean online) { + this.type = "ADD_COMPAGNY_EMPLOYEE"; + this.steamid = steamid; + this.name = name; + this.rank = rank; + this.online = online; + } + + public String getType() { + return type; + } + + public String getSteamid() { + return steamid; + } + + public String getName() { + return name; + } + + public int getRank() { + return rank; + } + + public boolean isOnline() { + return online; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapMarkerPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapMarkerPayload.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapMarkerPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGameMapMarkerPayload.java index 4975d86..2683600 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapMarkerPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapMarkerPayload.java @@ -1,21 +1,21 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.model.GameMapMarker; - -public class AddGameMapMarkerPayload { - private String type; - private GameMapMarker marker; - - public AddGameMapMarkerPayload(GameMapMarker marker) { - this.marker = marker; - this.type = "GAMEMAP_ADD_MARKER"; - } - - public String getType() { - return type; - } - - public GameMapMarker getMarker() { - return marker; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.model.GameMapMarker; + +public class AddGameMapMarkerPayload { + private String type; + private GameMapMarker marker; + + public AddGameMapMarkerPayload(GameMapMarker marker) { + this.marker = marker; + this.type = "GAMEMAP_ADD_MARKER"; + } + + public String getType() { + return type; + } + + public GameMapMarker getMarker() { + return marker; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapZonePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapZonePayload.java similarity index 66% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapZonePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGameMapZonePayload.java index 1d3a8ad..5e371dc 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGameMapZonePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGameMapZonePayload.java @@ -1,22 +1,21 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.model.GameMapMarker; -import fr.yuki.YukiRPFramework.model.GameMapZone; - -public class AddGameMapZonePayload { - private String type; - private GameMapZone zone; - - public AddGameMapZonePayload(GameMapZone zone) { - this.zone = zone; - this.type = "GAMEMAP_ADD_ZONE"; - } - - public String getType() { - return type; - } - - public GameMapZone getZone() { - return zone; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.model.GameMapZone; + +public class AddGameMapZonePayload { + private String type; + private GameMapZone zone; + + public AddGameMapZonePayload(GameMapZone zone) { + this.zone = zone; + this.type = "GAMEMAP_ADD_ZONE"; + } + + public String getType() { + return type; + } + + public GameMapZone getZone() { + return zone; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGenericMenuItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGenericMenuItemPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGenericMenuItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGenericMenuItemPayload.java index c5a699e..82de432 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGenericMenuItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGenericMenuItemPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddGenericMenuItemPayload { - private String type; - private String text; - private String action; - - public AddGenericMenuItemPayload(String text, String action) { - this.type = "ADD_GENERIC_MENU_ITEM"; - this.text = text; - this.action = action; - } - - public String getType() { - return type; - } - - public String getText() { - return text; - } - - public String getAction() { - return action; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddGenericMenuItemPayload { + private String type; + private String text; + private String action; + + public AddGenericMenuItemPayload(String text, String action) { + this.type = "ADD_GENERIC_MENU_ITEM"; + this.text = text; + this.action = action; + } + + public String getType() { + return type; + } + + public String getText() { + return text; + } + + public String getAction() { + return action; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGrowboxMenuItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddGrowboxMenuItemPayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGrowboxMenuItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddGrowboxMenuItemPayload.java index 373b035..424096d 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddGrowboxMenuItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddGrowboxMenuItemPayload.java @@ -1,39 +1,39 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddGrowboxMenuItemPayload { - private String type; - private String id; - private int itemId; - private int water; - private int state; - private boolean seed; - - public AddGrowboxMenuItemPayload(String id, int itemId, int water, int state, boolean seed) { - this.id = id; - this.itemId = itemId; - this.water = water; - this.state = state; - this.seed = seed; - this.type = "ADD_GROWBOXMENU_ITEM"; - } - - public String getType() { - return type; - } - - public String getId() { - return id; - } - - public int getWater() { - return water; - } - - public int getState() { - return state; - } - - public boolean isSeed() { - return seed; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddGrowboxMenuItemPayload { + private String type; + private String id; + private int itemId; + private int water; + private int state; + private boolean seed; + + public AddGrowboxMenuItemPayload(String id, int itemId, int water, int state, boolean seed) { + this.id = id; + this.itemId = itemId; + this.water = water; + this.state = state; + this.seed = seed; + this.type = "ADD_GROWBOXMENU_ITEM"; + } + + public String getType() { + return type; + } + + public String getId() { + return id; + } + + public int getWater() { + return water; + } + + public int getState() { + return state; + } + + public boolean isSeed() { + return seed; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddItemInventoryPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddItemInventoryPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddItemInventoryPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddItemInventoryPayload.java index b060785..bbac97f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddItemInventoryPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddItemInventoryPayload.java @@ -1,52 +1,52 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.inventory.InventoryItem; - -public class AddItemInventoryPayload { - public class InventoryItemPayload { - private String id; - private int quantity; - private String itemId; - private String name; - - public InventoryItemPayload(String id, int quantity, String itemId, String name) { - this.id = id; - this.quantity = quantity; - this.itemId = itemId; - this.name = name; - } - - public int getQuantity() { - return quantity; - } - - public String getItemId() { - return itemId; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } - } - - private String type; - private InventoryItemPayload item; - - public AddItemInventoryPayload(InventoryItem inventoryItem) { - this.type = "ADD_ITEM_INVENTORY"; - this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), - inventoryItem.getTemplateId(), inventoryItem.getTemplate().getName()); - } - - public String getType() { - return type; - } - - public InventoryItemPayload getItem() { - return item; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.inventory.InventoryItem; + +public class AddItemInventoryPayload { + public class InventoryItemPayload { + private String id; + private int quantity; + private String itemId; + private String name; + + public InventoryItemPayload(String id, int quantity, String itemId, String name) { + this.id = id; + this.quantity = quantity; + this.itemId = itemId; + this.name = name; + } + + public int getQuantity() { + return quantity; + } + + public String getItemId() { + return itemId; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + } + + private String type; + private InventoryItemPayload item; + + public AddItemInventoryPayload(InventoryItem inventoryItem) { + this.type = "ADD_ITEM_INVENTORY"; + this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), + inventoryItem.getTemplateId(), inventoryItem.getTemplate().getName()); + } + + public String getType() { + return type; + } + + public InventoryItemPayload getItem() { + return item; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneConversationPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneConversationPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneConversationPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddPhoneConversationPayload.java index a6f3efe..3d2cbcf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneConversationPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneConversationPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddPhoneConversationPayload { - private String number; - private String lastMessage; - private String type; - - public AddPhoneConversationPayload(String number, String lastMessage) { - this.number = number; - this.lastMessage = lastMessage; - this.type = "ADD_PHONE_CONVERSATIONS"; - } - - public String getNumber() { - return number; - } - - public String getLastMessage() { - return lastMessage; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddPhoneConversationPayload { + private String number; + private String lastMessage; + private String type; + + public AddPhoneConversationPayload(String number, String lastMessage) { + this.number = number; + this.lastMessage = lastMessage; + this.type = "ADD_PHONE_CONVERSATIONS"; + } + + public String getNumber() { + return number; + } + + public String getLastMessage() { + return lastMessage; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneMessagePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneMessagePayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneMessagePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddPhoneMessagePayload.java index a6af7c2..026d825 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneMessagePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneMessagePayload.java @@ -1,32 +1,32 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddPhoneMessagePayload { - private String type; - private int messageType; - private String fromNumber; - private String message; - - public AddPhoneMessagePayload(int messageType, String fromNumber, String message) { - this.messageType = messageType; - this.fromNumber = fromNumber; - this.message = message; - - this.type = "ADD_PHONE_MESSAGE"; - } - - public String getType() { - return type; - } - - public int getMessageType() { - return messageType; - } - - public String getFromNumber() { - return fromNumber; - } - - public String getMessage() { - return message; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddPhoneMessagePayload { + private String type; + private int messageType; + private String fromNumber; + private String message; + + public AddPhoneMessagePayload(int messageType, String fromNumber, String message) { + this.messageType = messageType; + this.fromNumber = fromNumber; + this.message = message; + + this.type = "ADD_PHONE_MESSAGE"; + } + + public String getType() { + return type; + } + + public int getMessageType() { + return messageType; + } + + public String getFromNumber() { + return fromNumber; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneUrgencyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneUrgencyPayload.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneUrgencyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddPhoneUrgencyPayload.java index e9f004f..7afaa36 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddPhoneUrgencyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddPhoneUrgencyPayload.java @@ -1,55 +1,55 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddPhoneUrgencyPayload { - private final int id; - private final String from; - private final String text; - private final String service; - private final double x; - private final double y; - private final double z; - private String type; - - public AddPhoneUrgencyPayload(int id, String from, String text, String service, double x, double y, double z) { - this.type = "ADD_PHONE_URGENCY"; - this.id = id; - this.from = from; - this.text = text; - this.service = service; - this.x = x; - this.y = y; - this.z = z; - } - - public String getType() { - return type; - } - - public int getId() { - return id; - } - - public String getFrom() { - return from; - } - - public String getText() { - return text; - } - - public String getService() { - return service; - } - - public double getX() { - return x; - } - - public double getY() { - return y; - } - - public double getZ() { - return z; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddPhoneUrgencyPayload { + private final int id; + private final String from; + private final String text; + private final String service; + private final double x; + private final double y; + private final double z; + private String type; + + public AddPhoneUrgencyPayload(int id, String from, String text, String service, double x, double y, double z) { + this.type = "ADD_PHONE_URGENCY"; + this.id = id; + this.from = from; + this.text = text; + this.service = service; + this.x = x; + this.y = y; + this.z = z; + } + + public String getType() { + return type; + } + + public int getId() { + return id; + } + + public String getFrom() { + return from; + } + + public String getText() { + return text; + } + + public String getService() { + return service; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public double getZ() { + return z; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddSellerItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddSellerItemPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddSellerItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddSellerItemPayload.java index b33ff52..c842c53 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddSellerItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddSellerItemPayload.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddSellerItemPayload { - private String type; - private String id; - private String name; - private int price; - - public AddSellerItemPayload(String id, String name, int price) { - this.type = "ADD_SELLER_ITEM"; - this.id = id; - this.name = name; - this.price = price; - } - - public String getType() { - return type; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } - - public int getPrice() { - return price; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddSellerItemPayload { + private String type; + private String id; + private String name; + private int price; + + public AddSellerItemPayload(String id, String name, int price) { + this.type = "ADD_SELLER_ITEM"; + this.id = id; + this.name = name; + this.price = price; + } + + public String getType() { + return type; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public int getPrice() { + return price; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddToastPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddToastPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddToastPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddToastPayload.java index 86d273e..6b44ceb 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddToastPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddToastPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddToastPayload { - private String type; - private String notifType; - private String message; - - public AddToastPayload(String notifType, String message) { - this.notifType = notifType; - this.message = message; - this.type = "ADD_TOAST"; - } - - public String getType() { - return type; - } - - public String getNotifType() { - return notifType; - } - - public String getMessage() { - return message; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddToastPayload { + private String type; + private String notifType; + private String message; + + public AddToastPayload(String notifType, String message) { + this.notifType = notifType; + this.message = message; + this.type = "ADD_TOAST"; + } + + public String getType() { + return type; + } + + public String getNotifType() { + return notifType; + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVChestItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddVChestItemPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVChestItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddVChestItemPayload.java index 43b6fac..376980a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVChestItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddVChestItemPayload.java @@ -1,31 +1,31 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddVChestItemPayload { - private String type; - private String uuid; - private int modelId; - private String name; - - public AddVChestItemPayload(String uuid, int modelId, String name) { - this.uuid = uuid; - this.modelId = modelId; - this.name = name; - this.type = "ADD_VCHEST_ITEM"; - } - - public String getType() { - return type; - } - - public String getUuid() { - return uuid; - } - - public int getModelId() { - return modelId; - } - - public String getName() { - return name; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddVChestItemPayload { + private String type; + private String uuid; + private int modelId; + private String name; + + public AddVChestItemPayload(String uuid, int modelId, String name) { + this.uuid = uuid; + this.modelId = modelId; + this.name = name; + this.type = "ADD_VCHEST_ITEM"; + } + + public String getType() { + return type; + } + + public String getUuid() { + return uuid; + } + + public int getModelId() { + return modelId; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVSellerVehiclePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddVSellerVehiclePayload.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVSellerVehiclePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddVSellerVehiclePayload.java index 3015cbf..91d2a0f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVSellerVehiclePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddVSellerVehiclePayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddVSellerVehiclePayload { - private String type; - private int modelId; - private int price; - private String name; - private String description; - - public AddVSellerVehiclePayload(int modelId, int price, String name, String description) { - this.modelId = modelId; - this.price = price; - this.name = name; - this.description = description; - this.type = "ADD_VSELLER_VEHICLE"; - } - - public String getType() { - return type; - } - - public int getModelId() { - return modelId; - } - - public int getPrice() { - return price; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddVSellerVehiclePayload { + private String type; + private int modelId; + private int price; + private String name; + private String description; + + public AddVSellerVehiclePayload(int modelId, int price, String name, String description) { + this.modelId = modelId; + this.price = price; + this.name = name; + this.description = description; + this.type = "ADD_VSELLER_VEHICLE"; + } + + public String getType() { + return type; + } + + public int getModelId() { + return modelId; + } + + public int getPrice() { + return price; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVehicleGaragePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddVehicleGaragePayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVehicleGaragePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddVehicleGaragePayload.java index 7934f61..e4fef82 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddVehicleGaragePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddVehicleGaragePayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddVehicleGaragePayload { - private String type; - private int modelId; - private String uuid; - private String color; - private String plate; - - public AddVehicleGaragePayload(int modelId, String uuid, String color, String plate) { - this.modelId = modelId; - this.uuid = uuid; - this.color = color; - this.plate = plate; - this.type = "ADD_GARAGE_VEHICLE"; - } - - public String getType() { - return type; - } - - public int getModelId() { - return modelId; - } - - public String getUuid() { - return uuid; - } - - public String getColor() { - return color; - } - - public String getPlate() { - return plate; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddVehicleGaragePayload { + private String type; + private int modelId; + private String uuid; + private String color; + private String plate; + + public AddVehicleGaragePayload(int modelId, String uuid, String color, String plate) { + this.modelId = modelId; + this.uuid = uuid; + this.color = color; + this.plate = plate; + this.type = "ADD_GARAGE_VEHICLE"; + } + + public String getType() { + return type; + } + + public int getModelId() { + return modelId; + } + + public String getUuid() { + return uuid; + } + + public String getColor() { + return color; + } + + public String getPlate() { + return plate; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddXpBarItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/AddXpBarItemPayload.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/AddXpBarItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/AddXpBarItemPayload.java index dc53ed3..63fce78 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/AddXpBarItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/AddXpBarItemPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class AddXpBarItemPayload { - private String type; - private String text; - - public AddXpBarItemPayload(String text) { - this.text = text; - this.type = "ADD_XPBAR_ITEM"; - } - - public String getType() { - return type; - } - - public String getText() { - return text; - } -} +package fr.yuki.yrpf.net.payload; + +public class AddXpBarItemPayload { + private String type; + private String text; + + public AddXpBarItemPayload(String text) { + this.text = text; + this.type = "ADD_XPBAR_ITEM"; + } + + public String getType() { + return type; + } + + public String getText() { + return text; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/BuySellItemRequestPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/BuySellItemRequestPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/BuySellItemRequestPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/BuySellItemRequestPayload.java index ab5699c..0ddb588 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/BuySellItemRequestPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/BuySellItemRequestPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class BuySellItemRequestPayload { - private String id; - private int quantity; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getQuantity() { - return quantity; - } - - public void setQuantity(int quantity) { - this.quantity = quantity; - } -} +package fr.yuki.yrpf.net.payload; + +public class BuySellItemRequestPayload { + private String id; + private int quantity; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getQuantity() { + return quantity; + } + + public void setQuantity(int quantity) { + this.quantity = quantity; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearCompagnyEmployeesPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ClearCompagnyEmployeesPayload.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearCompagnyEmployeesPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ClearCompagnyEmployeesPayload.java index 4c9f623..2d95ca2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearCompagnyEmployeesPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ClearCompagnyEmployeesPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ClearCompagnyEmployeesPayload { - private String type; - - public ClearCompagnyEmployeesPayload() { - this.type = "CLEAR_COMPAGNY_EMPLOYEES"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ClearCompagnyEmployeesPayload { + private String type; + + public ClearCompagnyEmployeesPayload() { + this.type = "CLEAR_COMPAGNY_EMPLOYEES"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearGenericMenuPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ClearGenericMenuPayload.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearGenericMenuPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ClearGenericMenuPayload.java index 55250a0..8982ec7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearGenericMenuPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ClearGenericMenuPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ClearGenericMenuPayload { - private String type; - - public ClearGenericMenuPayload() { - this.type = "CLEAR_GENERIC_MENU"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ClearGenericMenuPayload { + private String type; + + public ClearGenericMenuPayload() { + this.type = "CLEAR_GENERIC_MENU"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearPhoneUrgencyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ClearPhoneUrgencyPayload.java similarity index 78% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearPhoneUrgencyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ClearPhoneUrgencyPayload.java index 0819ebc..3aa7b57 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ClearPhoneUrgencyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ClearPhoneUrgencyPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ClearPhoneUrgencyPayload { - private String type; - - public ClearPhoneUrgencyPayload() { - this.type = "CLEAR_PHONE_URGENCY"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ClearPhoneUrgencyPayload { + private String type; + + public ClearPhoneUrgencyPayload() { + this.type = "CLEAR_PHONE_URGENCY"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/GrowboxFillWaterPotPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/GrowboxFillWaterPotPayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/GrowboxFillWaterPotPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/GrowboxFillWaterPotPayload.java index 33540fc..5ddea79 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/GrowboxFillWaterPotPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/GrowboxFillWaterPotPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class GrowboxFillWaterPotPayload { - private String growboxId; - private String potId; - - public String getGrowboxId() { - return growboxId; - } - - public void setGrowboxId(String growboxId) { - this.growboxId = growboxId; - } - - public String getPotId() { - return potId; - } - - public void setPotId(String potId) { - this.potId = potId; - } -} +package fr.yuki.yrpf.net.payload; + +public class GrowboxFillWaterPotPayload { + private String growboxId; + private String potId; + + public String getGrowboxId() { + return growboxId; + } + + public void setGrowboxId(String growboxId) { + this.growboxId = growboxId; + } + + public String getPotId() { + return potId; + } + + public void setPotId(String potId) { + this.potId = potId; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/PhoneAddContactPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/PhoneAddContactPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/PhoneAddContactPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/PhoneAddContactPayload.java index f88a0a5..ac49014 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/PhoneAddContactPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/PhoneAddContactPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class PhoneAddContactPayload { - private String name; - private String number; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } -} +package fr.yuki.yrpf.net.payload; + +public class PhoneAddContactPayload { + private String name; + private String number; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RemoteItemInventoryPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RemoteItemInventoryPayload.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RemoteItemInventoryPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RemoteItemInventoryPayload.java index 563aed4..6c43314 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RemoteItemInventoryPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RemoteItemInventoryPayload.java @@ -1,16 +1,16 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RemoteItemInventoryPayload { - private String type; - private String id; - - public RemoteItemInventoryPayload(String id) { - this.id = id; - this.type = "REMOVE_ITEM_INVENTORY"; - - } - - public String getId() { - return id; - } -} +package fr.yuki.yrpf.net.payload; + +public class RemoteItemInventoryPayload { + private String type; + private String id; + + public RemoteItemInventoryPayload(String id) { + this.id = id; + this.type = "REMOVE_ITEM_INVENTORY"; + + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestBuyVehiclePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestBuyVehiclePayload.java similarity index 86% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestBuyVehiclePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestBuyVehiclePayload.java index 0769edb..2c1fce3 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestBuyVehiclePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestBuyVehiclePayload.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import java.awt.*; - -public class RequestBuyVehiclePayload { - private int modelId; - private String color; - - public int getModelId() { - return modelId; - } - - public void setModelId(int modelId) { - this.modelId = modelId; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } - - public Color getAWTColor() { - return Color.decode(this.color); - } -} +package fr.yuki.yrpf.net.payload; + +import java.awt.*; + +public class RequestBuyVehiclePayload { + private int modelId; + private String color; + + public int getModelId() { + return modelId; + } + + public void setModelId(int modelId) { + this.modelId = modelId; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public Color getAWTColor() { + return Color.decode(this.color); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestInventoryContentPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestInventoryContentPayload.java similarity index 77% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestInventoryContentPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestInventoryContentPayload.java index ea9c1bc..e6f9f68 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestInventoryContentPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestInventoryContentPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestInventoryContentPayload { - private String type; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestInventoryContentPayload { + private String type; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestPhoneSendMessagePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestPhoneSendMessagePayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestPhoneSendMessagePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestPhoneSendMessagePayload.java index 381966d..59109f7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestPhoneSendMessagePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestPhoneSendMessagePayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestPhoneSendMessagePayload { - private String number; - private String message; - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestPhoneSendMessagePayload { + private String number; + private String message; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestThrowItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestThrowItemPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestThrowItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestThrowItemPayload.java index 9912938..9db67ec 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestThrowItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestThrowItemPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestThrowItemPayload { - private String id; - private int quantity; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getQuantity() { - return quantity; - } - - public void setQuantity(int quantity) { - this.quantity = quantity; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestThrowItemPayload { + private String id; + private int quantity; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getQuantity() { + return quantity; + } + + public void setQuantity(int quantity) { + this.quantity = quantity; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestUseItemPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/RequestUseItemPayload.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestUseItemPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/RequestUseItemPayload.java index b2ee4f0..a5d4f79 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/RequestUseItemPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/RequestUseItemPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class RequestUseItemPayload { - private String id; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } -} +package fr.yuki.yrpf.net.payload; + +public class RequestUseItemPayload { + private String id; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ResetVehicleGaragePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/ResetVehicleGaragePayload.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/ResetVehicleGaragePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/ResetVehicleGaragePayload.java index b93f5d7..060e1b9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/ResetVehicleGaragePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/ResetVehicleGaragePayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class ResetVehicleGaragePayload { - private String type; - - public ResetVehicleGaragePayload() { - this.type = "RESET_GARAGE_VEHICLE"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class ResetVehicleGaragePayload { + private String type; + + public ResetVehicleGaragePayload() { + this.type = "RESET_GARAGE_VEHICLE"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetBankCashAmount.java b/src/main/java/fr/yuki/yrpf/net/payload/SetBankCashAmount.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetBankCashAmount.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetBankCashAmount.java index a6f964c..7eaefe9 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetBankCashAmount.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetBankCashAmount.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetBankCashAmount { - private String type; - private int amount; - private int cashAmount; - - public SetBankCashAmount(int amount, int cashAmount) { - this.type = "SET_BANK_CASH_AMOUNT"; - this.amount = amount; - this.cashAmount = cashAmount; - } - - public String getType() { - return type; - } - - public int getAmount() { - return amount; - } - - public int getCashAmount() { - return cashAmount; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetBankCashAmount { + private String type; + private int amount; + private int cashAmount; + + public SetBankCashAmount(int amount, int cashAmount) { + this.type = "SET_BANK_CASH_AMOUNT"; + this.amount = amount; + this.cashAmount = cashAmount; + } + + public String getType() { + return type; + } + + public int getAmount() { + return amount; + } + + public int getCashAmount() { + return cashAmount; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetCompagnyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetCompagnyPayload.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetCompagnyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetCompagnyPayload.java index 4f7d40a..ad33e39 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetCompagnyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetCompagnyPayload.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetCompagnyPayload { - private String type; - private int id; - private String name; - private int myrank; - private int bankCash; - - public SetCompagnyPayload(int id, String name, int myrank, int bankCash) { - this.type = "SET_COMPAGNY"; - this.id = id; - this.name = name; - this.myrank = myrank; - this.bankCash = bankCash; - } - - public String getType() { - return type; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public int getMyrank() { - return myrank; - } - - public int getBankCash() { - return bankCash; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetCompagnyPayload { + private String type; + private int id; + private String name; + private int myrank; + private int bankCash; + + public SetCompagnyPayload(int id, String name, int myrank, int bankCash) { + this.type = "SET_COMPAGNY"; + this.id = id; + this.name = name; + this.myrank = myrank; + this.bankCash = bankCash; + } + + public String getType() { + return type; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public int getMyrank() { + return myrank; + } + + public int getBankCash() { + return bankCash; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetFoodPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetFoodPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetFoodPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetFoodPayload.java index 45ef620..6cda340 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetFoodPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetFoodPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetFoodPayload { - private String type; - private int foodState; - private int drinkState; - - public SetFoodPayload(int foodState, int drinkState) { - this.foodState = foodState; - this.drinkState = drinkState; - this.type = "SET_FOOD"; - } - - public String getType() { - return type; - } - - public int getFoodState() { - return foodState; - } - - public int getDrinkState() { - return drinkState; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetFoodPayload { + private String type; + private int foodState; + private int drinkState; + + public SetFoodPayload(int foodState, int drinkState) { + this.foodState = foodState; + this.drinkState = drinkState; + this.type = "SET_FOOD"; + } + + public String getType() { + return type; + } + + public int getFoodState() { + return foodState; + } + + public int getDrinkState() { + return drinkState; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetGrowboxPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetGrowboxPayload.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetGrowboxPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetGrowboxPayload.java index 7259d00..100f885 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetGrowboxPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetGrowboxPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetGrowboxPayload { - private String type; - private String id; - - public SetGrowboxPayload(String id) { - this.id = id; - this.type = "SET_GROWBOX"; - } - - public String getType() { - return type; - } - - public String getId() { - return id; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetGrowboxPayload { + private String type; + private String id; + + public SetGrowboxPayload(String id) { + this.id = id; + this.type = "SET_GROWBOX"; + } + + public String getType() { + return type; + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetHouseInfosPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetHouseInfosPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetHouseInfosPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetHouseInfosPayload.java index 568a8a0..dd3c7a5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetHouseInfosPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetHouseInfosPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetHouseInfosPayload { - private String type; - private int housePrice; - private String houseName; - - public SetHouseInfosPayload(int housePrice, String houseName) { - this.housePrice = housePrice; - this.houseName = houseName; - this.type = "SET_HOUSE_INFOS"; - } - - public String getType() { - return type; - } - - public int getHousePrice() { - return housePrice; - } - - public String getHouseName() { - return houseName; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetHouseInfosPayload { + private String type; + private int housePrice; + private String houseName; + + public SetHouseInfosPayload(int housePrice, String houseName) { + this.housePrice = housePrice; + this.houseName = houseName; + this.type = "SET_HOUSE_INFOS"; + } + + public String getType() { + return type; + } + + public int getHousePrice() { + return housePrice; + } + + public String getHouseName() { + return houseName; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetLangPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetLangPayload.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetLangPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetLangPayload.java index 09ccc7e..c7dbb35 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetLangPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetLangPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetLangPayload { - private String type; - private String lang; - - public SetLangPayload(String lang) { - this.type = "SET_LANG"; - this.lang = lang; - } - - public String getType() { - return type; - } - - public String getLang() { - return lang; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetLangPayload { + private String type; + private String lang; + + public SetLangPayload(String lang) { + this.type = "SET_LANG"; + this.lang = lang; + } + + public String getType() { + return type; + } + + public String getLang() { + return lang; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneCallStatePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneCallStatePayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneCallStatePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetPhoneCallStatePayload.java index 97131eb..680a82c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneCallStatePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneCallStatePayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetPhoneCallStatePayload { - private String type; - private int inCallState; - private String inCallWith; - - public SetPhoneCallStatePayload(int inCallState, String inCallWith) { - this.type = "SET_PHONE_CALL_STATE"; - this.inCallState = inCallState; - this.inCallWith = inCallWith; - } - - public String getType() { - return type; - } - - public int getInCallState() { - return inCallState; - } - - public String getInCallWith() { - return inCallWith; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetPhoneCallStatePayload { + private String type; + private int inCallState; + private String inCallWith; + + public SetPhoneCallStatePayload(int inCallState, String inCallWith) { + this.type = "SET_PHONE_CALL_STATE"; + this.inCallState = inCallState; + this.inCallWith = inCallWith; + } + + public String getType() { + return type; + } + + public int getInCallState() { + return inCallState; + } + + public String getInCallWith() { + return inCallWith; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneNumberPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneNumberPayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneNumberPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetPhoneNumberPayload.java index b08e697..e646718 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetPhoneNumberPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetPhoneNumberPayload.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetPhoneNumberPayload { - private final String type; - private String phoneNumber; - - public SetPhoneNumberPayload(String phoneNumber) { - this.type = "SET_PHONE_NUMBER"; - this.phoneNumber = phoneNumber; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetPhoneNumberPayload { + private final String type; + private String phoneNumber; + + public SetPhoneNumberPayload(String phoneNumber) { + this.type = "SET_PHONE_NUMBER"; + this.phoneNumber = phoneNumber; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetWindowStatePayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SetWindowStatePayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SetWindowStatePayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SetWindowStatePayload.java index 6aa211d..a056722 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SetWindowStatePayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SetWindowStatePayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SetWindowStatePayload { - private String type; - private String windowType; - private boolean windowState; - - public SetWindowStatePayload(String windowType, boolean windowState) { - this.type = "SET_WINDOW_STATE"; - this.windowType = windowType; - this.windowState = windowState; - } - - public String getType() { - return type; - } - - public String getWindowType() { - return windowType; - } - - public boolean isWindowState() { - return windowState; - } -} +package fr.yuki.yrpf.net.payload; + +public class SetWindowStatePayload { + private String type; + private String windowType; + private boolean windowState; + + public SetWindowStatePayload(String windowType, boolean windowState) { + this.type = "SET_WINDOW_STATE"; + this.windowType = windowType; + this.windowState = windowState; + } + + public String getType() { + return type; + } + + public String getWindowType() { + return windowType; + } + + public boolean isWindowState() { + return windowState; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SolveUrgencyPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/SolveUrgencyPayload.java similarity index 83% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/SolveUrgencyPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/SolveUrgencyPayload.java index 5e00c24..1331cd7 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/SolveUrgencyPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/SolveUrgencyPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class SolveUrgencyPayload { - private String service; - private int id; - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } -} +package fr.yuki.yrpf.net.payload; + +public class SolveUrgencyPayload { + private String service; + private int id; + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StartPhoneCallTimerPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/StartPhoneCallTimerPayload.java similarity index 79% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/StartPhoneCallTimerPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/StartPhoneCallTimerPayload.java index 0b6fe74..26bd144 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StartPhoneCallTimerPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/StartPhoneCallTimerPayload.java @@ -1,13 +1,13 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class StartPhoneCallTimerPayload { - private String type; - - public StartPhoneCallTimerPayload() { - this.type = "START_PHONE_CALL_TIMER"; - } - - public String getType() { - return type; - } -} +package fr.yuki.yrpf.net.payload; + +public class StartPhoneCallTimerPayload { + private String type; + + public StartPhoneCallTimerPayload() { + this.type = "START_PHONE_CALL_TIMER"; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StyleSavePartPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/StyleSavePartPayload.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/StyleSavePartPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/StyleSavePartPayload.java index 5db860c..1507873 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/StyleSavePartPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/StyleSavePartPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class StyleSavePartPayload { - private String partType; - private String value; - - public String getPartType() { - return partType; - } - - public void setPartType(String partType) { - this.partType = partType; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} +package fr.yuki.yrpf.net.payload; + +public class StyleSavePartPayload { + private String partType; + private String value; + + public String getPartType() { + return partType; + } + + public void setPartType(String partType) { + this.partType = partType; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateInventoryWeightPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/UpdateInventoryWeightPayload.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateInventoryWeightPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/UpdateInventoryWeightPayload.java index fd0b8ba..375bbde 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateInventoryWeightPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/UpdateInventoryWeightPayload.java @@ -1,25 +1,25 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class UpdateInventoryWeightPayload { - private String type; - private float currentWeight; - private float maxWeight; - - public UpdateInventoryWeightPayload(float currentWeight, float maxWeight) { - this.type = "UPDATE_INVENTORY_WEIGHT"; - this.currentWeight = currentWeight; - this.maxWeight = maxWeight; - } - - public String getType() { - return type; - } - - public float getCurrentWeight() { - return currentWeight; - } - - public float getMaxWeight() { - return maxWeight; - } -} +package fr.yuki.yrpf.net.payload; + +public class UpdateInventoryWeightPayload { + private String type; + private float currentWeight; + private float maxWeight; + + public UpdateInventoryWeightPayload(float currentWeight, float maxWeight) { + this.type = "UPDATE_INVENTORY_WEIGHT"; + this.currentWeight = currentWeight; + this.maxWeight = maxWeight; + } + + public String getType() { + return type; + } + + public float getCurrentWeight() { + return currentWeight; + } + + public float getMaxWeight() { + return maxWeight; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateItemInventoryPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/UpdateItemInventoryPayload.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateItemInventoryPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/UpdateItemInventoryPayload.java index abc5cd7..3cecc09 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UpdateItemInventoryPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/UpdateItemInventoryPayload.java @@ -1,45 +1,45 @@ -package fr.yuki.YukiRPFramework.net.payload; - -import fr.yuki.YukiRPFramework.inventory.InventoryItem; - -public class UpdateItemInventoryPayload { - public class InventoryItemPayload { - private String id; - private int quantity; - private String itemId; - - public InventoryItemPayload(String id, int quantity, String itemId) { - this.id = id; - this.quantity = quantity; - this.itemId = itemId; - } - - public int getQuantity() { - return quantity; - } - - public String getItemId() { - return itemId; - } - - public String getId() { - return id; - } - } - - private String type; - private InventoryItemPayload item; - - public UpdateItemInventoryPayload(InventoryItem inventoryItem) { - this.type = "UPDATE_ITEM_INVENTORY"; - this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), inventoryItem.getTemplateId()); - } - - public String getType() { - return type; - } - - public InventoryItemPayload getItem() { - return item; - } -} +package fr.yuki.yrpf.net.payload; + +import fr.yuki.yrpf.inventory.InventoryItem; + +public class UpdateItemInventoryPayload { + public class InventoryItemPayload { + private String id; + private int quantity; + private String itemId; + + public InventoryItemPayload(String id, int quantity, String itemId) { + this.id = id; + this.quantity = quantity; + this.itemId = itemId; + } + + public int getQuantity() { + return quantity; + } + + public String getItemId() { + return itemId; + } + + public String getId() { + return id; + } + } + + private String type; + private InventoryItemPayload item; + + public UpdateItemInventoryPayload(InventoryItem inventoryItem) { + this.type = "UPDATE_ITEM_INVENTORY"; + this.item = new InventoryItemPayload(inventoryItem.getId(), inventoryItem.getAmount(), inventoryItem.getTemplateId()); + } + + public String getType() { + return type; + } + + public InventoryItemPayload getItem() { + return item; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UrgencyRequestPayload.java b/src/main/java/fr/yuki/yrpf/net/payload/UrgencyRequestPayload.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/net/payload/UrgencyRequestPayload.java rename to src/main/java/fr/yuki/yrpf/net/payload/UrgencyRequestPayload.java index 74828e0..54df22a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/net/payload/UrgencyRequestPayload.java +++ b/src/main/java/fr/yuki/yrpf/net/payload/UrgencyRequestPayload.java @@ -1,22 +1,22 @@ -package fr.yuki.YukiRPFramework.net.payload; - -public class UrgencyRequestPayload { - private String service; - private String text; - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } -} +package fr.yuki.yrpf.net.payload; + +public class UrgencyRequestPayload { + private String service; + private String text; + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneCall.java b/src/main/java/fr/yuki/yrpf/phone/PhoneCall.java similarity index 87% rename from src/main/java/fr/yuki/YukiRPFramework/phone/PhoneCall.java rename to src/main/java/fr/yuki/yrpf/phone/PhoneCall.java index c94bf2c..7b9bca8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneCall.java +++ b/src/main/java/fr/yuki/yrpf/phone/PhoneCall.java @@ -1,115 +1,114 @@ -package fr.yuki.YukiRPFramework.phone; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.character.CharacterState; -import fr.yuki.YukiRPFramework.manager.CharacterManager; -import fr.yuki.YukiRPFramework.manager.SoundManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.net.payload.SetHouseInfosPayload; -import fr.yuki.YukiRPFramework.net.payload.SetPhoneCallStatePayload; -import fr.yuki.YukiRPFramework.net.payload.StartPhoneCallTimerPayload; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Player; -import net.onfirenetwork.onsetjava.enums.Animation; - -public class PhoneCall { - public static int CURRENT_CALL_ID = 1000; - - private int id; - private Player caller; - private Player receiver; - private int state = 1; - - public PhoneCall(Player caller, Player receiver) { - this.id = CURRENT_CALL_ID; - CURRENT_CALL_ID++; - this.caller = caller; - this.receiver = receiver; - } - - public boolean isCaller(Player player) { - return this.caller.getId() == player.getId(); - } - - public void displayCall() { - // Start the call - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); - - // Display state - if(state == 1) { // Pending - Account receiverAccount = WorldManager.getPlayerAccount(receiver); - Account callerAccount = WorldManager.getPlayerAccount(caller); - - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(1, - receiverAccount.getPhoneNumber()))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(2, - callerAccount.getPhoneNumber()))); - - SoundManager.playSound2D(this.receiver, "ringtone", "sounds/ringtone.mp3", 0.2); - SoundManager.playSound2D(this.caller, "beep", "sounds/calling_beep.mp3", 0.2); - } - } - - public void begin() { - this.caller.setVoiceChannel(this.id, true); - this.receiver.setVoiceChannel(this.id, true); - Onset.print("Voice channel set to id: " + this.id); - - Account receiverAccount = WorldManager.getPlayerAccount(receiver); - Account callerAccount = WorldManager.getPlayerAccount(caller); - this.state = 2; - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, - receiverAccount.getPhoneNumber()))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, - callerAccount.getPhoneNumber()))); - - this.caller.setAnimation(Animation.PHONE_TALKING01); - this.receiver.setAnimation(Animation.PHONE_TALKING01); - - SoundManager.stopSound2D(this.receiver, "ringtone"); - SoundManager.stopSound2D(this.caller, "beep"); - } - - public void end() { - if(this.state == 1) { // Pending - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - - SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); - SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); - - - SoundManager.stopSound2D(this.receiver, "ringtone"); - SoundManager.stopSound2D(this.caller, "beep"); - } else if(this.state == 2) { // In call - this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, - ""))); - this.caller.setVoiceChannel(this.id, false); - this.receiver.setVoiceChannel(this.id, false); - SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); - SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); - } - - CharacterState callerState = CharacterManager.getCharacterStateByPlayer(this.caller); - CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(this.receiver); - callerState.setCurrentPhoneCall(null); - receiverState.setCurrentPhoneCall(null); - - this.caller.setAnimation(Animation.PHONE_PUTAWAY); - this.receiver.setAnimation(Animation.PHONE_PUTAWAY); - } - - public Player getCaller() { - return caller; - } - - public Player getReceiver() { - return receiver; - } -} +package fr.yuki.yrpf.phone; + +import com.google.gson.Gson; +import fr.yuki.yrpf.character.CharacterState; +import fr.yuki.yrpf.manager.CharacterManager; +import fr.yuki.yrpf.manager.SoundManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.net.payload.SetPhoneCallStatePayload; +import fr.yuki.yrpf.net.payload.StartPhoneCallTimerPayload; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.entity.Player; +import net.onfirenetwork.onsetjava.enums.Animation; + +public class PhoneCall { + public static int CURRENT_CALL_ID = 1000; + + private int id; + private Player caller; + private Player receiver; + private int state = 1; + + public PhoneCall(Player caller, Player receiver) { + this.id = CURRENT_CALL_ID; + CURRENT_CALL_ID++; + this.caller = caller; + this.receiver = receiver; + } + + public boolean isCaller(Player player) { + return this.caller.getId() == player.getId(); + } + + public void displayCall() { + // Start the call + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new StartPhoneCallTimerPayload())); + + // Display state + if(state == 1) { // Pending + Account receiverAccount = WorldManager.getPlayerAccount(receiver); + Account callerAccount = WorldManager.getPlayerAccount(caller); + + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(1, + receiverAccount.getPhoneNumber()))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(2, + callerAccount.getPhoneNumber()))); + + SoundManager.playSound2D(this.receiver, "ringtone", "sounds/ringtone.mp3", 0.2); + SoundManager.playSound2D(this.caller, "beep", "sounds/calling_beep.mp3", 0.2); + } + } + + public void begin() { + this.caller.setVoiceChannel(this.id, true); + this.receiver.setVoiceChannel(this.id, true); + Onset.print("Voice channel set to id: " + this.id); + + Account receiverAccount = WorldManager.getPlayerAccount(receiver); + Account callerAccount = WorldManager.getPlayerAccount(caller); + this.state = 2; + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, + receiverAccount.getPhoneNumber()))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(3, + callerAccount.getPhoneNumber()))); + + this.caller.setAnimation(Animation.PHONE_TALKING01); + this.receiver.setAnimation(Animation.PHONE_TALKING01); + + SoundManager.stopSound2D(this.receiver, "ringtone"); + SoundManager.stopSound2D(this.caller, "beep"); + } + + public void end() { + if(this.state == 1) { // Pending + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + + SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); + SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); + + + SoundManager.stopSound2D(this.receiver, "ringtone"); + SoundManager.stopSound2D(this.caller, "beep"); + } else if(this.state == 2) { // In call + this.caller.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + this.receiver.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new SetPhoneCallStatePayload(-1, + ""))); + this.caller.setVoiceChannel(this.id, false); + this.receiver.setVoiceChannel(this.id, false); + SoundManager.playSound2D(this.receiver, "call_end", "sounds/call_end.mp3", 0.2); + SoundManager.playSound2D(this.caller, "call_end", "sounds/call_end.mp3", 0.2); + } + + CharacterState callerState = CharacterManager.getCharacterStateByPlayer(this.caller); + CharacterState receiverState = CharacterManager.getCharacterStateByPlayer(this.receiver); + callerState.setCurrentPhoneCall(null); + receiverState.setCurrentPhoneCall(null); + + this.caller.setAnimation(Animation.PHONE_PUTAWAY); + this.receiver.setAnimation(Animation.PHONE_PUTAWAY); + } + + public Player getCaller() { + return caller; + } + + public Player getReceiver() { + return receiver; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneMessage.java b/src/main/java/fr/yuki/yrpf/phone/PhoneMessage.java similarity index 90% rename from src/main/java/fr/yuki/YukiRPFramework/phone/PhoneMessage.java rename to src/main/java/fr/yuki/yrpf/phone/PhoneMessage.java index 3ff22f5..b4173ea 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/phone/PhoneMessage.java +++ b/src/main/java/fr/yuki/yrpf/phone/PhoneMessage.java @@ -1,40 +1,40 @@ -package fr.yuki.YukiRPFramework.phone; - -public class PhoneMessage { - private String fromNumber; - private String toNumber; - private String message; - private int messageType; - - public String getFromNumber() { - return fromNumber; - } - - public void setFromNumber(String fromNumber) { - this.fromNumber = fromNumber; - } - - public String getToNumber() { - return toNumber; - } - - public void setToNumber(String toNumber) { - this.toNumber = toNumber; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public int getMessageType() { - return messageType; - } - - public void setMessageType(int messageType) { - this.messageType = messageType; - } -} +package fr.yuki.yrpf.phone; + +public class PhoneMessage { + private String fromNumber; + private String toNumber; + private String message; + private int messageType; + + public String getFromNumber() { + return fromNumber; + } + + public void setFromNumber(String fromNumber) { + this.fromNumber = fromNumber; + } + + public String getToNumber() { + return toNumber; + } + + public void setToNumber(String toNumber) { + this.toNumber = toNumber; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public int getMessageType() { + return messageType; + } + + public void setMessageType(int messageType) { + this.messageType = messageType; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/phone/UrgencyPhoneMessage.java b/src/main/java/fr/yuki/yrpf/phone/UrgencyPhoneMessage.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/phone/UrgencyPhoneMessage.java rename to src/main/java/fr/yuki/yrpf/phone/UrgencyPhoneMessage.java index d36b880..e28e46f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/phone/UrgencyPhoneMessage.java +++ b/src/main/java/fr/yuki/yrpf/phone/UrgencyPhoneMessage.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.phone; - -import net.onfirenetwork.onsetjava.data.Vector; - -public class UrgencyPhoneMessage extends PhoneMessage { - private int id; - private String service; - private Vector position; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public Vector getPosition() { - return position; - } - - public void setPosition(Vector position) { - this.position = position; - } -} +package fr.yuki.yrpf.phone; + +import net.onfirenetwork.onsetjava.data.Vector; + +public class UrgencyPhoneMessage extends PhoneMessage { + private int id; + private String service; + private Vector position; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public Vector getPosition() { + return position; + } + + public void setPosition(Vector position) { + this.position = position; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/TebexAPI.java b/src/main/java/fr/yuki/yrpf/tebex/TebexAPI.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/TebexAPI.java rename to src/main/java/fr/yuki/yrpf/tebex/TebexAPI.java index 504293e..31bc7f5 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/TebexAPI.java +++ b/src/main/java/fr/yuki/yrpf/tebex/TebexAPI.java @@ -1,88 +1,86 @@ -package fr.yuki.YukiRPFramework.tebex; - -import com.google.gson.FieldNamingPolicy; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import fr.yuki.YukiRPFramework.tebex.responses.Command; -import fr.yuki.YukiRPFramework.tebex.responses.TebexCommandQueue; -import fr.yuki.YukiRPFramework.tebex.responses.TebexInformationResponse; -import net.onfirenetwork.onsetjava.Onset; -import sun.net.www.http.HttpClient; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; - -public class TebexAPI { - private String secretKey; - private String baseUrl = "https://plugin.tebex.io"; - - public TebexAPI(String secretKey) throws Exception { - this.secretKey = secretKey; - TebexInformationResponse tebexInformationResponse = this.verifySecret(); - if(tebexInformationResponse == null) { - throw new Exception("Can't initialize TebexAPI"); - } - Onset.print("Tebex account is " + tebexInformationResponse.getAccount().getName() + " with currency " + tebexInformationResponse.getAccount().getCurrency().getSymbol()); - } - - private HttpURLConnection getTebexRequest(String path, String method) throws IOException { - HttpURLConnection con = (HttpURLConnection) new URL(this.baseUrl + path).openConnection(); - con.setRequestMethod(method); - con.setRequestProperty("X-Tebex-Secret", this.secretKey); - con.setRequestProperty("user-agent", "Onset Server"); - return con; - } - - private String readyBody(HttpURLConnection con) throws IOException { - BufferedReader in = new BufferedReader( - new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer response = new StringBuffer(); - - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } - in.close(); - return response.toString(); - } - - private TebexInformationResponse verifySecret() throws IOException { - HttpURLConnection request = this.getTebexRequest("/information", "GET"); - try { - int responseCode = request.getResponseCode(); - String body = this.readyBody(request); - Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - return gson.fromJson(body, TebexInformationResponse.class); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - public TebexCommandQueue getCommandQueues() throws IOException { - HttpURLConnection request = this.getTebexRequest("/queue/offline-commands", "GET"); - try { - int responseCode = request.getResponseCode(); - String body = this.readyBody(request); - Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - return gson.fromJson(body, TebexCommandQueue.class); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - public void deleteCommand(Command command) throws IOException { - HttpURLConnection request = this.getTebexRequest("/queue?ids[]=" + command.getID(), "DELETE"); - try { - int responseCode = request.getResponseCode(); - String body = this.readyBody(request); - } catch (IOException e) { - e.printStackTrace(); - } - } -} +package fr.yuki.yrpf.tebex; + +import com.google.gson.FieldNamingPolicy; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import fr.yuki.yrpf.tebex.responses.Command; +import fr.yuki.yrpf.tebex.responses.TebexCommandQueue; +import fr.yuki.yrpf.tebex.responses.TebexInformationResponse; +import net.onfirenetwork.onsetjava.Onset; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class TebexAPI { + private String secretKey; + private String baseUrl = "https://plugin.tebex.io"; + + public TebexAPI(String secretKey) throws Exception { + this.secretKey = secretKey; + TebexInformationResponse tebexInformationResponse = this.verifySecret(); + if(tebexInformationResponse == null) { + throw new Exception("Can't initialize TebexAPI"); + } + Onset.print("Tebex account is " + tebexInformationResponse.getAccount().getName() + " with currency " + tebexInformationResponse.getAccount().getCurrency().getSymbol()); + } + + private HttpURLConnection getTebexRequest(String path, String method) throws IOException { + HttpURLConnection con = (HttpURLConnection) new URL(this.baseUrl + path).openConnection(); + con.setRequestMethod(method); + con.setRequestProperty("X-Tebex-Secret", this.secretKey); + con.setRequestProperty("user-agent", "Onset Server"); + return con; + } + + private String readyBody(HttpURLConnection con) throws IOException { + BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + return response.toString(); + } + + private TebexInformationResponse verifySecret() throws IOException { + HttpURLConnection request = this.getTebexRequest("/information", "GET"); + try { + int responseCode = request.getResponseCode(); + String body = this.readyBody(request); + Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); + return gson.fromJson(body, TebexInformationResponse.class); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + public TebexCommandQueue getCommandQueues() throws IOException { + HttpURLConnection request = this.getTebexRequest("/queue/offline-commands", "GET"); + try { + int responseCode = request.getResponseCode(); + String body = this.readyBody(request); + Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); + return gson.fromJson(body, TebexCommandQueue.class); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + public void deleteCommand(Command command) throws IOException { + HttpURLConnection request = this.getTebexRequest("/queue?ids[]=" + command.getID(), "DELETE"); + try { + int responseCode = request.getResponseCode(); + String body = this.readyBody(request); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Account.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Account.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Account.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Account.java index 211c84e..c63e946 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Account.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Account.java @@ -1,33 +1,33 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - - -public class Account { - private long id; - private String domain; - private String name; - private Currency currency; - private boolean onlineMode; - private String gameType; - private boolean logEvents; - - public long getID() { return id; } - public void setID(long value) { this.id = value; } - - public String getDomain() { return domain; } - public void setDomain(String value) { this.domain = value; } - - public String getName() { return name; } - public void setName(String value) { this.name = value; } - - public Currency getCurrency() { return currency; } - public void setCurrency(Currency value) { this.currency = value; } - - public boolean getOnlineMode() { return onlineMode; } - public void setOnlineMode(boolean value) { this.onlineMode = value; } - - public String getGameType() { return gameType; } - public void setGameType(String value) { this.gameType = value; } - - public boolean getLogEvents() { return logEvents; } - public void setLogEvents(boolean value) { this.logEvents = value; } +package fr.yuki.yrpf.tebex.responses; + + +public class Account { + private long id; + private String domain; + private String name; + private Currency currency; + private boolean onlineMode; + private String gameType; + private boolean logEvents; + + public long getID() { return id; } + public void setID(long value) { this.id = value; } + + public String getDomain() { return domain; } + public void setDomain(String value) { this.domain = value; } + + public String getName() { return name; } + public void setName(String value) { this.name = value; } + + public Currency getCurrency() { return currency; } + public void setCurrency(Currency value) { this.currency = value; } + + public boolean getOnlineMode() { return onlineMode; } + public void setOnlineMode(boolean value) { this.onlineMode = value; } + + public String getGameType() { return gameType; } + public void setGameType(String value) { this.gameType = value; } + + public boolean getLogEvents() { return logEvents; } + public void setLogEvents(boolean value) { this.logEvents = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Command.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Command.java similarity index 92% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Command.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Command.java index 0d24ef0..635521f 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Command.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Command.java @@ -1,28 +1,28 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Command { - private long id; - private String command; - private long payment; - private long commandPackage; - private Conditions conditions; - private TebexPlayer player; - - public long getID() { return id; } - public void setID(long value) { this.id = value; } - - public String getCommand() { return command; } - public void setCommand(String value) { this.command = value; } - - public long getPayment() { return payment; } - public void setPayment(long value) { this.payment = value; } - - public long getCommandPackage() { return commandPackage; } - public void setCommandPackage(long value) { this.commandPackage = value; } - - public Conditions getConditions() { return conditions; } - public void setConditions(Conditions value) { this.conditions = value; } - - public TebexPlayer getPlayer() { return player; } - public void setPlayer(TebexPlayer value) { this.player = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Command { + private long id; + private String command; + private long payment; + private long commandPackage; + private Conditions conditions; + private TebexPlayer player; + + public long getID() { return id; } + public void setID(long value) { this.id = value; } + + public String getCommand() { return command; } + public void setCommand(String value) { this.command = value; } + + public long getPayment() { return payment; } + public void setPayment(long value) { this.payment = value; } + + public long getCommandPackage() { return commandPackage; } + public void setCommandPackage(long value) { this.commandPackage = value; } + + public Conditions getConditions() { return conditions; } + public void setConditions(Conditions value) { this.conditions = value; } + + public TebexPlayer getPlayer() { return player; } + public void setPlayer(TebexPlayer value) { this.player = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Conditions.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Conditions.java similarity index 73% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Conditions.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Conditions.java index bab7e54..f54b008 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Conditions.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Conditions.java @@ -1,8 +1,8 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Conditions { - private long delay; - - public long getDelay() { return delay; } - public void setDelay(long value) { this.delay = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Conditions { + private long delay; + + public long getDelay() { return delay; } + public void setDelay(long value) { this.delay = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Currency.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Currency.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Currency.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Currency.java index fb8d187..3803f3a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Currency.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Currency.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Currency { - private String iso4217; - private String symbol; - - public String getIso4217() { return iso4217; } - public void setIso4217(String value) { this.iso4217 = value; } - - public String getSymbol() { return symbol; } - public void setSymbol(String value) { this.symbol = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Currency { + private String iso4217; + private String symbol; + + public String getIso4217() { return iso4217; } + public void setIso4217(String value) { this.iso4217 = value; } + + public String getSymbol() { return symbol; } + public void setSymbol(String value) { this.symbol = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/PlayerMeta.java b/src/main/java/fr/yuki/yrpf/tebex/responses/PlayerMeta.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/PlayerMeta.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/PlayerMeta.java index 84a02dd..e0ee56c 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/PlayerMeta.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/PlayerMeta.java @@ -1,16 +1,16 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class PlayerMeta { - private String avatar; - private String avatarfull; - private String steamID; - - public String getAvatar() { return avatar; } - public void setAvatar(String value) { this.avatar = value; } - - public String getAvatarfull() { return avatarfull; } - public void setAvatarfull(String value) { this.avatarfull = value; } - - public String getSteamID() { return steamID; } - public void setSteamID(String value) { this.steamID = value; } +package fr.yuki.yrpf.tebex.responses; + +public class PlayerMeta { + private String avatar; + private String avatarfull; + private String steamID; + + public String getAvatar() { return avatar; } + public void setAvatar(String value) { this.avatar = value; } + + public String getAvatarfull() { return avatarfull; } + public void setAvatarfull(String value) { this.avatarfull = value; } + + public String getSteamID() { return steamID; } + public void setSteamID(String value) { this.steamID = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Server.java b/src/main/java/fr/yuki/yrpf/tebex/responses/Server.java similarity index 81% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Server.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/Server.java index 3f08897..3d1339a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/Server.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/Server.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class Server { - private long id; - private String name; - - public long getID() { return id; } - public void setID(long value) { this.id = value; } - - public String getName() { return name; } - public void setName(String value) { this.name = value; } +package fr.yuki.yrpf.tebex.responses; + +public class Server { + private long id; + private String name; + + public long getID() { return id; } + public void setID(long value) { this.id = value; } + + public String getName() { return name; } + public void setName(String value) { this.name = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueue.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueue.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueue.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueue.java index 25fc28a..441bc8a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueue.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueue.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexCommandQueue { - private TebexCommandQueueMeta meta; - private Command[] commands; - - public TebexCommandQueueMeta getMeta() { return meta; } - public void setMeta(TebexCommandQueueMeta value) { this.meta = value; } - - public Command[] getCommands() { return commands; } - public void setCommands(Command[] value) { this.commands = value; } -} +package fr.yuki.yrpf.tebex.responses; + +public class TebexCommandQueue { + private TebexCommandQueueMeta meta; + private Command[] commands; + + public TebexCommandQueueMeta getMeta() { return meta; } + public void setMeta(TebexCommandQueueMeta value) { this.meta = value; } + + public Command[] getCommands() { return commands; } + public void setCommands(Command[] value) { this.commands = value; } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueueMeta.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueueMeta.java similarity index 77% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueueMeta.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueueMeta.java index c42a024..1997c0a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexCommandQueueMeta.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexCommandQueueMeta.java @@ -1,8 +1,8 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexCommandQueueMeta { - private boolean limited; - - public boolean getLimited() { return limited; } - public void setLimited(boolean value) { this.limited = value; } +package fr.yuki.yrpf.tebex.responses; + +public class TebexCommandQueueMeta { + private boolean limited; + + public boolean getLimited() { return limited; } + public void setLimited(boolean value) { this.limited = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexInformationResponse.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexInformationResponse.java similarity index 84% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexInformationResponse.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexInformationResponse.java index b5b2cfe..131c2f2 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexInformationResponse.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexInformationResponse.java @@ -1,12 +1,12 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexInformationResponse { - private Account account; - private Server server; - - public Account getAccount() { return account; } - public void setAccount(Account value) { this.account = value; } - - public Server getServer() { return server; } - public void setServer(Server value) { this.server = value; } -} +package fr.yuki.yrpf.tebex.responses; + +public class TebexInformationResponse { + private Account account; + private Server server; + + public Account getAccount() { return account; } + public void setAccount(Account value) { this.account = value; } + + public Server getServer() { return server; } + public void setServer(Server value) { this.server = value; } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexPlayer.java b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexPlayer.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexPlayer.java rename to src/main/java/fr/yuki/yrpf/tebex/responses/TebexPlayer.java index 417bc4e..991bb46 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/tebex/responses/TebexPlayer.java +++ b/src/main/java/fr/yuki/yrpf/tebex/responses/TebexPlayer.java @@ -1,20 +1,20 @@ -package fr.yuki.YukiRPFramework.tebex.responses; - -public class TebexPlayer { - private String id; - private String name; - private String uuid; - private PlayerMeta meta; - - public String getID() { return id; } - public void setID(String value) { this.id = value; } - - public String getName() { return name; } - public void setName(String value) { this.name = value; } - - public String getUUID() { return uuid; } - public void setUUID(String value) { this.uuid = value; } - - public PlayerMeta getMeta() { return meta; } - public void setMeta(PlayerMeta value) { this.meta = value; } +package fr.yuki.yrpf.tebex.responses; + +public class TebexPlayer { + private String id; + private String name; + private String uuid; + private PlayerMeta meta; + + public String getID() { return id; } + public void setID(String value) { this.id = value; } + + public String getName() { return name; } + public void setName(String value) { this.name = value; } + + public String getUUID() { return uuid; } + public void setUUID(String value) { this.uuid = value; } + + public PlayerMeta getMeta() { return meta; } + public void setMeta(PlayerMeta value) { this.meta = value; } } \ No newline at end of file diff --git a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenu.java b/src/main/java/fr/yuki/yrpf/ui/GenericMenu.java similarity index 82% rename from src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenu.java rename to src/main/java/fr/yuki/yrpf/ui/GenericMenu.java index 687b8d1..d6f2814 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenu.java +++ b/src/main/java/fr/yuki/yrpf/ui/GenericMenu.java @@ -1,42 +1,42 @@ -package fr.yuki.YukiRPFramework.ui; - -import com.google.gson.Gson; -import fr.yuki.YukiRPFramework.manager.UIStateManager; -import fr.yuki.YukiRPFramework.net.payload.AddGenericMenuItemPayload; -import fr.yuki.YukiRPFramework.net.payload.ClearGenericMenuPayload; -import net.onfirenetwork.onsetjava.entity.Player; - -import java.util.ArrayList; - -public class GenericMenu { - private Player player; - private ArrayList items; - - public GenericMenu(Player player) { - this.player = player; - this.items = new ArrayList<>(); - } - - public void show() { - if(!UIStateManager.handleUIToogle(player, "genericMenu")) - UIStateManager.handleUIToogle(player, "genericMenu"); - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearGenericMenuPayload())); - for(GenericMenuItem menuItem : this.items) { - player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson - (new AddGenericMenuItemPayload(menuItem.getText(), menuItem.getAction()))); - } - } - - public void addCloseItem() { - this.getItems().add(new GenericMenuItem("Fermer", "window.CallEvent(\"RemoteCallInterface\", \"GenericMenu:Dismiss\");")); - } - - public void hide() { - if(UIStateManager.handleUIToogle(player, "genericMenu")) - UIStateManager.handleUIToogle(player, "genericMenu"); - } - - public ArrayList getItems() { - return items; - } -} +package fr.yuki.yrpf.ui; + +import com.google.gson.Gson; +import fr.yuki.yrpf.manager.UIStateManager; +import fr.yuki.yrpf.net.payload.AddGenericMenuItemPayload; +import fr.yuki.yrpf.net.payload.ClearGenericMenuPayload; +import net.onfirenetwork.onsetjava.entity.Player; + +import java.util.ArrayList; + +public class GenericMenu { + private Player player; + private ArrayList items; + + public GenericMenu(Player player) { + this.player = player; + this.items = new ArrayList<>(); + } + + public void show() { + if(!UIStateManager.handleUIToogle(player, "genericMenu")) + UIStateManager.handleUIToogle(player, "genericMenu"); + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson(new ClearGenericMenuPayload())); + for(GenericMenuItem menuItem : this.items) { + player.callRemoteEvent("GlobalUI:DispatchToUI", new Gson().toJson + (new AddGenericMenuItemPayload(menuItem.getText(), menuItem.getAction()))); + } + } + + public void addCloseItem() { + this.getItems().add(new GenericMenuItem("Fermer", "window.CallEvent(\"RemoteCallInterface\", \"GenericMenu:Dismiss\");")); + } + + public void hide() { + if(UIStateManager.handleUIToogle(player, "genericMenu")) + UIStateManager.handleUIToogle(player, "genericMenu"); + } + + public ArrayList getItems() { + return items; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenuItem.java b/src/main/java/fr/yuki/yrpf/ui/GenericMenuItem.java similarity index 85% rename from src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenuItem.java rename to src/main/java/fr/yuki/yrpf/ui/GenericMenuItem.java index b2d8567..baae9da 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/ui/GenericMenuItem.java +++ b/src/main/java/fr/yuki/yrpf/ui/GenericMenuItem.java @@ -1,19 +1,19 @@ -package fr.yuki.YukiRPFramework.ui; - -public class GenericMenuItem { - private String text; - private String action; - - public GenericMenuItem(String text, String action) { - this.text = text; - this.action = action; - } - - public String getText() { - return text; - } - - public String getAction() { - return action; - } -} +package fr.yuki.yrpf.ui; + +public class GenericMenuItem { + private String text; + private String action; + + public GenericMenuItem(String text, String action) { + this.text = text; + this.action = action; + } + + public String getText() { + return text; + } + + public String getAction() { + return action; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/ui/UIState.java b/src/main/java/fr/yuki/yrpf/ui/UIState.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/ui/UIState.java rename to src/main/java/fr/yuki/yrpf/ui/UIState.java index 3178b20..4d315cf 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/ui/UIState.java +++ b/src/main/java/fr/yuki/yrpf/ui/UIState.java @@ -1,148 +1,148 @@ -package fr.yuki.YukiRPFramework.ui; - -public class UIState { - private boolean inventory = false; - private boolean atm = false; - private boolean garage = false; - private boolean vseller = false; - private boolean customCharacter = false; - private boolean vchest = false; - private boolean bigmap = false; - private boolean death = false; - private boolean characterJob = false; - private boolean seller = false; - private boolean statewindow = false; - private boolean growboxmenu = false; - private boolean phone = false; - private boolean houseBuy = false; - private boolean genericMenu = false; - private boolean customOutfit = false; - - public boolean isInventory() { - return inventory; - } - - public void setInventory(boolean inventory) { - this.inventory = inventory; - } - - public boolean isAtm() { - return atm; - } - - public void setAtm(boolean atm) { - this.atm = atm; - } - - public boolean isGarage() { - return garage; - } - - public void setGarage(boolean garage) { - this.garage = garage; - } - - public boolean isVseller() { - return vseller; - } - - public void setVseller(boolean vseller) { - this.vseller = vseller; - } - - public boolean isCustomCharacter() { - return customCharacter; - } - - public void setCustomCharacter(boolean customCharacter) { - this.customCharacter = customCharacter; - } - - public boolean isVchest() { - return vchest; - } - - public void setVchest(boolean vchest) { - this.vchest = vchest; - } - - public boolean isBigmap() { - return bigmap; - } - - public void setBigmap(boolean bigmap) { - this.bigmap = bigmap; - } - - public boolean isDeath() { - return death; - } - - public void setDeath(boolean death) { - this.death = death; - } - - public boolean isCharacterJob() { - return characterJob; - } - - public void setCharacterJob(boolean characterJob) { - this.characterJob = characterJob; - } - - public boolean isSeller() { - return seller; - } - - public void setSeller(boolean seller) { - this.seller = seller; - } - - public boolean isStatewindow() { - return statewindow; - } - - public void setStatewindow(boolean statewindow) { - this.statewindow = statewindow; - } - - public boolean isGrowboxmenu() { - return growboxmenu; - } - - public void setGrowboxmenu(boolean growboxmenu) { - this.growboxmenu = growboxmenu; - } - - public boolean isPhone() { - return phone; - } - - public void setPhone(boolean phone) { - this.phone = phone; - } - - public boolean isHouseBuy() { - return houseBuy; - } - - public void setHouseBuy(boolean houseBuy) { - this.houseBuy = houseBuy; - } - - public boolean isGenericMenu() { - return genericMenu; - } - - public void setGenericMenu(boolean genericMenu) { - this.genericMenu = genericMenu; - } - - public boolean isCustomOutfit() { - return customOutfit; - } - - public void setCustomOutfit(boolean customOutfit) { - this.customOutfit = customOutfit; - } -} +package fr.yuki.yrpf.ui; + +public class UIState { + private boolean inventory = false; + private boolean atm = false; + private boolean garage = false; + private boolean vseller = false; + private boolean customCharacter = false; + private boolean vchest = false; + private boolean bigmap = false; + private boolean death = false; + private boolean characterJob = false; + private boolean seller = false; + private boolean statewindow = false; + private boolean growboxmenu = false; + private boolean phone = false; + private boolean houseBuy = false; + private boolean genericMenu = false; + private boolean customOutfit = false; + + public boolean isInventory() { + return inventory; + } + + public void setInventory(boolean inventory) { + this.inventory = inventory; + } + + public boolean isAtm() { + return atm; + } + + public void setAtm(boolean atm) { + this.atm = atm; + } + + public boolean isGarage() { + return garage; + } + + public void setGarage(boolean garage) { + this.garage = garage; + } + + public boolean isVseller() { + return vseller; + } + + public void setVseller(boolean vseller) { + this.vseller = vseller; + } + + public boolean isCustomCharacter() { + return customCharacter; + } + + public void setCustomCharacter(boolean customCharacter) { + this.customCharacter = customCharacter; + } + + public boolean isVchest() { + return vchest; + } + + public void setVchest(boolean vchest) { + this.vchest = vchest; + } + + public boolean isBigmap() { + return bigmap; + } + + public void setBigmap(boolean bigmap) { + this.bigmap = bigmap; + } + + public boolean isDeath() { + return death; + } + + public void setDeath(boolean death) { + this.death = death; + } + + public boolean isCharacterJob() { + return characterJob; + } + + public void setCharacterJob(boolean characterJob) { + this.characterJob = characterJob; + } + + public boolean isSeller() { + return seller; + } + + public void setSeller(boolean seller) { + this.seller = seller; + } + + public boolean isStatewindow() { + return statewindow; + } + + public void setStatewindow(boolean statewindow) { + this.statewindow = statewindow; + } + + public boolean isGrowboxmenu() { + return growboxmenu; + } + + public void setGrowboxmenu(boolean growboxmenu) { + this.growboxmenu = growboxmenu; + } + + public boolean isPhone() { + return phone; + } + + public void setPhone(boolean phone) { + this.phone = phone; + } + + public boolean isHouseBuy() { + return houseBuy; + } + + public void setHouseBuy(boolean houseBuy) { + this.houseBuy = houseBuy; + } + + public boolean isGenericMenu() { + return genericMenu; + } + + public void setGenericMenu(boolean genericMenu) { + this.genericMenu = genericMenu; + } + + public boolean isCustomOutfit() { + return customOutfit; + } + + public void setCustomOutfit(boolean customOutfit) { + this.customOutfit = customOutfit; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/utils/Basic.java b/src/main/java/fr/yuki/yrpf/utils/Basic.java similarity index 75% rename from src/main/java/fr/yuki/YukiRPFramework/utils/Basic.java rename to src/main/java/fr/yuki/yrpf/utils/Basic.java index e4e6c38..be73266 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/utils/Basic.java +++ b/src/main/java/fr/yuki/yrpf/utils/Basic.java @@ -1,7 +1,7 @@ -package fr.yuki.YukiRPFramework.utils; - -public class Basic { - public static int randomNumber(int min, int max) { - return (int)(Math.random() * (max+1-min)) + min; - } -} +package fr.yuki.yrpf.utils; + +public class Basic { + public static int randomNumber(int min, int max) { + return (int)(Math.random() * (max+1-min)) + min; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/utils/ServerConfig.java b/src/main/java/fr/yuki/yrpf/utils/ServerConfig.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/utils/ServerConfig.java rename to src/main/java/fr/yuki/yrpf/utils/ServerConfig.java index 080ede7..5b11419 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/utils/ServerConfig.java +++ b/src/main/java/fr/yuki/yrpf/utils/ServerConfig.java @@ -1,184 +1,184 @@ -package fr.yuki.YukiRPFramework.utils; - -public class ServerConfig { - private double deathRespawnX; - private double deathRespawnY; - private double deathRespawnZ; - private double deathRespawnH; - private int deathRespawnDelay; - private double spawnPointX; - private double spawnPointY; - private double spawnPointZ; - private double spawnPointH; - private int xpRate; - private String sqlHost; - private String sqlUsername; - private String sqlPassword; - private String sqlDb; - private String langPath; - private String serverLanguage; - private String tebexSecretKey; - private int timePerHour; - private int startHour; - private String welcomeMessage; - - public double getDeathRespawnX() { - return deathRespawnX; - } - - public void setDeathRespawnX(double deathRespawnX) { - this.deathRespawnX = deathRespawnX; - } - - public double getDeathRespawnY() { - return deathRespawnY; - } - - public void setDeathRespawnY(double deathRespawnY) { - this.deathRespawnY = deathRespawnY; - } - - public double getDeathRespawnZ() { - return deathRespawnZ; - } - - public void setDeathRespawnZ(double deathRespawnZ) { - this.deathRespawnZ = deathRespawnZ; - } - - public double getDeathRespawnH() { - return deathRespawnH; - } - - public void setDeathRespawnH(double deathRespawnH) { - this.deathRespawnH = deathRespawnH; - } - - public int getDeathRespawnDelay() { - return deathRespawnDelay; - } - - public void setDeathRespawnDelay(int deathRespawnDelay) { - this.deathRespawnDelay = deathRespawnDelay; - } - - public int getXpRate() { - return xpRate; - } - - public void setXpRate(int xpRate) { - this.xpRate = xpRate; - } - - public String getSqlHost() { - return sqlHost; - } - - public void setSqlHost(String sqlHost) { - this.sqlHost = sqlHost; - } - - public String getSqlUsername() { - return sqlUsername; - } - - public void setSqlUsername(String sqlUsername) { - this.sqlUsername = sqlUsername; - } - - public String getSqlDb() { - return sqlDb; - } - - public void setSqlDb(String sqlDb) { - this.sqlDb = sqlDb; - } - - public String getSqlPassword() { - return sqlPassword; - } - - public void setSqlPassword(String sqlPassword) { - this.sqlPassword = sqlPassword; - } - - public double getSpawnPointX() { - return spawnPointX; - } - - public void setSpawnPointX(double spawnPointX) { - this.spawnPointX = spawnPointX; - } - - public double getSpawnPointY() { - return spawnPointY; - } - - public void setSpawnPointY(double spawnPointY) { - this.spawnPointY = spawnPointY; - } - - public double getSpawnPointZ() { - return spawnPointZ; - } - - public void setSpawnPointZ(double spawnPointZ) { - this.spawnPointZ = spawnPointZ; - } - - public double getSpawnPointH() { - return spawnPointH; - } - - public void setSpawnPointH(double spawnPointH) { - this.spawnPointH = spawnPointH; - } - - public String getLangPath() { - return langPath; - } - - public void setLangPath(String langPath) { - this.langPath = langPath; - } - - public String getServerLanguage() { - return serverLanguage; - } - - public void setServerLanguage(String serverLanguage) { - this.serverLanguage = serverLanguage; - } - - public String getTebexSecretKey() { - return tebexSecretKey; - } - - public void setTebexSecretKey(String tebexSecretKey) { - this.tebexSecretKey = tebexSecretKey; - } - - public int getTimePerHour() { - return timePerHour; - } - - public void setTimePerHour(int timePerHour) { - this.timePerHour = timePerHour; - } - - public int getStartHour() { - return startHour; - } - - public void setStartHour(int startHour) { - this.startHour = startHour; - } - - public String getWelcomeMessage() { - return welcomeMessage; - } - - public void setWelcomeMessage(String welcomeMessage) { - this.welcomeMessage = welcomeMessage; - } -} +package fr.yuki.yrpf.utils; + +public class ServerConfig { + private double deathRespawnX; + private double deathRespawnY; + private double deathRespawnZ; + private double deathRespawnH; + private int deathRespawnDelay; + private double spawnPointX; + private double spawnPointY; + private double spawnPointZ; + private double spawnPointH; + private int xpRate; + private String sqlHost; + private String sqlUsername; + private String sqlPassword; + private String sqlDb; + private String langPath; + private String serverLanguage; + private String tebexSecretKey; + private int timePerHour; + private int startHour; + private String welcomeMessage; + + public double getDeathRespawnX() { + return deathRespawnX; + } + + public void setDeathRespawnX(double deathRespawnX) { + this.deathRespawnX = deathRespawnX; + } + + public double getDeathRespawnY() { + return deathRespawnY; + } + + public void setDeathRespawnY(double deathRespawnY) { + this.deathRespawnY = deathRespawnY; + } + + public double getDeathRespawnZ() { + return deathRespawnZ; + } + + public void setDeathRespawnZ(double deathRespawnZ) { + this.deathRespawnZ = deathRespawnZ; + } + + public double getDeathRespawnH() { + return deathRespawnH; + } + + public void setDeathRespawnH(double deathRespawnH) { + this.deathRespawnH = deathRespawnH; + } + + public int getDeathRespawnDelay() { + return deathRespawnDelay; + } + + public void setDeathRespawnDelay(int deathRespawnDelay) { + this.deathRespawnDelay = deathRespawnDelay; + } + + public int getXpRate() { + return xpRate; + } + + public void setXpRate(int xpRate) { + this.xpRate = xpRate; + } + + public String getSqlHost() { + return sqlHost; + } + + public void setSqlHost(String sqlHost) { + this.sqlHost = sqlHost; + } + + public String getSqlUsername() { + return sqlUsername; + } + + public void setSqlUsername(String sqlUsername) { + this.sqlUsername = sqlUsername; + } + + public String getSqlDb() { + return sqlDb; + } + + public void setSqlDb(String sqlDb) { + this.sqlDb = sqlDb; + } + + public String getSqlPassword() { + return sqlPassword; + } + + public void setSqlPassword(String sqlPassword) { + this.sqlPassword = sqlPassword; + } + + public double getSpawnPointX() { + return spawnPointX; + } + + public void setSpawnPointX(double spawnPointX) { + this.spawnPointX = spawnPointX; + } + + public double getSpawnPointY() { + return spawnPointY; + } + + public void setSpawnPointY(double spawnPointY) { + this.spawnPointY = spawnPointY; + } + + public double getSpawnPointZ() { + return spawnPointZ; + } + + public void setSpawnPointZ(double spawnPointZ) { + this.spawnPointZ = spawnPointZ; + } + + public double getSpawnPointH() { + return spawnPointH; + } + + public void setSpawnPointH(double spawnPointH) { + this.spawnPointH = spawnPointH; + } + + public String getLangPath() { + return langPath; + } + + public void setLangPath(String langPath) { + this.langPath = langPath; + } + + public String getServerLanguage() { + return serverLanguage; + } + + public void setServerLanguage(String serverLanguage) { + this.serverLanguage = serverLanguage; + } + + public String getTebexSecretKey() { + return tebexSecretKey; + } + + public void setTebexSecretKey(String tebexSecretKey) { + this.tebexSecretKey = tebexSecretKey; + } + + public int getTimePerHour() { + return timePerHour; + } + + public void setTimePerHour(int timePerHour) { + this.timePerHour = timePerHour; + } + + public int getStartHour() { + return startHour; + } + + public void setStartHour(int startHour) { + this.startHour = startHour; + } + + public String getWelcomeMessage() { + return welcomeMessage; + } + + public void setWelcomeMessage(String welcomeMessage) { + this.welcomeMessage = welcomeMessage; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/GarbageTruckStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/GarbageTruckStoreLayout.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/GarbageTruckStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/GarbageTruckStoreLayout.java index 1dc4f67..7961294 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/GarbageTruckStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/GarbageTruckStoreLayout.java @@ -1,50 +1,49 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.job.harvest.Garbage; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class GarbageTruckStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public GarbageTruckStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList garbageTransform = new ArrayList<>(); - for(int i = 0; i < 20; i++) { - garbageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,100), new Vector(0,0,0), new Vector(1,1,1))); - } - - this.layoutTransforms.put(514, garbageTransform); - } - - @Override - public boolean isAdaptedForModel(int modelId) { - return modelId == 9; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 20; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class GarbageTruckStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public GarbageTruckStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList garbageTransform = new ArrayList<>(); + for(int i = 0; i < 20; i++) { + garbageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,100), new Vector(0,0,0), new Vector(1,1,1))); + } + + this.layoutTransforms.put(514, garbageTransform); + } + + @Override + public boolean isAdaptedForModel(int modelId) { + return modelId == 9; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 20; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniPickupStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniPickupStoreLayout.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniPickupStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniPickupStoreLayout.java index 3f0de43..a85dbfa 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniPickupStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniPickupStoreLayout.java @@ -1,59 +1,59 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class MiniPickupStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public MiniPickupStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList packageTransform = new ArrayList<>(); - packageTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(1,1,1))); - packageTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(1,1,1))); - packageTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(1,1,1))); - packageTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(1,1,1))); - this.layoutTransforms.put(508, packageTransform); - - ArrayList oreTransform = new ArrayList<>(); - oreTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(4, new Vector(-120,40,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(5, new Vector(-120,-30,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - oreTransform.add(new StoreLayoutTransform(6, new Vector(-160,0,115), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); - this.layoutTransforms.put(156, oreTransform); - } - - @Override - public boolean isAdaptedForModel(int modelId) { - return modelId == 27; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 7; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class MiniPickupStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public MiniPickupStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList packageTransform = new ArrayList<>(); + packageTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(1,1,1))); + packageTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(1,1,1))); + packageTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(1,1,1))); + packageTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(1,1,1))); + this.layoutTransforms.put(508, packageTransform); + + ArrayList oreTransform = new ArrayList<>(); + oreTransform.add(new StoreLayoutTransform(0, new Vector(-80,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(1, new Vector(-80,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(2, new Vector(-185,-30,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(3, new Vector(-185,40,70), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(4, new Vector(-120,40,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(5, new Vector(-120,-30,110), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + oreTransform.add(new StoreLayoutTransform(6, new Vector(-160,0,115), new Vector(0,90,0), new Vector(0.60,0.60,0.60))); + this.layoutTransforms.put(156, oreTransform); + } + + @Override + public boolean isAdaptedForModel(int modelId) { + return modelId == 27; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 7; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniTruckStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniTruckStoreLayout.java similarity index 94% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniTruckStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniTruckStoreLayout.java index 269cd70..d7e8af8 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/MiniTruckStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/MiniTruckStoreLayout.java @@ -1,61 +1,61 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class MiniTruckStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public MiniTruckStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList logTransform = new ArrayList<>(); - logTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,140), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,140), new Vector(0,90,0), new Vector(1,1,1))); - logTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,180), new Vector(0,90,0), new Vector(1,1,1))); - this.layoutTransforms.put(50001, logTransform); - - ArrayList plankTransform = new ArrayList<>(); - plankTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - plankTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,120), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); - this.layoutTransforms.put(1574, plankTransform); - } - - @Override - public boolean isAdaptedForModel(int modelId) { - if(modelId == 22 || modelId == 23) return true; - return false; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 6; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class MiniTruckStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public MiniTruckStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList logTransform = new ArrayList<>(); + logTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,140), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,140), new Vector(0,90,0), new Vector(1,1,1))); + logTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,180), new Vector(0,90,0), new Vector(1,1,1))); + this.layoutTransforms.put(50001, logTransform); + + ArrayList plankTransform = new ArrayList<>(); + plankTransform.add(new StoreLayoutTransform(0, new Vector(-170,-50,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(1, new Vector(-170,10,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(2, new Vector(-170,60,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(3, new Vector(-170,-30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(4, new Vector(-170,30,100), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + plankTransform.add(new StoreLayoutTransform(5, new Vector(-170,0,120), new Vector(0,90,0), new Vector(0.5,0.5,0.5))); + this.layoutTransforms.put(1574, plankTransform); + } + + @Override + public boolean isAdaptedForModel(int modelId) { + if(modelId == 22 || modelId == 23) return true; + return false; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 6; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/StoreLayoutTransform.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/StoreLayoutTransform.java similarity index 89% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/StoreLayoutTransform.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/StoreLayoutTransform.java index 5ab66ff..47c430a 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/StoreLayoutTransform.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/StoreLayoutTransform.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import net.onfirenetwork.onsetjava.data.Vector; - -public class StoreLayoutTransform { - private int index; - private Vector position; - private Vector rotation; - private Vector scale; - - public StoreLayoutTransform(int index, Vector position, Vector rotation, Vector scale) { - this.index = index; - this.position = position; - this.rotation = rotation; - this.scale = scale; - } - - public Vector getPosition() { - return position; - } - - public Vector getRotation() { - return rotation; - } - - public Vector getScale() { - return scale; - } - - public int getIndex() { - return index; - } - - public void setIndex(int index) { - this.index = index; - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import net.onfirenetwork.onsetjava.data.Vector; + +public class StoreLayoutTransform { + private int index; + private Vector position; + private Vector rotation; + private Vector scale; + + public StoreLayoutTransform(int index, Vector position, Vector rotation, Vector scale) { + this.index = index; + this.position = position; + this.rotation = rotation; + this.scale = scale; + } + + public Vector getPosition() { + return position; + } + + public Vector getRotation() { + return rotation; + } + + public Vector getScale() { + return scale; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/TruckStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/TruckStoreLayout.java similarity index 91% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/TruckStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/TruckStoreLayout.java index 3ecebdf..682b02e 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/TruckStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/TruckStoreLayout.java @@ -1,48 +1,48 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.data.Vector; - -import java.util.ArrayList; -import java.util.HashMap; - -public class TruckStoreLayout extends VehicleStoreLayout { - private HashMap> layoutTransforms; - - public TruckStoreLayout() { - this.layoutTransforms = new HashMap<>(); - - ArrayList packageTransform = new ArrayList<>(); - for(int i = 0; i < 15; i++) { - packageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,150), new Vector(0,0,0), new Vector(1,1,1))); - } - - this.layoutTransforms.put(508, packageTransform); - } - @Override - public boolean isAdaptedForModel(int modelId) { - return modelId == 28; - } - - @Override - public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { - if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; - if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ - Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); - return null; - } - return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); - } - - @Override - public int maxStorageQuantity() { - return 15; - } - - @Override - public int maxLayoutSlot(int modelId) { - if(!this.layoutTransforms.containsKey(modelId)) return 0; - return this.layoutTransforms.get(modelId).size(); - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import net.onfirenetwork.onsetjava.Onset; +import net.onfirenetwork.onsetjava.data.Vector; + +import java.util.ArrayList; +import java.util.HashMap; + +public class TruckStoreLayout extends VehicleStoreLayout { + private HashMap> layoutTransforms; + + public TruckStoreLayout() { + this.layoutTransforms = new HashMap<>(); + + ArrayList packageTransform = new ArrayList<>(); + for(int i = 0; i < 15; i++) { + packageTransform.add(new StoreLayoutTransform(i, new Vector(0,0,150), new Vector(0,0,0), new Vector(1,1,1))); + } + + this.layoutTransforms.put(508, packageTransform); + } + @Override + public boolean isAdaptedForModel(int modelId) { + return modelId == 28; + } + + @Override + public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) { + if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null; + if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){ + Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId()); + return null; + } + return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index); + } + + @Override + public int maxStorageQuantity() { + return 15; + } + + @Override + public int maxLayoutSlot(int modelId) { + if(!this.layoutTransforms.containsKey(modelId)) return 0; + return this.layoutTransforms.get(modelId).size(); + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/VehicleStoreLayout.java b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/VehicleStoreLayout.java similarity index 88% rename from src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/VehicleStoreLayout.java rename to src/main/java/fr/yuki/yrpf/vehicle/storeLayout/VehicleStoreLayout.java index 872af29..495991b 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/vehicle/storeLayout/VehicleStoreLayout.java +++ b/src/main/java/fr/yuki/yrpf/vehicle/storeLayout/VehicleStoreLayout.java @@ -1,37 +1,37 @@ -package fr.yuki.YukiRPFramework.vehicle.storeLayout; - -import fr.yuki.YukiRPFramework.job.WearableWorldObject; -import fr.yuki.YukiRPFramework.manager.VehicleManager; -import net.onfirenetwork.onsetjava.entity.Vehicle; - -import java.util.ArrayList; - -public abstract class VehicleStoreLayout { - public abstract boolean isAdaptedForModel(int modelId); - public abstract StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject); - public abstract int maxStorageQuantity(); - public abstract int maxLayoutSlot(int modelId); - - public boolean store(Vehicle vehicle, WearableWorldObject wearableWorldObject) { - ArrayList wearableWorldObjectsChest = VehicleManager.getVehicleWearableObjects(vehicle); - if(wearableWorldObjectsChest.size() + 1 > this.maxStorageQuantity()) return false; - if(wearableWorldObjectsChest.size() + 1 > this.maxLayoutSlot(wearableWorldObject.getModelId())) return false; - - // Find a free slot - int index = 0; - for(int i = 0; i < maxLayoutSlot(wearableWorldObject.getModelId()); i++) { - int finalI = i; - boolean hasItemOnThisSlot = wearableWorldObjectsChest.stream().filter(x -> x.getVehicleStorageLayoutIndex() == finalI) - .findFirst().orElse(null) != null; - if(!hasItemOnThisSlot) { - index = i; - break; - } - } - - StoreLayoutTransform storeLayoutTransform = this.getStoreTransform(index, wearableWorldObject); - if(storeLayoutTransform == null) return false; - wearableWorldObject.storeInVehicle(vehicle, storeLayoutTransform); - return true; - } -} +package fr.yuki.yrpf.vehicle.storeLayout; + +import fr.yuki.yrpf.job.WearableWorldObject; +import fr.yuki.yrpf.manager.VehicleManager; +import net.onfirenetwork.onsetjava.entity.Vehicle; + +import java.util.ArrayList; + +public abstract class VehicleStoreLayout { + public abstract boolean isAdaptedForModel(int modelId); + public abstract StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject); + public abstract int maxStorageQuantity(); + public abstract int maxLayoutSlot(int modelId); + + public boolean store(Vehicle vehicle, WearableWorldObject wearableWorldObject) { + ArrayList wearableWorldObjectsChest = VehicleManager.getVehicleWearableObjects(vehicle); + if(wearableWorldObjectsChest.size() + 1 > this.maxStorageQuantity()) return false; + if(wearableWorldObjectsChest.size() + 1 > this.maxLayoutSlot(wearableWorldObject.getModelId())) return false; + + // Find a free slot + int index = 0; + for(int i = 0; i < maxLayoutSlot(wearableWorldObject.getModelId()); i++) { + int finalI = i; + boolean hasItemOnThisSlot = wearableWorldObjectsChest.stream().filter(x -> x.getVehicleStorageLayoutIndex() == finalI) + .findFirst().orElse(null) != null; + if(!hasItemOnThisSlot) { + index = i; + break; + } + } + + StoreLayoutTransform storeLayoutTransform = this.getStoreTransform(index, wearableWorldObject); + if(storeLayoutTransform == null) return false; + wearableWorldObject.storeInVehicle(vehicle, storeLayoutTransform); + return true; + } +} diff --git a/src/main/java/fr/yuki/YukiRPFramework/world/RestrictedZone.java b/src/main/java/fr/yuki/yrpf/world/RestrictedZone.java similarity index 72% rename from src/main/java/fr/yuki/YukiRPFramework/world/RestrictedZone.java rename to src/main/java/fr/yuki/yrpf/world/RestrictedZone.java index c866fb7..a17dc09 100644 --- a/src/main/java/fr/yuki/YukiRPFramework/world/RestrictedZone.java +++ b/src/main/java/fr/yuki/yrpf/world/RestrictedZone.java @@ -1,40 +1,38 @@ -package fr.yuki.YukiRPFramework.world; - -import fr.yuki.YukiRPFramework.manager.AccountManager; -import fr.yuki.YukiRPFramework.manager.JobManager; -import fr.yuki.YukiRPFramework.manager.WorldManager; -import fr.yuki.YukiRPFramework.modding.Line3D; -import fr.yuki.YukiRPFramework.model.Account; -import fr.yuki.YukiRPFramework.model.AccountJobWhitelist; -import net.onfirenetwork.onsetjava.Onset; -import net.onfirenetwork.onsetjava.entity.Door; -import net.onfirenetwork.onsetjava.entity.Player; - -public class RestrictedZone { - private Line3D line3D; - private String jobRestriction; - - public RestrictedZone(Line3D line3D, String jobRestriction) { - this.line3D = line3D; - this.jobRestriction = jobRestriction; - } - - public boolean canInteractWithDoor(Player player, Door door) { - // Check if the door is inside the zone - if(this.line3D.getDoorsInside().stream().filter(x -> x.getId() == door.getId()).findFirst().orElse(null) == null) { - return true; - } - - // Check job for this door - Account account = WorldManager.getPlayerAccount(player); - AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() - .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(this.jobRestriction)) - .findFirst().orElse(null); - //TODO: Add job level requirement - if(accountJobWhitelist == null) { // The player doesnt have the job - return false; - } - - return true; - } -} +package fr.yuki.yrpf.world; + +import fr.yuki.yrpf.manager.AccountManager; +import fr.yuki.yrpf.manager.WorldManager; +import fr.yuki.yrpf.modding.Line3D; +import fr.yuki.yrpf.model.Account; +import fr.yuki.yrpf.model.AccountJobWhitelist; +import net.onfirenetwork.onsetjava.entity.Door; +import net.onfirenetwork.onsetjava.entity.Player; + +public class RestrictedZone { + private Line3D line3D; + private String jobRestriction; + + public RestrictedZone(Line3D line3D, String jobRestriction) { + this.line3D = line3D; + this.jobRestriction = jobRestriction; + } + + public boolean canInteractWithDoor(Player player, Door door) { + // Check if the door is inside the zone + if(this.line3D.getDoorsInside().stream().filter(x -> x.getId() == door.getId()).findFirst().orElse(null) == null) { + return true; + } + + // Check job for this door + Account account = WorldManager.getPlayerAccount(player); + AccountJobWhitelist accountJobWhitelist = AccountManager.getAccountJobWhitelists().stream() + .filter(x -> x.getAccountId() == account.getId() && x.getJobId().equals(this.jobRestriction)) + .findFirst().orElse(null); + //TODO: Add job level requirement + if(accountJobWhitelist == null) { // The player doesnt have the job + return false; + } + + return true; + } +}