diff --git a/Challenge/src/main/java/de/fanta/challenge/Challenge.java b/Challenge/src/main/java/de/fanta/challenge/Challenge.java index 9372b4f..e558509 100644 --- a/Challenge/src/main/java/de/fanta/challenge/Challenge.java +++ b/Challenge/src/main/java/de/fanta/challenge/Challenge.java @@ -27,8 +27,12 @@ import de.iani.playerUUIDCache.PlayerUUIDCache; import de.speedy64.globalport.GlobalApi; import io.papermc.paper.ban.BanListType; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.translation.GlobalTranslator; +import net.kyori.adventure.translation.TranslationRegistry; +import net.kyori.adventure.util.UTF8ResourceBundleControl; import org.apache.commons.io.FileUtils; import org.bukkit.BanList; import org.bukkit.Bukkit; @@ -52,7 +56,9 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Random; +import java.util.ResourceBundle; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; @@ -155,6 +161,8 @@ this.scoreManager = new ScoreManager(this); this.vanish = new VanishUtils(this); + initTranslator(); + saveDefaultConfig(); reloadConfig(); createServerConfig(); @@ -328,6 +336,18 @@ getLogger().info("Plugin unloaded"); } + private void initTranslator() { + TranslationRegistry registry = TranslationRegistry.create(Key.key("challenge:lang")); + + ResourceBundle bundle_en_US = ResourceBundle.getBundle("lang.en_US", Locale.US, UTF8ResourceBundleControl.get()); + registry.registerAll(Locale.US, bundle_en_US, true); + GlobalTranslator.translator().addSource(registry); + + ResourceBundle bundle_de_DE = ResourceBundle.getBundle("lang.de_DE", Locale.GERMAN, UTF8ResourceBundleControl.get()); + registry.registerAll(Locale.GERMAN, bundle_de_DE, true); + GlobalTranslator.translator().addSource(registry); + } + public RandomDropsChallenge getRandomDropsManager() { return this.rndDrops; } diff --git a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java index d03ef55..c585373 100644 --- a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java +++ b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java @@ -31,8 +31,10 @@ import org.bukkit.block.Block; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.ChestedHorse; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.Llama; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -541,7 +543,7 @@ if (e.getClick() == ClickType.NUMBER_KEY) { int slot = e.getHotbarButton(); if (slot >= 0 && slot < 9) { - if (!e.getWhoClicked().getInventory().equals(e.getInventory())) { + if (player.getInventory() != e.getInventory() || player.getInventory() != e.getClickedInventory()) { ItemStack swap = e.getWhoClicked().getInventory().getItem(slot); if (swap != null) { ItemMeta swapItemMeta = swap.getItemMeta(); @@ -563,6 +565,42 @@ if (e.getSlot() == 40) { //Slot 40 == Offhand e.setCancelled(true); } + if (e.getInventory().getHolder() instanceof ChestedHorse chestedHorse) { + if (chestedHorse.getType() == EntityType.DONKEY || chestedHorse.getType() == EntityType.MULE) { + if (e.getRawSlot() == 16) { //Latest Slot in Inventory + e.setCancelled(true); + } + } + if (chestedHorse instanceof Llama llama) { + switch (llama.getStrength()) { + case 1 -> { + if (e.getRawSlot() == 4) { + e.setCancelled(true); + } + } + case 2 -> { + if (e.getRawSlot() == 7) { + e.setCancelled(true); + } + } + case 3 -> { + if (e.getRawSlot() == 10) { + e.setCancelled(true); + } + } + case 4 -> { + if (e.getRawSlot() == 13) { + e.setCancelled(true); + } + } + case 5 -> { + if (e.getRawSlot() == 16) { + e.setCancelled(true); + } + } + } + } + } } case MOVE_TO_OTHER_INVENTORY -> { if (!(e.getInventory() instanceof CraftingInventory)) { @@ -735,9 +773,7 @@ if (questType == QuestType.ForceStructure) { for (GeneratedStructure generatedStructure : player.getChunk().getStructures()) { - plugin.getLogger().info("Structure: " + generatedStructure.getStructure().key().asMinimalString()); if (generatedStructure.getBoundingBox().overlaps(player.getBoundingBox())) { - plugin.getLogger().info("In Structure: " + generatedStructure.getStructure().key().asMinimalString()); selectStructure(player, generatedStructure.getStructure()); } } @@ -796,7 +832,7 @@ } public void startUpdateTask() { - playerTasks = plugin.getServer().getScheduler().runTaskTimer(plugin, () -> tick(), 1L, 1L); + playerTasks = plugin.getServer().getScheduler().runTaskTimer(plugin, this::tick, 1L, 1L); } public void stopUpdateTask() { @@ -863,6 +899,7 @@ case ForceEffect -> stack = new ItemStack(Material.LINGERING_POTION); case ForceDeath -> stack = new ItemStack(Material.NETHERITE_AXE); case ForceLocation -> stack = new ItemStack(Material.COMPASS); + case ForceStructure -> stack = new ItemStack(Material.FILLED_MAP); } @@ -964,7 +1001,7 @@ ArrayList structureList = playerStructureTypes.get(player.getUniqueId()); structureList.remove(structureType); playerStructureTypes.put(player.getUniqueId(), structureList); - TextComponent textComponent = Component.text("Structure: ").color(Color.GREEN).append(Component.translatable(StringUtil.capitalizeFirstLetter(structureType.key().asString(), true)).color(Color.BLUE)).append(Component.text(" wurde Registriert").color(Color.GREEN)); + TextComponent textComponent = Component.text("Structure: ").color(Color.GREEN).append(Component.translatable(structureType.key().asMinimalString()).color(Color.BLUE)).append(Component.text(" wurde Registriert").color(Color.GREEN)); plugin.getComponentUtil().sendMessage(player, textComponent); finishQuest(player); } @@ -1029,7 +1066,7 @@ case ForceStructure -> { Structure structureType = structureTypeByPlayerList.get(player.getUniqueId()); if (structureType != null) { - bossBarTitle = getBossBarTitle(">> StructureType: ", Component.translatable(StringUtil.capitalizeFirstLetter(structureType.key().asMinimalString(), true)), scoreManager.getPosition(new ChallengePlayer(player.getUniqueId()))); + bossBarTitle = getBossBarTitle(">> ForceStructure: ", Component.translatable(structureType.key().asMinimalString()), scoreManager.getPosition(new ChallengePlayer(player.getUniqueId()))); } } } diff --git a/Challenge/src/main/resources/lang/de_DE.properties b/Challenge/src/main/resources/lang/de_DE.properties new file mode 100644 index 0000000..9050297 --- /dev/null +++ b/Challenge/src/main/resources/lang/de_DE.properties @@ -0,0 +1,34 @@ +stronghold=Endportal Festung +ruined_portal=Portalruine +ruined_portal_ocean=Ozean Portalruine +ruined_portal_mountain=Berg Portalruine +ruined_portal_jungle=Dschungel Portalruine +ruined_portal_swamp=Sumpf Portalruine +ruined_portal_nether=Nether Portalruine +ocean_ruin_cold=Kalte Ozeanruine +ocean_ruin_warm=Warme Ozeanruine +trial_chambers=Prüfungskammern +shipwreck=Schiffswrack +shipwreck_beached=Gestrandetes Schiffswrack +ruined_portal_desert=Wüsten Portalruine +trail_ruins=Pfadruine +village_savanna=Savannen Dorf +village_snowy=Verschneites Dorf +village_taiga=Taiga Dorf +village_plains=Ebenen Dorf +village_desert=Wüsten Dorf +mansion=Waldanwesen +jungle_pyramid=Dschungeltempel +mineshaft=Mine +mineshaft_mesa=Tafelberg Mine +swamp_hut=Sumpfhütte +end_city=Endsiedlung +ancient_city=Antike Stätte +desert_pyramid=Wüstentempel +monument=Ozeanmonument +igloo=Iglu +bastion_remnant=Bastionsruine +buried_treasure=Vergrabener Schatz +nether_fossil=Netherfossil +pillager_outpost=Plünderer-Außenposten +fortress=Netherfestung \ No newline at end of file diff --git a/Challenge/src/main/resources/lang/en_US.properties b/Challenge/src/main/resources/lang/en_US.properties new file mode 100644 index 0000000..26f1a6a --- /dev/null +++ b/Challenge/src/main/resources/lang/en_US.properties @@ -0,0 +1,34 @@ +stronghold=Stronghold +ruined_portal=Ruined Portal +ruined_portal_ocean=Ocean Ruined Portal +ruined_portal_mountain=Mountain Ruined Portal +ruined_portal_jungle=Jungle Ruined Portal +ruined_portal_swamp=Swamp Ruined Portal +ruined_portal_nether=Nether Ruined Portal +ocean_ruin_cold=Cold Ocean Ruins +ocean_ruin_warm=Warm Ocean Ruins +trial_chambers=Trial Chambers +shipwreck=Shipwreck +shipwreck_beached=Beached Shipwreck +ruined_portal_desert=Desert Ruined Portal +trail_ruins=Trail Ruins +village_savanna=Savanna Village +village_snowy=Snowy Village +village_taiga=Taiga Village +village_plains=Plains Village +village_desert=Desert Village +mansion=Woodland Mansion +jungle_pyramid=Jungle Temple +mineshaft=Mineshaft +mineshaft_mesa=Badlands Mineshaft +swamp_hut=Swamp Hut +end_city=End City +ancient_city=Ancient City +desert_pyramid=Desert Pyramid +monument=Ocean Monument +igloo=Igloo +bastion_remnant=Bastion +buried_treasure=Buried Treasure +nether_fossil=Nether Fossil +pillager_outpost=Pillager Outpost +fortress=Nether Fortress