Skip to content

Commit

Permalink
Merge pull request #518 from VolmitSoftware/Development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
CrazyDev05 authored Jan 2, 2025
2 parents 4dc30a5 + 823fda4 commit 3b1c567
Show file tree
Hide file tree
Showing 30 changed files with 1,190 additions and 60 deletions.
28 changes: 24 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ plugins {
id 'java-library'
id "io.freefair.lombok" version "6.3.0"
id "com.github.johnrengelman.shadow" version "7.1.2"
id "org.jetbrains.gradle.plugin.idea-ext" version "1.1.9"
}

version '1.16.0-1.19.2-1.21.3'
Expand Down Expand Up @@ -99,6 +100,7 @@ allprojects {
maven { url "https://repo.glaremasters.me/repository/bloodshot/" }
maven { url "https://maven.enginehub.org/repo/" }
maven { url "https://repo.oraxen.com/releases" }
maven { url "https://repo.alessiodp.com/releases" }
maven { url 'https://jitpack.io' }
}

Expand All @@ -119,12 +121,14 @@ allprojects {
implementation 'com.github.VolmitDev:Amulet:23.5.1'
implementation 'com.github.VolmitDev:Chrono:22.9.10'
implementation 'com.github.VolmitDev:Spatial:22.11.1'
implementation 'net.byteflux:libby-velocity:1.3.1'

implementation "io.papermc:paperlib:1.0.7"
implementation 'com.github.ben-manes.caffeine:caffeine:3.0.6'
compileOnly "io.papermc:paperlib:1.0.7"
compileOnly 'com.github.ben-manes.caffeine:caffeine:3.0.6'
annotationProcessor 'systems.manifold:manifold-ext:' + manifoldVersion
testAnnotationProcessor 'systems.manifold:manifold-ext:' + manifoldVersion
implementation 'systems.manifold:manifold-rt:' + manifoldVersion
compileOnly 'io.lettuce:lettuce-core:6.5.1.RELEASE'

//Random Api's
compileOnly 'com.github.DeadSilenceIV:AdvancedChestsAPI:2.9-BETA'
Expand All @@ -138,6 +142,7 @@ allprojects {
compileOnly "com.github.TechFortress:GriefPrevention:16.18.1"
implementation 'xyz.xenondevs:particle:1.8.1'
implementation "com.frengor:ultimateadvancementapi-shadeable:2.4.2"
implementation 'com.jeff-media:custom-block-data:2.2.3'
compileOnly 'com.griefdefender:api:2.1.0-SNAPSHOT'
compileOnly 'io.netty:netty-all:4.1.68.Final'

Expand All @@ -150,32 +155,44 @@ allprojects {
compileOnly 'net.kyori:adventure-platform-bukkit:4.3.4'
compileOnly 'it.unimi.dsi:fastutil:8.5.13'
compileOnly "fr.skytasul:glowingentities:1.4.1"
implementation 'com.google.guava:guava:30.1-jre'
compileOnly 'com.google.guava:guava:30.1-jre'
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
}
}

dependencies {
compileOnly(project(":velocity")) {
transitive = false
}
}

/**
* Configure Adapt for shading
*/
shadowJar {
// minimize()
VERSIONS.each {
dependsOn(":version:${it.key}:build")
from(project(":version:${it.key}").layout.buildDirectory.file("libs/${it.key}.jar").get())
from(project(":version:${it.key}").tasks.named("jar", Jar).get().archiveFile)
}
dependsOn(":velocity:build")
from(project(":velocity").tasks.named("jar", Jar).get().archiveFile)

append("plugin.yml")
relocate 'manifold', 'com.volmit.adapt.util.manifold'
relocate 'art.arcane', 'com.volmit.adapt.util.arcane'
relocate 'Fukkit.extensions', 'com.volmit.adapt.util.extensions'
relocate 'Amulet.extensions', 'com.volmit.adapt.util.extensions'
relocate 'com.fren_gor.ultimateAdvancementAPI', 'com.volmit.adapt.util.advancements'
relocate 'net.byteflux.libby', 'com.volmit.adapt.util.libby'
relocate 'com.jeff_media.customblockdata', 'com.volmit.util.customblocks'
dependencies {
include(dependency('systems.manifold:'))
include(dependency('xyz.xenondevs:'))
include(dependency('com.github.VolmitDev:'))
include(dependency('com.frengor:ultimateadvancementapi-shadeable:'))
include(dependency('net.byteflux:'))
include(dependency('com.jeff-media:custom-block-data:'))
}
}

Expand Down Expand Up @@ -279,3 +296,6 @@ if (JavaVersion.current() != JavaVersion.VERSION_1_8 &&
}
}

