diff --git a/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/Arena.java b/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/Arena.java index 17d5e6f..fb72f05 100644 --- a/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/Arena.java +++ b/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/Arena.java @@ -373,6 +373,7 @@ public class Arena extends Appliance { new FightListener(), new WorldProtectionListener(), new ModeMenuListener(), + new NoProgressListener(), new PlayerInteractAtEntityEventListener(villager, event -> this.sendToCraftAttack(event.getPlayer())), new DismissInventoryOpenFromHolder(villager) ); diff --git a/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/ArenaWorlds.java b/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/ArenaWorlds.java index c7477a7..cccc52f 100644 --- a/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/ArenaWorlds.java +++ b/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/ArenaWorlds.java @@ -39,6 +39,7 @@ final class ArenaWorlds { world.setGameRule(GameRules.SPAWN_WARDENS, false); world.setGameRule(GameRules.RAIDS, false); world.setGameRule(GameRules.SHOW_DEATH_MESSAGES, false); + world.setGameRule(GameRules.SHOW_ADVANCEMENT_MESSAGES, false); world.setStorm(false); world.setThundering(false); world.setTime(6000); diff --git a/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/NoProgressListener.java b/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/NoProgressListener.java new file mode 100644 index 0000000..e4392af --- /dev/null +++ b/arena/src/main/java/eu/mhsl/craftattack/spawn/arena/appliances/arena/NoProgressListener.java @@ -0,0 +1,21 @@ +package eu.mhsl.craftattack.spawn.arena.appliances.arena; + +import com.destroystokyo.paper.event.player.PlayerAdvancementCriterionGrantEvent; +import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerRecipeDiscoverEvent; + +/** + * Nothing done in the arena counts as progress: no advancements, no recipe unlocks. + */ +class NoProgressListener extends ApplianceListener { + @EventHandler + public void onCriterion(PlayerAdvancementCriterionGrantEvent event) { + event.setCancelled(true); + } + + @EventHandler + public void onRecipe(PlayerRecipeDiscoverEvent event) { + event.setCancelled(true); + } +} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/arenaPortal/ArenaPortal.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/arenaPortal/ArenaPortal.java index 810cbc4..b9b4148 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/arenaPortal/ArenaPortal.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/metaGameplay/arenaPortal/ArenaPortal.java @@ -20,7 +20,6 @@ import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; import java.util.Base64; import java.util.HashSet; import java.util.List; @@ -75,8 +74,7 @@ public class ArenaPortal extends Appliance { if(!this.pendingTransfers.add(player.getUniqueId())) return; player.sendActionBar(Component.text("Du wirst zur Arena gebracht...", NamedTextColor.GRAY)); - List contents = new ArrayList<>(List.of(player.getInventory().getContents())); - String items = Base64.getEncoder().encodeToString(ItemStack.serializeItemsAsBytes(contents)); + String items = Base64.getEncoder().encodeToString(ItemStack.serializeItemsAsBytes(player.getInventory().getContents())); ArenaRepository.InventorySnapshot snapshot = new ArenaRepository.InventorySnapshot(player.getUniqueId(), items); Bukkit.getScheduler().runTaskAsynchronously(Main.instance(), () -> {