Skip to content

Commit 166c03c

Browse files
Merge pull request #397 from VolmitSoftware/Development
Development
2 parents 0237a0d + 5a98b22 commit 166c03c

File tree

16 files changed

+175
-44
lines changed

16 files changed

+175
-44
lines changed

build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ plugins {
2323
id "de.undercouch.download" version "5.0.1"
2424
}
2525

26-
version '1.5.5-1.19.3'
26+
version '1.6.0-1.19.3'
2727
def nmsVersion = "1.19.3" //[NMS]
2828
def apiVersion = '1.19'
2929
def specialSourceVersion = '1.11.0' //[NMS]
3030
def spigotJarVersion = '1.19.3-R0.1-SNAPSHOT' //[NMS]
3131
def name = getRootProject().getName() // Defined in settings.gradle
3232
def main = 'com.volmit.adapt.Adapt'
33-
def manifoldVersion = '2022.1.38'
33+
def manifoldVersion = '2023.1.0'
3434

3535
// ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED
3636
// ======================== WINDOWS =============================
@@ -134,6 +134,7 @@ dependencies {
134134
// Cancer
135135
implementation 'art.arcane:Amulet:22.7.18'
136136
implementation 'art.arcane:Fukkit:22.7.5'
137+
implementation 'art.arcane:Curse:22.11.8'
137138
annotationProcessor 'systems.manifold:manifold-ext:' + manifoldVersion
138139
testAnnotationProcessor 'systems.manifold:manifold-ext:' + manifoldVersion
139140
implementation 'systems.manifold:manifold-rt:' + manifoldVersion

src/main/java/com/volmit/adapt/Adapt.java

Lines changed: 73 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121
import art.arcane.amulet.io.FolderWatcher;
2222
import com.volmit.adapt.api.data.WorldData;
2323
import com.volmit.adapt.api.potion.BrewingManager;
24-
import com.volmit.adapt.content.protector.FactionsClaimProtector;
2524
import com.volmit.adapt.api.protection.ProtectorRegistry;
26-
import com.volmit.adapt.content.protector.WorldGuardProtector;
2725
import com.volmit.adapt.api.tick.Ticker;
2826
import com.volmit.adapt.api.value.MaterialValue;
2927
import com.volmit.adapt.api.world.AdaptServer;
3028
import com.volmit.adapt.commands.CommandAdapt;
29+
import com.volmit.adapt.content.gui.SkillsGui;
30+
import com.volmit.adapt.content.protector.FactionsClaimProtector;
31+
import com.volmit.adapt.content.protector.WorldGuardProtector;
3132
import com.volmit.adapt.nms.NMS;
3233
import com.volmit.adapt.util.*;
3334
import com.volmit.adapt.util.secret.SecretSplash;
@@ -39,13 +40,17 @@
3940
import net.md_5.bungee.api.chat.TextComponent;
4041
import org.bukkit.Bukkit;
4142
import org.bukkit.entity.Player;
43+
import org.bukkit.event.HandlerList;
44+
import org.bukkit.event.Listener;
4245

4346
import java.io.BufferedReader;
4447
import java.io.File;
4548
import java.io.InputStreamReader;
4649
import java.net.URL;
4750
import java.util.HashMap;
51+
import java.util.Map;
4852
import java.util.Random;
53+
import java.util.UUID;
4954

5055
public class Adapt extends VolmitPlugin {
5156
public static Adapt instance;
@@ -63,16 +68,14 @@ public class Adapt extends VolmitPlugin {
6368
private FolderWatcher configWatcher;
6469
@Getter
6570
private SQLManager sqlManager;
71+
@Getter
72+
private ProtectorRegistry protectorRegistry;
6673

6774
public Adapt() {
6875
super();
6976
instance = this;
7077
}
7178

72-
@Override
73-
public void onLoad() {
74-
loadDefaultProtectors();
75-
}
7679

7780
public static int getJavaVersion() {
7881
String version = System.getProperty("java.version");
@@ -172,6 +175,59 @@ public static void msg(String string) {
172175
}
173176
}
174177

178+
@Getter
179+
private Map<String, Window> guiLeftovers = new HashMap<>();
180+
181+
public static void hotloaded() {
182+
J.s(() -> {
183+
instance.guiLeftovers.values().forEach(window -> {
184+
HandlerList.unregisterAll((Listener) window);
185+
window.close();
186+
});
187+
instance.stop();
188+
instance.start();
189+
190+
instance.getGuiLeftovers().forEach((s, window) -> {
191+
192+
if (window.getTag() != null) {
193+
if (window.getTag().equals("/")) {
194+
SkillsGui.open(Bukkit.getPlayer(UUID.fromString(s)));
195+
} else {
196+
String[] split = window.getTag().split("\\Q/\\E");
197+
if (split.length == 2) {
198+
if (split[0].equals("skill")) {
199+
instance.getAdaptServer().getSkillRegistry().getSkill(split[1]).openGui(Bukkit.getPlayer(UUID.fromString(s)));
200+
}
201+
} else if (split.length == 3) {
202+
if (split[0].equals("skill")) {
203+
try {
204+
instance.getAdaptServer().getSkillRegistry().getSkill(split[1]).getAdaptations().where(a -> a.getId().equals(split[2])).get(0).openGui(Bukkit.getPlayer(UUID.fromString(s)));
205+
206+
} catch (Throwable e) {
207+
instance.getAdaptServer().getSkillRegistry().getSkill(split[1]).openGui(Bukkit.getPlayer(UUID.fromString(s)));
208+
}
209+
}
210+
}
211+
}
212+
213+
}
214+
});
215+
216+
}, 20);
217+
}
218+
219+
public void startSim() {
220+
ticker = new Ticker();
221+
adaptServer = new AdaptServer();
222+
}
223+
224+
public void stopSim() {
225+
ticker.clear();
226+
adaptServer.unregister();
227+
MaterialValue.save();
228+
WorldData.stop();
229+
}
230+
175231
@Override
176232
public void start() {
177233
NMS.init();
@@ -180,26 +236,32 @@ public void start() {
180236
new PapiExpansion().register();
181237
}
182238
printInformation();
183-
ticker = new Ticker();
184239
sqlManager = new SQLManager();
185240
if (AdaptConfig.get().isUseSql()) {
186241
sqlManager.establishConnection();
187242
}
188-
adaptServer = new AdaptServer();
243+
startSim();
189244
registerListener(new BrewingManager());
190245
setupMetrics();
191246
startupPrint(); // Splash screen
192247
if (AdaptConfig.get().isAutoUpdateCheck()) {
193248
autoUpdateCheck();
194249
}
250+
protectorRegistry = new ProtectorRegistry();
251+
if (getServer().getPluginManager().getPlugin("WorldGuard") != null) {
252+
protectorRegistry.registerProtector(new WorldGuardProtector());
253+
}
254+
if (getServer().getPluginManager().getPlugin("Factions") != null) {
255+
protectorRegistry.registerProtector(new FactionsClaimProtector());
256+
}
195257
}
196258

197259
@Override
198260
public void stop() {
199261
sqlManager.closeConnection();
200-
adaptServer.unregister();
201-
MaterialValue.save();
202-
WorldData.stop();
262+
stopSim();
263+
protectorRegistry.unregisterAll();
264+
203265
}
204266

205267
private void startupPrint() {
@@ -234,13 +296,4 @@ private void setupMetrics() {
234296
new Metrics(this, 13412);
235297
}
236298
}
237-
238-
private void loadDefaultProtectors() {
239-
if (getServer().getPluginManager().getPlugin("WorldGuard") != null) {
240-
ProtectorRegistry.registerProtector(new WorldGuardProtector());
241-
}
242-
if (getServer().getPluginManager().getPlugin("Factions") != null) {
243-
ProtectorRegistry.registerProtector(new FactionsClaimProtector());
244-
}
245-
}
246299
}

src/main/java/com/volmit/adapt/api/adaptation/Adaptation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.volmit.adapt.api.Component;
2525
import com.volmit.adapt.api.advancement.AdaptAdvancement;
2626
import com.volmit.adapt.api.potion.BrewingRecipe;
27-
import com.volmit.adapt.api.protection.ProtectorRegistry;
2827
import com.volmit.adapt.api.protection.Protector;
2928
import com.volmit.adapt.api.recipe.AdaptRecipe;
3029
import com.volmit.adapt.api.skill.Skill;
@@ -165,11 +164,11 @@ default Long getStorageLong(Player p, String key) {
165164
void onRegisterAdvancements(List<AdaptAdvancement> advancements);
166165

167166
default Set<Protector> getProtectors() {
168-
Set<Protector> protectors = new HashSet<>(ProtectorRegistry.getDefaultProtectors());
167+
Set<Protector> protectors = new HashSet<>(Adapt.instance.getProtectorRegistry().getDefaultProtectors());
169168
Map<String, Boolean> overrides = AdaptConfig.get().getProtectionOverrides().getOrDefault(this.getName(), Collections.emptyMap());
170169
overrides.forEach((protector, enabled) -> {
171170
if (enabled) {
172-
Protector p = ProtectorRegistry.getAllProtectors()
171+
Protector p = Adapt.instance.getProtectorRegistry().getAllProtectors()
173172
.stream()
174173
.filter(pr -> pr.getName().equals(protector))
175174
.findFirst()
@@ -337,6 +336,7 @@ default void openGui(Player player) {
337336
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 0.7f, 0.655f);
338337
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 0.3f, 0.855f);
339338
Window w = new UIWindow(player);
339+
w.setTag("skill/" + getSkill().getName() + "/" + getName());
340340
w.setDecorator((window, position, row) -> new UIElement("bg").setMaterial(new MaterialBlock(Material.BLACK_STAINED_GLASS_PANE)));
341341
w.setResolution(WindowResolution.W9_H6);
342342
int o = 0;
@@ -440,6 +440,7 @@ default void openGui(Player player) {
440440
w.setTitle(getDisplayName() + " " + C.DARK_GRAY + " " + Form.f(a.getSkillLine(getSkill().getName()).getKnowledge()) + " " + Localizer.dLocalize("snippets", "adaptmenu", "knowledge"));
441441
w.onClosed((vv) -> J.s(() -> onGuiClose(player, !AdaptConfig.get().isEscClosesAllGuis())));
442442
w.open();
443+
Adapt.instance.getGuiLeftovers().put(player.getUniqueId().toString(), w);
443444
}
444445

445446
private void onGuiClose(Player player, boolean openPrevGui) {

src/main/java/com/volmit/adapt/api/adaptation/SimpleAdaptation.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,16 @@ public void registerConfiguration(Class<T> type) {
9292
Adapt.instance.getTicker().register(new TickedObject("config", "config-adaptation-" + getName(), 1000) {
9393
@Override
9494
public void onTick() {
95-
if (fw.checkModified() && file.exists()) {
96-
config = null;
97-
getConfig();
98-
Adapt.info("Hotloaded " + file.getPath());
99-
fw.checkModified();
95+
try {
96+
if (fw.checkModified() && file.exists()) {
97+
config = null;
98+
getConfig();
99+
Adapt.info("Hotloaded " + file.getPath());
100+
Adapt.hotloaded();
101+
fw.checkModified();
102+
}
103+
} catch (Throwable e) {
104+
e.printStackTrace();
100105
}
101106
}
102107
});

src/main/java/com/volmit/adapt/api/protection/Protector.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@ public interface Protector {
2828
String getName();
2929

3030
boolean isEnabledByDefault();
31+
32+
void unregister();
3133
}

src/main/java/com/volmit/adapt/api/protection/ProtectorRegistry.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,29 @@
2222

2323
import java.util.ArrayList;
2424
import java.util.List;
25-
import java.util.stream.Collectors;
2625

2726
public class ProtectorRegistry {
28-
private static final List<Protector> protectors = new ArrayList<>();
27+
private final List<Protector> protectors = new ArrayList<>();
2928

30-
public static void registerProtector(Protector protector) {
29+
public void registerProtector(Protector protector) {
3130
protectors.add(protector);
3231
}
3332

34-
public static void unregisterProtector(Protector protector) {
33+
public void unregisterProtector(Protector protector) {
34+
protector.unregister();
3535
protectors.remove(protector);
3636
}
3737

38-
public static List<Protector> getDefaultProtectors() {
38+
public List<Protector> getDefaultProtectors() {
3939
return protectors.stream().filter(Protector::isEnabledByDefault).collect(ImmutableList.toImmutableList());
4040
}
4141

42-
public static List<Protector> getAllProtectors() {
42+
public List<Protector> getAllProtectors() {
4343
return ImmutableList.copyOf(protectors);
4444
}
45+
46+
public void unregisterAll() {
47+
protectors.forEach(Protector::unregister);
48+
protectors.clear();
49+
}
4550
}

src/main/java/com/volmit/adapt/api/skill/SimpleSkill.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public void onTick() {
102102
config = null;
103103
getConfig();
104104
Adapt.info("Hotloaded " + file.getPath());
105+
Adapt.hotloaded();
105106
fw.checkModified();
106107
}
107108
}

src/main/java/com/volmit/adapt/api/skill/Skill.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ default void openGui(Player player) {
188188
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 0.7f, 1.455f);
189189
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 0.3f, 1.855f);
190190
Window w = new UIWindow(player);
191+
w.setTag("skill/" + getName());
191192
w.setDecorator((window, position, row) -> new UIElement("bg").setMaterial(new MaterialBlock(Material.BLACK_STAINED_GLASS_PANE)));
192193

193194
int ind = 0;
@@ -205,6 +206,7 @@ default void openGui(Player player) {
205206
.onLeftClick((e) -> {
206207
w.close();
207208
i.openGui(player);
209+
208210
}));
209211
ind++;
210212
}
@@ -226,6 +228,7 @@ default void openGui(Player player) {
226228
w.setTitle(getDisplayName(a.getSkillLine(getName()).getLevel()) + " " + Form.pc(XP.getLevelProgress(a.getSkillLine(getName()).getXp())) + " (" + Form.f((int) XP.getXpUntilLevelUp(a.getSkillLine(getName()).getXp())) + Localizer.dLocalize("snippets", "gui", "xp") + " " + (a.getSkillLine(getName()).getLevel() + 1) + ")");
227229
w.onClosed((vv) -> J.s(() -> onGuiClose(player, !AdaptConfig.get().isEscClosesAllGuis())));
228230
w.open();
231+
Adapt.instance.getGuiLeftovers().put(player.getUniqueId().toString(), w);
229232
}
230233

231234
private void onGuiClose(Player player, boolean openPrevGui) {

src/main/java/com/volmit/adapt/api/tick/Ticker.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ public void unregister(Ticked ticked) {
5656
}
5757
}
5858

59+
public void clear() {
60+
synchronized (ticklist) {
61+
ticklist.clear();
62+
}
63+
synchronized (removeTicks) {
64+
removeTicks.clear();
65+
}
66+
synchronized (newTicks) {
67+
newTicks.clear();
68+
}
69+
70+
}
71+
5972
private void tick() {
6073
ticking = true;
6174
// int ix = 0;

src/main/java/com/volmit/adapt/content/adaptation/rift/RiftBlink.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public void addStats(int level, Element v) {
7676
public void on(PlayerQuitEvent e) {
7777
Player p = e.getPlayer();
7878
lastJump.remove(p);
79+
canBlink.remove(p);
7980
}
8081

8182
@EventHandler(priority = EventPriority.HIGHEST)
@@ -124,10 +125,6 @@ public void on(PlayerToggleFlightEvent e) {
124125
}
125126
}
126127

127-
public boolean isSafe(Location l) {
128-
return l.getBlock().getType().isSolid() && !l.getBlock().getRelative(BlockFace.UP).getType().isSolid() && !l.getBlock().getRelative(BlockFace.UP).getRelative(BlockFace.UP).getType().isSolid();
129-
}
130-
131128
@EventHandler
132129
public void on(PlayerMoveEvent e) {
133130
Player p = e.getPlayer();
@@ -152,17 +149,25 @@ public void on(PlayerMoveEvent e) {
152149
if (isSafe(loc)) {
153150
canBlink.put(p, true);
154151
p.setAllowFlight(true);
155-
Adapt.info("Allowing flight for " + p.getName() + "");
152+
Adapt.verbose("Allowing flight for " + p.getName() + "");
156153
J.a(() -> {
157154
p.setAllowFlight(false);
158155
p.setFlying(false);
159-
Adapt.info("Disabling flight for " + p.getName() + "");
156+
Adapt.verbose("Disabling flight for " + p.getName() + "");
160157
canBlink.remove(p);
161-
}, 13);
158+
}, 25);
162159
}
160+
} else {
161+
canBlink.remove(p);
163162
}
164163
}
165164

165+
private boolean isSafe(Location l) {
166+
return l.getBlock().getType().isSolid()
167+
&& !l.getBlock().getRelative(BlockFace.UP).getType().isSolid()
168+
&& !l.getBlock().getRelative(BlockFace.UP).getRelative(BlockFace.UP).getType().isSolid();
169+
}
170+
166171

167172
@Override
168173
public void onTick() {

0 commit comments

Comments
 (0)