idea.project.settings.taskTriggers {
afterSync(":velocity:generateTemplates")
}
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
rootProject.name = 'Adapt'

include(
":velocity",
':version:v1_21_2',
':version:v1_21',
':version:v1_20_5',
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/volmit/adapt/Adapt.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package com.volmit.adapt;

import art.arcane.amulet.io.FolderWatcher;
import com.jeff_media.customblockdata.CustomBlockData;
import com.volmit.adapt.api.advancement.AdvancementManager;
import com.volmit.adapt.api.data.WorldData;
import com.volmit.adapt.api.potion.BrewingManager;
Expand All @@ -29,6 +30,7 @@
import com.volmit.adapt.api.world.AdaptServer;
import com.volmit.adapt.content.gui.SkillsGui;
import com.volmit.adapt.content.protector.*;
import com.volmit.adapt.util.redis.RedisSync;
import fr.skytasul.glowingentities.GlowingEntities;
import com.volmit.adapt.util.*;
import com.volmit.adapt.util.collection.KList;
Expand Down Expand Up @@ -79,6 +81,8 @@ public class Adapt extends VolmitPlugin {

@Getter
private AdvancementManager manager;
@Getter
private RedisSync redisSync;


private final KList<Runnable> postShutdown = new KList<>();
Expand Down Expand Up @@ -115,7 +119,9 @@ public void start() {
if (AdaptConfig.get().isUseSql()) {
sqlManager.establishConnection();
}
redisSync = new RedisSync();
startSim();
CustomBlockData.registerListener(this);
registerListener(new BrewingManager());
registerListener(Version.get());
setupMetrics();
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/volmit/adapt/AdaptConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.volmit.adapt.api.xp.Curves;
import com.volmit.adapt.util.IO;
import com.volmit.adapt.util.JSONObject;
import com.volmit.adapt.util.redis.RedisConfig;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Material;
Expand Down Expand Up @@ -62,6 +63,7 @@ public class AdaptConfig {
private boolean welcomeMessage = true;
private boolean advancements = true;
private boolean useSql = false;
private boolean useRedis = false;
private int sqlSecondsCheckverify = 30;
private boolean useEnchantmentTableParticleForActiveEffects = true;
private boolean escClosesAllGuis = false;
Expand All @@ -73,6 +75,7 @@ public class AdaptConfig {
private boolean actionbarNotifyXp = true;
private boolean actionbarNotifyLevel = true;
private boolean unlearnAllButton = false;
private RedisConfig redis = new RedisConfig();
private SqlSettings sql = new SqlSettings();
private Protector protectorSupport = new Protector();
private Map<String, Map<String, Boolean>> protectionOverrides = Map.of(
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/volmit/adapt/api/recipe/AdaptRecipe.java
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ public ItemStack getResult() {
public void register() {
ShapedRecipe s = new ShapedRecipe(new NamespacedKey(Adapt.instance, getKey()), result);
s.shape(shapes.toArray(new String[0]));
ingredients.forEach(i -> s.setIngredient(i.getCharacter(), i.getMaterial()));
ingredients.forEach(i -> s.setIngredient(i.getCharacter(), i.getChoice()));
Bukkit.getServer().addRecipe(s);
Adapt.verbose("Registered Shaped Crafting Recipe " + s.getKey());
}
Expand Down
20 changes: 19 additions & 1 deletion src/main/java/com/volmit/adapt/api/recipe/MaterialChar.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,28 @@
import lombok.AllArgsConstructor;
import lombok.Data;
import org.bukkit.Material;
import org.bukkit.Tag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.RecipeChoice;

@AllArgsConstructor
@Data
public class MaterialChar {
private char character;
private Material material;
private RecipeChoice choice;

public MaterialChar(char character, Tag<Material> tag) {
this.character = character;
this.choice = new RecipeChoice.MaterialChoice(tag);
}

public MaterialChar(char character, Material... material) {
this.character = character;
this.choice = new RecipeChoice.MaterialChoice(material);
}

public MaterialChar(char character, ItemStack... itemStack) {
this.character = character;
this.choice = new RecipeChoice.ExactChoice(itemStack);
}
}
27 changes: 22 additions & 5 deletions src/main/java/com/volmit/adapt/api/world/AdaptPlayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

package com.volmit.adapt.api.world;

import com.google.gson.Gson;
import com.volmit.adapt.Adapt;
import com.volmit.adapt.AdaptConfig;
import com.volmit.adapt.api.notification.AdvancementNotification;
Expand Down Expand Up @@ -52,6 +51,7 @@ public class AdaptPlayer extends TickedObject {
private long lastloc;
private Vector velocity;
private Location lastpos;
private long lastSeen = -1;

public AdaptPlayer(Player p) {
super("players", p.getUniqueId().toString(), 50);
Expand Down Expand Up @@ -124,9 +124,10 @@ public PlayerSkillLine getSkillLine(String l) {
@SneakyThrows
private void save() {
UUID uuid = player.getUniqueId();
String data = new Gson().toJson(this.data);
String data = this.data.toJson();

if (AdaptConfig.get().isUseSql()) {
Adapt.instance.getRedisSync().publish(uuid, data);
Adapt.instance.getSqlManager().updateData(uuid, data);
} else {
IO.writeAll(getPlayerDataFile(uuid), new JSONObject(data).toString(4));
Expand All @@ -136,10 +137,11 @@ private void save() {
@SneakyThrows
private void unSave() {
UUID uuid = player.getUniqueId();
String data = new Gson().toJson(new PlayerData());
String data = new PlayerData().toJson();
unregister();

if (AdaptConfig.get().isUseSql()) {
Adapt.instance.getRedisSync().publish(uuid, data);
Adapt.instance.getSqlManager().updateData(uuid, data);
} else {
IO.writeAll(getPlayerDataFile(uuid), new JSONObject(data).toString(4));
Expand Down Expand Up @@ -178,12 +180,27 @@ public void delete(UUID uuid) {
});
}

public boolean shouldUnload() {
if (player.isOnline()) {
lastSeen = M.ms();
return false;
}

return lastSeen + 60_000 < System.currentTimeMillis();
}

private PlayerData loadPlayerData() {
boolean upload = false;
if (AdaptConfig.get().isUseSql()) {
var opt = Adapt.instance.getRedisSync().cachedData(player.getUniqueId());
if (opt.isPresent()) {
Adapt.verbose("Using cached data for player: " + player.getUniqueId());
return opt.get();
}

String sqlData = Adapt.instance.getSqlManager().fetchData(player.getUniqueId());
if (sqlData != null) {
return new Gson().fromJson(sqlData, PlayerData.class);
return PlayerData.fromJson(sqlData);
}
upload = true;
}
Expand All @@ -195,7 +212,7 @@ private PlayerData loadPlayerData() {
if (upload) {
Adapt.instance.getSqlManager().updateData(player.getUniqueId(), text);
}
return new Gson().fromJson(text, PlayerData.class);
return PlayerData.fromJson(text);
} catch (Throwable ignored) {
Adapt.verbose("Failed to load player data for " + player.getName() + " (" + player.getUniqueId() + ")");
}
Expand Down
26 changes: 18 additions & 8 deletions src/main/java/com/volmit/adapt/api/world/AdaptServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.volmit.adapt.content.item.KnowledgeOrb;
import com.volmit.adapt.util.*;
import lombok.Getter;
import lombok.NonNull;
import lombok.SneakyThrows;
import org.bukkit.Bukkit;
import org.bukkit.Material;
Expand All @@ -55,7 +56,7 @@

public class AdaptServer extends TickedObject {
private final ReentrantLock clearLock = new ReentrantLock();
private final Map<Player, AdaptPlayer> players = new ConcurrentHashMap<>();
private final Map<UUID, AdaptPlayer> players = new ConcurrentHashMap<>();
@Getter
private final List<SpatialXP> spatialTickets = new ArrayList<>();
@Getter
Expand Down Expand Up @@ -112,12 +113,15 @@ public void takeSpatial(AdaptPlayer p) {

public void join(Player p) {
AdaptPlayer a = new AdaptPlayer(p);
players.put(p, a);
players.put(p.getUniqueId(), a);
a.loggedIn();
}

public void quit(Player p) {
Optional.ofNullable(players.remove(p)).ifPresent(AdaptPlayer::unregister);
public void quit(UUID p) {
AdaptPlayer a = players.get(p);
if (a == null) return;
a.unregister();
players.remove(p);
}

@Override
Expand Down Expand Up @@ -175,7 +179,7 @@ public void on(PlayerJoinEvent e) {
@EventHandler(priority = EventPriority.MONITOR)
public void on(PlayerQuitEvent e) {
Player p = e.getPlayer();
quit(p);
quit(p.getUniqueId());
}

@EventHandler
Expand Down Expand Up @@ -205,7 +209,7 @@ public void onTick() {
return;

try {
players.keySet().removeIf(player -> !player.isOnline());
players.values().removeIf(AdaptPlayer::shouldUnload);
} finally {
clearLock.unlock();
}
Expand Down Expand Up @@ -236,11 +240,17 @@ public PlayerData peekData(UUID player) {
return new PlayerData();
}

@NonNull
public Optional<PlayerData> getPlayerData(@NonNull UUID uuid) {
return Optional.ofNullable(players.get(uuid))
.map(AdaptPlayer::getData);
}

public AdaptPlayer getPlayer(Player p) {
return players.computeIfAbsent(p, player -> {
return players.computeIfAbsent(p.getUniqueId(), player -> {
Adapt.warn("Failed to find AdaptPlayer for " + p.getName() + " (" + p.getUniqueId() + ")");
Adapt.warn("Loading new AdaptPlayer...");
return new AdaptPlayer(player);
return new AdaptPlayer(p);
});
}

Expand Down
10 changes: 10 additions & 0 deletions src/main/java/com/volmit/adapt/api/world/PlayerData.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package com.volmit.adapt.api.world;

import com.google.gson.Gson;
import com.volmit.adapt.Adapt;
import com.volmit.adapt.AdaptConfig;
import com.volmit.adapt.api.notification.ActionBarNotification;
Expand All @@ -43,6 +44,7 @@
@Data
@NoArgsConstructor
public class PlayerData {
private static final Gson GSON = new Gson();
private final Map<String, PlayerSkillLine> skillLines = new ConcurrentHashMap<>();
private Map<String, Double> stats = new ConcurrentHashMap<>();
private String last = "none";
Expand Down Expand Up @@ -237,4 +239,12 @@ public PlayerSkillLine getSkillLine(String skillLine) {
public void addWisdom() {
wisdom++;
}

public String toJson() {
return GSON.toJson(this);
}

public static PlayerData fromJson(String json) {
return GSON.fromJson(json, PlayerData.class);
}
}
Loading

0 comments on commit 3b1c567

Please sign in to comment.