commit bf86e9e942bf07e3ce32c864ca42b4cf6147157f Author: andrewkydev Date: Sun Jan 7 22:04:05 2024 +0300 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..902a0a1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.gitignore +gradle +.gradle +gradlew +build \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..28e35d8 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# TestPlugin diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..fe86294 --- /dev/null +++ b/build.gradle @@ -0,0 +1,72 @@ +plugins { + id 'java' + +} + +group = 'org.andrewkydev' +version = '1.0' + +repositories { + mavenCentral() + maven { + name = "papermc-repo" + url = "https://repo.papermc.io/repository/maven-public/" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/groups/public/" + } +} + + + +dependencies { + implementation 'org.projectlombok:lombok:1.18.28' + implementation 'org.projectlombok:lombok:1.18.28' + compileOnly "io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT" + annotationProcessor 'org.projectlombok:lombok:1.18.24' // Lombok процессор + implementation "org.hibernate.orm:hibernate-core:6.4.0.Final" + + + +} + +def targetJavaVersion = 17 +java { + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } +} + +tasks.withType(JavaCompile).configureEach { + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + options.release.set(targetJavaVersion) + } +} + +task copyToPath(){ + doLast { + copy { + from "build/libs/API-1.0.jar" + into ".." + } + } +} + + +processResources { + def props = [version: version] + inputs.properties props + filteringCharset 'UTF-8' + filesMatching('plugin.yml') { + expand props + } +} + + + + +tasks.build.finalizedBy('copyToPath') diff --git a/build/classes/java/main/org/andrewkydev/api/API.class b/build/classes/java/main/org/andrewkydev/api/API.class new file mode 100644 index 0000000..ac93c1e Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/API.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/Database.class b/build/classes/java/main/org/andrewkydev/api/database/Database.class new file mode 100644 index 0000000..aa07175 Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/Database.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/SessionFactoryMaker.class b/build/classes/java/main/org/andrewkydev/api/database/SessionFactoryMaker.class new file mode 100644 index 0000000..ed5a821 Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/SessionFactoryMaker.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/dao/UserDao.class b/build/classes/java/main/org/andrewkydev/api/database/dao/UserDao.class new file mode 100644 index 0000000..adeda2d Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/dao/UserDao.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/models/AuthInformation.class b/build/classes/java/main/org/andrewkydev/api/database/models/AuthInformation.class new file mode 100644 index 0000000..054ef5e Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/models/AuthInformation.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/models/Economy.class b/build/classes/java/main/org/andrewkydev/api/database/models/Economy.class new file mode 100644 index 0000000..f4df62f Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/models/Economy.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/models/EconomyTransactions.class b/build/classes/java/main/org/andrewkydev/api/database/models/EconomyTransactions.class new file mode 100644 index 0000000..4e2c24d Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/models/EconomyTransactions.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/models/User.class b/build/classes/java/main/org/andrewkydev/api/database/models/User.class new file mode 100644 index 0000000..f16c4fa Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/models/User.class differ diff --git a/build/classes/java/main/org/andrewkydev/api/database/models/UserStatistic.class b/build/classes/java/main/org/andrewkydev/api/database/models/UserStatistic.class new file mode 100644 index 0000000..8338e13 Binary files /dev/null and b/build/classes/java/main/org/andrewkydev/api/database/models/UserStatistic.class differ diff --git a/build/libs/API-1.0.jar b/build/libs/API-1.0.jar new file mode 100644 index 0000000..48623b8 Binary files /dev/null and b/build/libs/API-1.0.jar differ diff --git a/build/resources/main/plugin.yml b/build/resources/main/plugin.yml new file mode 100644 index 0000000..0132cc4 --- /dev/null +++ b/build/resources/main/plugin.yml @@ -0,0 +1,4 @@ +name: API +version: '1.0' +main: org.andrewkydev.api.API +api-version: '1.20' diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/API.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/API.class.uniqueId0 new file mode 100644 index 0000000..ac93c1e Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/API.class.uniqueId0 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SessionFactoryMaker.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/SessionFactoryMaker.class.uniqueId1 new file mode 100644 index 0000000..7a0df56 Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/SessionFactoryMaker.class.uniqueId1 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/UserDao.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/UserDao.class.uniqueId2 new file mode 100644 index 0000000..adeda2d Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/UserDao.class.uniqueId2 differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000..e6d972e Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/jar/MANIFEST.MF b/build/tmp/jar/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..13b1266 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'API' diff --git a/src/main/java/org/andrewkydev/api/API.java b/src/main/java/org/andrewkydev/api/API.java new file mode 100644 index 0000000..22ca4ad --- /dev/null +++ b/src/main/java/org/andrewkydev/api/API.java @@ -0,0 +1,33 @@ +package org.andrewkydev.api; + +import lombok.Getter; +import org.andrewkydev.api.database.SessionFactoryMaker; +import org.bukkit.plugin.java.JavaPlugin; +import org.hibernate.SessionFactory; + + +import java.util.logging.Logger; + +public final class API extends JavaPlugin { + + @Getter + private static Logger jlogger; + + @Getter + private static API instance; + + + @Override + public void onEnable() { + instance = this; + jlogger = super.getLogger(); + jlogger.info("plugin is enabled1"); + SessionFactory sessionFactory = SessionFactoryMaker.getSessionFactory(); + jlogger.info(String.valueOf(sessionFactory.isOpen())); + } + + @Override + public void onDisable() { + // Plugin shutdown logic + } +} diff --git a/src/main/java/org/andrewkydev/api/database/Database.java b/src/main/java/org/andrewkydev/api/database/Database.java new file mode 100644 index 0000000..44fbb88 --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/Database.java @@ -0,0 +1,4 @@ +package org.andrewkydev.api.database; + +public class Database { +} diff --git a/src/main/java/org/andrewkydev/api/database/SessionFactoryMaker.java b/src/main/java/org/andrewkydev/api/database/SessionFactoryMaker.java new file mode 100644 index 0000000..93ecdb1 --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/SessionFactoryMaker.java @@ -0,0 +1,64 @@ +package org.andrewkydev.api.database; + + +import org.andrewkydev.api.database.models.*; +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.cfg.Environment; +import org.hibernate.service.ServiceRegistry; +import org.jetbrains.annotations.NotNull; + +import java.util.Properties; + +public class SessionFactoryMaker { + + private static SessionFactory sessionFactory; + + + public static SessionFactory getSessionFactory() { + if (sessionFactory == null) { + try { + Configuration configuration = getConfiguration(); + + configuration.addAnnotatedClass(User.class); + configuration.addAnnotatedClass(UserStatistic.class); + configuration.addAnnotatedClass(AuthInformation.class); + configuration.addAnnotatedClass(Economy.class); + configuration.addAnnotatedClass(EconomyTransactions.class); + + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .applySettings(configuration.getProperties()).build(); + + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } catch (Exception e) { + e.printStackTrace(); + } + } + return sessionFactory; + } + + @NotNull + private static Configuration getConfiguration() { + Configuration configuration = new Configuration(); + + Properties settings = new Properties(); + settings.put(Environment.DRIVER, "org.postgresql.Driver"); + settings.put(Environment.URL, "jdbc:postgresql://localhost:5432/db"); + settings.put(Environment.USER, "postgres"); + settings.put(Environment.PASS, "pass"); + settings.put(Environment.DIALECT, "org.hibernate.dialect.PostgreSQLDialect"); + + settings.put(Environment.SHOW_SQL, "true"); + + settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread"); + + settings.put(Environment.HBM2DDL_AUTO, "create-drop"); + + configuration.setProperties(settings); + return configuration; + } + + + +} diff --git a/src/main/java/org/andrewkydev/api/database/dao/UserDao.java b/src/main/java/org/andrewkydev/api/database/dao/UserDao.java new file mode 100644 index 0000000..7f56661 --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/dao/UserDao.java @@ -0,0 +1,17 @@ +package org.andrewkydev.api.database.dao; + +import org.andrewkydev.api.database.SessionFactoryMaker; +import org.andrewkydev.api.database.models.User; +import org.hibernate.Session; + +public class UserDao { + + private static final Session session = (Session) SessionFactoryMaker.getSessionFactory(); + + + public static void saveUser(User user) { + session.beginTransaction(); + session.saveOrUpdate(user); + session.getTransaction(); + } +} diff --git a/src/main/java/org/andrewkydev/api/database/models/AuthInformation.java b/src/main/java/org/andrewkydev/api/database/models/AuthInformation.java new file mode 100644 index 0000000..60c3f2c --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/models/AuthInformation.java @@ -0,0 +1,68 @@ +package org.andrewkydev.api.database.models; + +import com.google.gson.annotations.SerializedName; +import jakarta.persistence.*; + +@Entity +@Table(name = "auth_information") +public class AuthInformation { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + @SerializedName(value = "id") + private Integer id; + + @Column(name = "email") + @SerializedName(value = "email") + private String email; + + @Column(name = "last_ip") + @SerializedName(value = "last_ip") + private String lastIp; + + @Column(name = "previous_ip") + @SerializedName(value = "previous_ip") + private String previous_ip; + + public AuthInformation() { + } + + public AuthInformation setId(Integer id) { + this.id = id; + return this; + } + + public Integer getId() { + return id; + } + + public AuthInformation setLastIp(String lastIp) { + this.lastIp = lastIp; + return this; + + } + + public String getLastIp() { + return lastIp; + } + + public AuthInformation setEmail(String email) { + this.email = email; + return this; + + } + + public String getEmail() { + return email; + } + + public AuthInformation setPrevious_ip(String previous_ip) { + this.previous_ip = previous_ip; + return this; + } + + public String getPrevious_ip() { + return previous_ip; + } +} diff --git a/src/main/java/org/andrewkydev/api/database/models/Economy.java b/src/main/java/org/andrewkydev/api/database/models/Economy.java new file mode 100644 index 0000000..497a6cb --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/models/Economy.java @@ -0,0 +1,79 @@ +package org.andrewkydev.api.database.models; + +import com.google.gson.annotations.SerializedName; +import jakarta.persistence.*; + +import java.math.BigInteger; +import java.util.Set; + +@Entity +@Table(name = "economy") +public class Economy { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + @SerializedName(value = "id") + private Integer id; + + @Column(name = "money") + @SerializedName(value = "money") + private BigInteger money; + + @Column(name = "bank_money") + @SerializedName(value = "bank_money") + private BigInteger bankMoney; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "ecId") + @SerializedName(value = "ecId") + private Set economyTransactions; + + public Economy() { + } + + public Economy setId(Integer id) { + this.id = id; + return this; + } + + public Integer getId() { + return id; + } + + public Economy setBankMoney(BigInteger bankMoney) { + this.bankMoney = bankMoney; + return this; + } + + public BigInteger getBankMoney() { + return bankMoney; + } + + public Economy setEconomyTransactions(Set economyTransactions) { + this.economyTransactions = economyTransactions; + return this; + } + + public Set getEconomyTransactions() { + return economyTransactions; + } + + public Economy setMoney(BigInteger money) { + this.money = money; + return this; + } + + public BigInteger getMoney() { + return money; + } + + @Override + public String toString() { + return "Economy [" + + "id=" + id + + ", money=" + money + + ", bankMoney=" + bankMoney + + ", economyTransactions=" + economyTransactions + + ']'; + } +} diff --git a/src/main/java/org/andrewkydev/api/database/models/EconomyTransactions.java b/src/main/java/org/andrewkydev/api/database/models/EconomyTransactions.java new file mode 100644 index 0000000..5b629c5 --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/models/EconomyTransactions.java @@ -0,0 +1,79 @@ +package org.andrewkydev.api.database.models; + +import com.google.gson.annotations.SerializedName; +import jakarta.persistence.*; + +import java.math.BigInteger; +import java.time.LocalDateTime; + +@Entity +@Table(name = "economy_transactons") +public class EconomyTransactions { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + @SerializedName(value = "id") + private Integer id; + + @Column(name = "amount") + @SerializedName(value = "amount") + private BigInteger amount; + + @Column(name = "transaction_date") + @SerializedName(value = "transaction_date") + private LocalDateTime transactionDate; + + @OneToOne(cascade = CascadeType.ALL) + @SerializedName(value = "recipientId") + @JoinColumn(name = "recipientId", referencedColumnName = "id") + private User recipientId; + + public EconomyTransactions() { + } + + public EconomyTransactions setId(Integer id) { + this.id = id; + return this; + } + + public Integer getId() { + return id; + } + + public EconomyTransactions setRecipientId(User recipientId) { + this.recipientId = recipientId; + return this; + } + + public User getRecipientId() { + return recipientId; + } + + public EconomyTransactions setAmount(BigInteger amount) { + this.amount = amount; + return this; + } + + public BigInteger getAmount() { + return amount; + } + + public EconomyTransactions setTransactionDate(LocalDateTime transactionDate) { + this.transactionDate = transactionDate; + return this; + } + + public LocalDateTime getTransactionDate() { + return transactionDate; + } + + @Override + public String toString() { + return "EconomyTransactions [" + + "id=" + id + + ", amount=" + amount + + ", transactionDate=" + transactionDate + + ", recipientId=" + recipientId + + ']'; + } +} diff --git a/src/main/java/org/andrewkydev/api/database/models/User.java b/src/main/java/org/andrewkydev/api/database/models/User.java new file mode 100644 index 0000000..695ddae --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/models/User.java @@ -0,0 +1,98 @@ +package org.andrewkydev.api.database.models; + + +import com.google.gson.annotations.SerializedName; +import jakarta.persistence.*; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "users") +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + @SerializedName(value = "id") + private Integer id; + + + @Column(name = "nickname") + @SerializedName(value = "nickname") + private String nickname; + + @Column(name = "creation_date") + @SerializedName(value = "creation_date") + private LocalDateTime creationDate; + + @OneToOne(cascade = CascadeType.ALL) + @SerializedName(value = "user_statistic") + @JoinColumn(name = "id", referencedColumnName = "id") + private UserStatistic userStatistic; + + + @OneToOne(cascade = CascadeType.ALL) + @SerializedName(value = "auth_information") + @JoinColumn(name = "id", referencedColumnName = "id") + private AuthInformation authInformation; + + + public User() { + + } + + public User setId(Integer id) { + this.id = id; + return this; + } + + public int getId() { + return id; + } + + public User setCreationDate(LocalDateTime creationDate) { + this.creationDate = creationDate; + return this; + + } + + public LocalDateTime getCreationDate() { + return creationDate; + } + + public User setNickname(String nickname) { + this.nickname = nickname; + return this; + + } + + public String getNickname() { + return nickname; + } + + public void setUserStatistic(UserStatistic userStatistic) { + this.userStatistic = userStatistic; + } + + public UserStatistic getUserStatistic() { + return userStatistic; + } + + public void setAuthInformation(AuthInformation authInformation) { + this.authInformation = authInformation; + } + + public AuthInformation getAuthInformation() { + return authInformation; + } + + @Override + public String toString() { + return "User [" + + "id=" + id + + ", nickname='" + nickname + '\'' + + ", creationDate=" + creationDate + + ", userStatistic=" + userStatistic + + ", authInformation=" + authInformation + + ']'; + } +} diff --git a/src/main/java/org/andrewkydev/api/database/models/UserStatistic.java b/src/main/java/org/andrewkydev/api/database/models/UserStatistic.java new file mode 100644 index 0000000..43c70c7 --- /dev/null +++ b/src/main/java/org/andrewkydev/api/database/models/UserStatistic.java @@ -0,0 +1,72 @@ +package org.andrewkydev.api.database.models; + +import com.google.gson.annotations.SerializedName; +import jakarta.persistence.*; + +@Entity +@Table(name = "user_statistic") +public class UserStatistic { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + @SerializedName(value = "id") + private Integer id; + + @Column(name = "block_placed") + @SerializedName(value = "block_placed") + Integer blockPlaced; + + @Column(name = "block_broken") + @SerializedName(value = "block_broken") + Integer blocksBroken; + + @Column(name = "playing_time") + @SerializedName(value = "playing_time") + Integer playingTime; + + public UserStatistic() { + } + + public UserStatistic setId(Integer id) { + this.id = id; + return this; + } + + public Integer getId() { + return id; + } + + public void setBlockPlaced(Integer blockPlaced) { + this.blockPlaced = blockPlaced; + } + + public Integer getBlockPlaced() { + return blockPlaced; + } + + public void setBlocksBroken(Integer blocksBroken) { + this.blocksBroken = blocksBroken; + } + + public Integer getBlocksBroken() { + return blocksBroken; + } + + public void setPlayingTime(Integer playingTime) { + this.playingTime = playingTime; + } + + public Integer getPlayingTime() { + return playingTime; + } + + @Override + public String toString() { + return "UserStatistic [" + + "id=" + id + + ", blockPlaced=" + blockPlaced + + ", blocksBroken=" + blocksBroken + + ", playingTime=" + playingTime + + ']'; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..6168bdb --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,4 @@ +name: API +version: '${version}' +main: org.andrewkydev.api.API +api-version: '1.20'