Skip to content

Commit 7f54574

Browse files
committed
Merge branch 'development'
This update splits the vshop.conf into per world configurations, allowing to skip loading shops in unloaded worlds. This should prevent shops from breaking on multi-world servers.
2 parents 84ada72 + 9a97f46 commit 7f54574

File tree

13 files changed

+206
-85
lines changed

13 files changed

+206
-85
lines changed

src/main/java/de/dosmike/sponge/vshop/CommandRegistra.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ static void register() {
408408
.arguments(
409409
GenericArguments.none()
410410
).executor((src, args) -> {
411-
VillagerShops.getInstance().saveShops();
411+
VillagerShops.getInstance().saveConfigs();
412412
src.sendMessage(Text.of(TextColors.GREEN, "[vShop] ",
413413
lang.local("cmd.saved").resolve(src).orElse("[saved]")));
414414
VillagerShops.audit("%s saved the shops", Utilities.toString(src));

src/main/java/de/dosmike/sponge/vshop/EventListeners.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,16 @@
1313
import org.spongepowered.api.entity.living.Living;
1414
import org.spongepowered.api.entity.living.player.Player;
1515
import org.spongepowered.api.event.Listener;
16+
import org.spongepowered.api.event.Order;
1617
import org.spongepowered.api.event.block.ChangeBlockEvent;
1718
import org.spongepowered.api.event.block.InteractBlockEvent;
1819
import org.spongepowered.api.event.entity.DamageEntityEvent;
1920
import org.spongepowered.api.event.entity.InteractEntityEvent;
2021
import org.spongepowered.api.event.network.ClientConnectionEvent;
2122
import org.spongepowered.api.event.world.ExplosionEvent;
23+
import org.spongepowered.api.event.world.LoadWorldEvent;
24+
import org.spongepowered.api.event.world.SaveWorldEvent;
25+
import org.spongepowered.api.event.world.UnloadWorldEvent;
2226
import org.spongepowered.api.world.Location;
2327
import org.spongepowered.api.world.World;
2428
import org.spongepowered.api.world.extent.Extent;
@@ -30,7 +34,7 @@
3034

3135
public class EventListeners {
3236

33-
@Listener
37+
@Listener(order= Order.EARLY) //as kind-of protection, run early
3438
public void onAttackEntity(DamageEntityEvent event) {
3539
if (event.isCancelled()) return;
3640
if (!(event.getTargetEntity() instanceof Living)) return;
@@ -132,6 +136,22 @@ public void onPlayerDisconnect(ClientConnectionEvent.Disconnect event) {
132136
.forEach(m->m.clearPlayerState(event.getTargetEntity().getUniqueId()));
133137
}
134138

139+
@Listener
140+
public void onWorldSave(SaveWorldEvent event) {
141+
VillagerShops.instance.saveShops();
142+
}
143+
@Listener
144+
public void onWorldUnload(UnloadWorldEvent event) {
145+
if (!event.isCancelled()) {
146+
VillagerShops.instance.saveShops();
147+
VillagerShops.instance.unloadShops(event.getTargetWorld().getUniqueId());
148+
}
149+
}
150+
@Listener
151+
public void onWorldLoad(LoadWorldEvent event) {
152+
VillagerShops.instance.loadShops(event.getTargetWorld().getUniqueId());
153+
}
154+
135155

136156
// @Listener //someone that knows how to do that please :D
137157
// public void onAiTargetEntity(AITaskEvent event) {

src/main/java/de/dosmike/sponge/vshop/Utilities.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package de.dosmike.sponge.vshop;
22

3-
import ninja.leaping.configurate.ConfigurationNode;
43
import org.jetbrains.annotations.Nullable;
5-
import org.spongepowered.api.Sponge;
64
import org.spongepowered.api.command.CommandSource;
75
import org.spongepowered.api.data.DataQuery;
86
import org.spongepowered.api.data.key.Keys;
@@ -11,16 +9,12 @@
119
import org.spongepowered.api.item.inventory.ItemStack;
1210
import org.spongepowered.api.item.inventory.ItemStackSnapshot;
1311
import org.spongepowered.api.service.economy.Currency;
14-
import org.spongepowered.api.text.Text;
1512
import org.spongepowered.api.world.Location;
1613
import org.spongepowered.api.world.World;
1714

18-
import javax.swing.text.NumberFormatter;
1915
import java.math.BigDecimal;
20-
import java.math.RoundingMode;
2116
import java.text.DecimalFormat;
2217
import java.text.DecimalFormatSymbols;
23-
import java.text.NumberFormat;
2418
import java.util.*;
2519
import java.util.stream.Collectors;
2620

0 commit comments

Comments
 (0)