From fdc3581049fbb0b54299e3cc375b12a7a644eb7e Mon Sep 17 00:00:00 2001 From: xSavior-of-God <66216419+xSavior-of-God@users.noreply.github.com> Date: Wed, 29 Jul 2020 03:20:22 +0200 Subject: [PATCH 1/2] Added compatibility with SuperiorSkyblock2 --- lib/SuperiorSkyblockAPI.jar | Bin 0 -> 58735 bytes pom.xml | 7 ++ .../java/de/epiceric/shopchest/ShopChest.java | 28 +++++- .../de/epiceric/shopchest/config/Config.java | 18 ++++ .../SuperiorSkyblockShopIslandPermission.java | 25 +++++ .../listeners/SuperiorSkyblockListener.java | 90 ++++++++++++++++++ .../listeners/SuperiorSkyblockListener.java | 71 ++++++++++++++ src/main/resources/config.yml | 8 +- 8 files changed, 245 insertions(+), 2 deletions(-) create mode 100644 lib/SuperiorSkyblockAPI.jar create mode 100644 src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java create mode 100644 src/main/java/de/epiceric/shopchest/external/listeners/SuperiorSkyblockListener.java create mode 100644 src/main/java/de/epiceric/shopchest/listeners/SuperiorSkyblockListener.java diff --git a/lib/SuperiorSkyblockAPI.jar b/lib/SuperiorSkyblockAPI.jar new file mode 100644 index 0000000000000000000000000000000000000000..453f2561fc9820ca4c99a62529f48f9ef28b01d8 GIT binary patch literal 58735 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

L=hbtq0ct6Fd0TWAlq`lq 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 CX~K;F literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index e19befff..01b64f3b 100644 --- a/pom.xml +++ b/pom.xml @@ -169,6 +169,13 @@ system ${project.basedir}/lib/PlotSquared-Bukkit-4.4.495.jar + + com.github.OmerBenGera + SuperiorSkyblockAPI + api-version + system + ${project.basedir}/lib/SuperiorSkyblockAPI.jar + diff --git a/src/main/java/de/epiceric/shopchest/ShopChest.java b/src/main/java/de/epiceric/shopchest/ShopChest.java index 0d5e5b56..efa9a852 100644 --- a/src/main/java/de/epiceric/shopchest/ShopChest.java +++ b/src/main/java/de/epiceric/shopchest/ShopChest.java @@ -16,7 +16,6 @@ import java.util.stream.Stream; import com.palmergames.bukkit.towny.Towny; -import com.plotsquared.core.PlotSquared; import com.wasteofplastic.askyblock.ASkyBlock; import org.bstats.bukkit.Metrics; @@ -37,6 +36,7 @@ import de.epiceric.shopchest.external.BentoBoxShopFlag; import de.epiceric.shopchest.external.PlotSquaredOldShopFlag; import de.epiceric.shopchest.external.PlotSquaredShopFlag; +import de.epiceric.shopchest.external.SuperiorSkyblockShopIslandPermission; import de.epiceric.shopchest.external.WorldGuardShopFlag; import de.epiceric.shopchest.external.listeners.ASkyBlockListener; import de.epiceric.shopchest.external.listeners.GriefPreventionListener; @@ -54,6 +54,7 @@ import de.epiceric.shopchest.listeners.ShopInteractListener; import de.epiceric.shopchest.listeners.ShopItemListener; import de.epiceric.shopchest.listeners.ShopUpdateListener; +import de.epiceric.shopchest.listeners.SuperiorSkyblockListener; import de.epiceric.shopchest.listeners.WorldGuardListener; import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop.ShopType; @@ -99,6 +100,7 @@ public class ShopChest extends JavaPlugin { private GriefPrevention griefPrevention; private AreaShop areaShop; private BentoBox bentoBox; + private boolean superiorskyblock; private ShopUpdater updater; private ExecutorService shopCreationThreadPool; @@ -318,6 +320,13 @@ private void loadExternalPlugins() { bentoBox = (BentoBox) bentoBoxPlugin; } + if (getServer().getPluginManager().getPlugin("SuperiorSkyblock2").isEnabled()) { + superiorskyblock = true; + } + else { + superiorskyblock = false; + } + if (hasWorldGuard()) { WorldGuardWrapper.getInstance().registerEvents(this); } @@ -334,6 +343,10 @@ private void loadExternalPlugins() { if (hasBentoBox()) { BentoBoxShopFlag.register(this); } + + if (hasSuperiorSkyblock()) { + SuperiorSkyblockShopIslandPermission.register(this); + } } private void loadMetrics() { @@ -450,6 +463,10 @@ private void registerListeners() { if (hasBentoBox()) { getServer().getPluginManager().registerEvents(new BentoBoxListener(this), this); } + + if (hasSuperiorSkyblock()) + getServer().getPluginManager().registerEvents(new SuperiorSkyblockListener(this), this); + } private void registerExternalListeners() { @@ -469,6 +486,8 @@ private void registerExternalListeners() { getServer().getPluginManager().registerEvents(new de.epiceric.shopchest.external.listeners.WorldGuardListener(this), this); if (hasBentoBox()) getServer().getPluginManager().registerEvents(new de.epiceric.shopchest.external.listeners.BentoBoxListener(this), this); + if (hasSuperiorSkyblock()) + getServer().getPluginManager().registerEvents(new de.epiceric.shopchest.external.listeners.SuperiorSkyblockListener(this), this); } /** @@ -660,6 +679,13 @@ public boolean hasBentoBox() { return bentoBox != null && bentoBox.isEnabled(); } + /** + * @return Whether the plugin 'SuperiorSkyblock' is enabled + */ + public boolean hasSuperiorSkyblock() { + return superiorskyblock; + } + /** * @return ShopChest's {@link ShopUtils} containing some important methods */ diff --git a/src/main/java/de/epiceric/shopchest/config/Config.java b/src/main/java/de/epiceric/shopchest/config/Config.java index 21e9cb3e..9bb5fa61 100644 --- a/src/main/java/de/epiceric/shopchest/config/Config.java +++ b/src/main/java/de/epiceric/shopchest/config/Config.java @@ -198,6 +198,11 @@ public class Config { * Whether BentoBox integration should be enabled **/ public static boolean enableBentoBoxIntegration; + + /** + * Whether SuperiorSkyblock integration should be enabled + **/ + public static boolean enableSuperiorSkyblockIntegration; /** * Whether IslandWorld integration should be enabled @@ -312,6 +317,16 @@ public class Config { * The language configuration of the currently selected language file */ public static LanguageConfiguration langConfig; + + /** + * Name of the IslandPrivilage... SuperiorSkyblock + **/ + public static String SuperiorSkyblockIslandPrivilegeName; + + /** + * Whether IslandPrivilage option should be enabled... SuperiorSkyblock + **/ + public static boolean SuperiorSkyblockEnableIslandPrivilege; private ShopChest plugin; @@ -487,6 +502,9 @@ public void reload(boolean firstLoad, boolean langReload, boolean showMessages) enableUSkyblockIntegration = plugin.getConfig().getBoolean("enable-uskyblock-integration"); enableASkyblockIntegration = plugin.getConfig().getBoolean("enable-askyblock-integration"); enableBentoBoxIntegration = plugin.getConfig().getBoolean("enable-bentobox-integration"); + enableSuperiorSkyblockIntegration = plugin.getConfig().getBoolean("enable-superiorskyblock-integration"); + SuperiorSkyblockIslandPrivilegeName = plugin.getConfig().getString("superiorskyblock.islandprivilege-name"); + SuperiorSkyblockEnableIslandPrivilege = plugin.getConfig().getBoolean("superiorskyblock.enable-islandprivilege"); enableIslandWorldIntegration = plugin.getConfig().getBoolean("enable-islandworld-integration"); enableGriefPreventionIntegration = plugin.getConfig().getBoolean("enable-griefprevention-integration"); enableAreaShopIntegration = plugin.getConfig().getBoolean("enable-areashop-integration"); diff --git a/src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java b/src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java new file mode 100644 index 00000000..a04de9e2 --- /dev/null +++ b/src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java @@ -0,0 +1,25 @@ +package de.epiceric.shopchest.external; + +import de.epiceric.shopchest.*; +import de.epiceric.shopchest.config.Config; + +import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI; +import com.bgsoftware.superiorskyblock.api.island.IslandPrivilege; + +public class SuperiorSkyblockShopIslandPermission { + private static String name = Config.SuperiorSkyblockIslandPrivilegeName; + + public static void register(ShopChest plugin) { + if(!Config.SuperiorSkyblockEnableIslandPrivilege) return; + try { + IslandPrivilege.register(name); + SuperiorSkyblockAPI.getSuperiorSkyblock().getMenus().updatePermission(IslandPrivilege.getByName(name)); + + plugin.debug("Registered SuperiorSkyblock shop Island Privilege"); + }catch(Exception e) { + plugin.getLogger().warning("Failed to register SuperiorSkyblock shop Island Privilege"); + plugin.debug("Failed to register SuperiorSkyblock shop Island Privilege"); + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/de/epiceric/shopchest/external/listeners/SuperiorSkyblockListener.java b/src/main/java/de/epiceric/shopchest/external/listeners/SuperiorSkyblockListener.java new file mode 100644 index 00000000..edfdb85b --- /dev/null +++ b/src/main/java/de/epiceric/shopchest/external/listeners/SuperiorSkyblockListener.java @@ -0,0 +1,90 @@ +package de.epiceric.shopchest.external.listeners; + +import java.util.Set; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +import de.epiceric.shopchest.ShopChest; +import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.event.ShopCreateEvent; +import de.epiceric.shopchest.event.ShopExtendEvent; +import de.epiceric.shopchest.utils.Utils; + +import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI; +import com.bgsoftware.superiorskyblock.api.island.*; +import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; + +public class SuperiorSkyblockListener implements Listener { + private final ShopChest plugin; + + public SuperiorSkyblockListener(ShopChest plugin) { + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onCreateShop(ShopCreateEvent e) { + if (!Config.enableSuperiorSkyblockIntegration) + return; + + Set chestLocations = Utils.getChestLocations(e.getShop()); + for (Location loc : chestLocations) { + if (handleForLocation(e.getPlayer(), loc, e)) + return; + } + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onExtendShop(ShopExtendEvent e) { + if (!Config.enableSuperiorSkyblockIntegration) + return; + + handleForLocation(e.getPlayer(), e.getNewChestLocation(), e); + } + + private boolean handleForLocation(Player player, Location loc, Cancellable e) { + Island island = SuperiorSkyblockAPI.getIslandAt(loc); + if (island == null) + return false; + + SuperiorPlayer sp = SuperiorSkyblockAPI.getPlayer(player); + if(sp == null) + return false; + + if (Config.SuperiorSkyblockEnableIslandPrivilege) { + + IslandPrivilege ip; + + try { + ip = IslandPrivilege.getByName(Config.SuperiorSkyblockIslandPrivilegeName); + }catch(Exception ex) { + e.setCancelled(true); + plugin.debug("Cancel Reason: SuperiorSkyblock Couldn't find an IslandPrivilege with the name "+Config.SuperiorSkyblockIslandPrivilegeName); + ex.printStackTrace(); + return true; + } + + Bukkit.getConsoleSender().sendMessage("Perm: "+ip+" status: "+sp.hasPermission(ip)); + + if(!sp.hasPermission(ip)) { + e.setCancelled(true); + plugin.debug("Cancel Reason: SuperiorSkyblock no permission "+Config.SuperiorSkyblockIslandPrivilegeName); + return true; + } + } + + if (!island.isMember(sp) && !island.getOwner().getName().equalsIgnoreCase(sp.getName().toLowerCase())) { + e.setCancelled(true); + plugin.debug("Cancel Reason: SuperiorSkyblock"); + return true; + } + + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/de/epiceric/shopchest/listeners/SuperiorSkyblockListener.java b/src/main/java/de/epiceric/shopchest/listeners/SuperiorSkyblockListener.java new file mode 100644 index 00000000..25a8a117 --- /dev/null +++ b/src/main/java/de/epiceric/shopchest/listeners/SuperiorSkyblockListener.java @@ -0,0 +1,71 @@ +package de.epiceric.shopchest.listeners; + +import java.util.Collection; +import java.util.List; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +import de.epiceric.shopchest.ShopChest; +import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.shop.Shop; +import com.bgsoftware.superiorskyblock.api.events.*; +import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; + +public class SuperiorSkyblockListener implements Listener { + private ShopChest plugin; + + public SuperiorSkyblockListener(ShopChest plugin) { + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onIslandDeleted(IslandDisbandEvent e) { + deleteShops(e.getIsland().getIslandMembers(true)); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onIslandQuit(IslandQuitEvent e) { + deleteShops(e.getPlayer()); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onTeamKick(IslandKickEvent e) { + deleteShops(e.getTarget()); + } + + private void deleteShops(List members) { + deleteShops(members, null); + } + + private void deleteShops(SuperiorPlayer vendorUuid) { + deleteShops(null, vendorUuid); + } + + + private void deleteShops(List members, SuperiorPlayer vendorUuid) { + if (!Config.enableSuperiorSkyblockIntegration) + return; + + Collection shops = plugin.getShopUtils().getShops(); + for (Shop shop : shops) { + + if(members != null) { + for(SuperiorPlayer sp : members) { + if(shop.getVendor().getName().equalsIgnoreCase(sp.getName().toLowerCase())) { + plugin.getShopUtils().removeShop(shop, true); + } + } + } + + if(vendorUuid != null) { + if(shop.getVendor().getName().equalsIgnoreCase(vendorUuid.getName().toLowerCase())) { + plugin.getShopUtils().removeShop(shop, true); + } + } + + } + } + +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f00e5d5b..46839044 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -58,6 +58,7 @@ enable-plotsquared-integration: true enable-uskyblock-integration: true enable-askyblock-integration: true enable-bentobox-integration: true +enable-superiorskyblock-integration: true enable-islandworld-integration: true enable-griefprevention-integration: true enable-areashop-integration: true @@ -221,4 +222,9 @@ database: username: "" # ...password you are going to login with - password: "" \ No newline at end of file + password: "" + +superiorskyblock: + # Remember that if you want to enable this option, you have to add this element (https://hastebin.com/igogekiger.bash) item inside 'SuperiorSkyblock2/menus/permissions.yml' at the end! + enable-islandprivilege: false + islandprivilege-name: "SHOPCHEST" \ No newline at end of file From aaa362550c2fe84ecab30c6d052ac6aee5b2550e Mon Sep 17 00:00:00 2001 From: xSavior-of-God <66216419+xSavior-of-God@users.noreply.github.com> Date: Sun, 5 Dec 2021 00:16:03 +0100 Subject: [PATCH 2/2] . --- lib/SuperiorSkyblockAPI.jar | Bin 58735 -> 61350 bytes pom.xml | 2 +- script/entries.txt | 1 + .../java/de/epiceric/shopchest/ShopChest.java | 8 +- .../SuperiorSkyblockShopIslandPermission.java | 3 + .../external/WorldGuardShopFlag.java | 52 +- .../shopchest/language/LanguageUtils.java | 6 + .../epiceric/shopchest/nms/JsonBuilder.java | 19 +- .../epiceric/shopchest/utils/ShopUtils.java | 16 +- .../de/epiceric/shopchest/utils/Utils.java | 4 +- src/main/resources/lang/de_DE.lang | 445 +++++++++--------- src/main/resources/lang/en_US.lang | 1 + 12 files changed, 310 insertions(+), 247 deletions(-) diff --git a/lib/SuperiorSkyblockAPI.jar b/lib/SuperiorSkyblockAPI.jar index 453f2561fc9820ca4c99a62529f48f9ef28b01d8..15a3e6c661ad673681ac40cf4fbebc61bcdc4404 100644 GIT binary patch delta 6753 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 H$YcB;7&!YG diff --git a/pom.xml b/pom.xml index 01b64f3b..3788049b 100644 --- a/pom.xml +++ b/pom.xml @@ -97,7 +97,7 @@ org.spigotmc spigot-api - 1.16.1-R0.1-SNAPSHOT + 1.16.5-R0.1-SNAPSHOT provided diff --git a/script/entries.txt b/script/entries.txt index 1dad6e13..3826ec61 100644 --- a/script/entries.txt +++ b/script/entries.txt @@ -1064,6 +1064,7 @@ item.minecraft.phantom_membrane item.minecraft.phantom_spawn_egg item.minecraft.pig_spawn_egg item.minecraft.piglin_banner_pattern.desc +item.minecraft.piglin_brute_spawn_egg item.minecraft.piglin_spawn_egg item.minecraft.pillager_spawn_egg item.minecraft.pink_dye diff --git a/src/main/java/de/epiceric/shopchest/ShopChest.java b/src/main/java/de/epiceric/shopchest/ShopChest.java index efa9a852..ec318027 100644 --- a/src/main/java/de/epiceric/shopchest/ShopChest.java +++ b/src/main/java/de/epiceric/shopchest/ShopChest.java @@ -187,6 +187,8 @@ public void onEnable() { case "v1_14_R1": case "v1_15_R1": case "v1_16_R1": + case "v1_16_R2": + case "v1_16_R3": break; default: debug("Server version not officially supported: " + Utils.getServerVersion() + "!"); @@ -256,10 +258,8 @@ public void onDisable() { shopCreationThreadPool.shutdown(); } - for (Shop shop : shopUtils.getShops()) { - shopUtils.removeShop(shop, false); - debug("Removed shop (#" + shop.getID() + ")"); - } + shopUtils.removeShops(); + debug("Removed shops"); if (database != null && database.isInitialized()) { if (database instanceof SQLite) { diff --git a/src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java b/src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java index a04de9e2..099e55d7 100644 --- a/src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java +++ b/src/main/java/de/epiceric/shopchest/external/SuperiorSkyblockShopIslandPermission.java @@ -4,6 +4,7 @@ import de.epiceric.shopchest.config.Config; import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI; +import com.bgsoftware.superiorskyblock.api.island.IslandFlag; import com.bgsoftware.superiorskyblock.api.island.IslandPrivilege; public class SuperiorSkyblockShopIslandPermission { @@ -13,6 +14,8 @@ public static void register(ShopChest plugin) { if(!Config.SuperiorSkyblockEnableIslandPrivilege) return; try { IslandPrivilege.register(name); + IslandFlag.register(name); + SuperiorSkyblockAPI.getSuperiorSkyblock().getMenus().updatePermission(IslandPrivilege.getByName(name)); plugin.debug("Registered SuperiorSkyblock shop Island Privilege"); diff --git a/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java b/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java index 266d8193..1c9b52e3 100644 --- a/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java +++ b/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java @@ -12,20 +12,44 @@ public class WorldGuardShopFlag { public static void register(final ShopChest plugin) { - WorldGuardWrapper wrapper = WorldGuardWrapper.getInstance(); - - Optional> createFlag = wrapper.registerFlag("create-shop", - WrappedState.class, Config.wgAllowCreateShopDefault ? WrappedState.ALLOW : WrappedState.DENY); - - Optional> useFlag = wrapper.registerFlag("use-shop", - WrappedState.class, Config.wgAllowUseShopDefault ? WrappedState.ALLOW : WrappedState.DENY); - - Optional> useAdminFlag = wrapper.registerFlag("use-admin-shop", - WrappedState.class, Config.wgAllowUseAdminShopDefault ? WrappedState.ALLOW : WrappedState.DENY); - - plugin.debug("Flag create-shop: " + String.valueOf(createFlag.isPresent())); - plugin.debug("Flag use-shop: " + String.valueOf(useFlag.isPresent())); - plugin.debug("Flag use-admin-shop: " + String.valueOf(useAdminFlag.isPresent())); + try { + WorldGuardWrapper wrapper = WorldGuardWrapper.getInstance(); + Optional> createFlag = null; + Optional> useFlag = null; + Optional> useAdminFlag = null; + + if(! wrapper.getFlag("create-shop", WrappedState.class).isPresent() ) { + createFlag = wrapper.registerFlag("create-shop", + WrappedState.class, Config.wgAllowCreateShopDefault ? WrappedState.ALLOW : WrappedState.DENY); + } + else { + createFlag = wrapper.getFlag("create-shop", WrappedState.class); + } + + if(! wrapper.getFlag("use-shop", WrappedState.class).isPresent() ) { + useFlag = wrapper.registerFlag("use-shop", + WrappedState.class, Config.wgAllowUseShopDefault ? WrappedState.ALLOW : WrappedState.DENY); + } + else { + useFlag = wrapper.getFlag("use-shop", WrappedState.class); + } + + if(! wrapper.getFlag("use-admin-shop", WrappedState.class).isPresent() ) { + useAdminFlag = wrapper.registerFlag("use-admin-shop", + WrappedState.class, Config.wgAllowUseAdminShopDefault ? WrappedState.ALLOW : WrappedState.DENY); + } + else { + useAdminFlag = wrapper.getFlag("use-admin-shop", WrappedState.class); + } + + + + plugin.debug("Flag create-shop: " + String.valueOf(createFlag.isPresent())); + plugin.debug("Flag use-shop: " + String.valueOf(useFlag.isPresent())); + plugin.debug("Flag use-admin-shop: " + String.valueOf(useAdminFlag.isPresent())); + }catch(Exception e) { + e.printStackTrace(); + } } } diff --git a/src/main/java/de/epiceric/shopchest/language/LanguageUtils.java b/src/main/java/de/epiceric/shopchest/language/LanguageUtils.java index 3885bc52..1d4d89ec 100644 --- a/src/main/java/de/epiceric/shopchest/language/LanguageUtils.java +++ b/src/main/java/de/epiceric/shopchest/language/LanguageUtils.java @@ -2059,6 +2059,12 @@ public static void load() { itemNames.add(new ItemName(Material.WEEPING_VINES_PLANT, langConfig.getString("block.minecraft.weeping_vines_plant", "Weeping Vines Plant"))); itemNames.add(new ItemName(Material.ZOGLIN_SPAWN_EGG, langConfig.getString("item.minecraft.zoglin_spawn_egg", "Zoglin Spawn Egg"))); itemNames.add(new ItemName(Material.ZOMBIFIED_PIGLIN_SPAWN_EGG, langConfig.getString("item.minecraft.zombified_piglin_spawn_egg", "Zombified Piglin Spawn Egg"))); + + if (Utils.getMajorVersion() > 16 || Utils.getRevision() >= 2) { + // Add 1.16.2 item names + itemNames.add(new ItemName(Material.PIGLIN_BRUTE_SPAWN_EGG, langConfig.getString("item.minecraft.piglin_brute_spawn_egg", "Piglin Brute Spawn Egg"))); + } + } else { // Add pre-1.16 item names that don't exist anymore itemNames.add(new ItemName(Material.valueOf("ZOMBIE_PIGMAN_SPAWN_EGG"), langConfig.getString("item.minecraft.zombie_pigman_spawn_egg", "Zombie Pigman Spawn Egg"))); diff --git a/src/main/java/de/epiceric/shopchest/nms/JsonBuilder.java b/src/main/java/de/epiceric/shopchest/nms/JsonBuilder.java index 1cfe7ae1..c0b93939 100644 --- a/src/main/java/de/epiceric/shopchest/nms/JsonBuilder.java +++ b/src/main/java/de/epiceric/shopchest/nms/JsonBuilder.java @@ -109,7 +109,8 @@ public PartArray toArray() { } } - private static final Pattern PART_PATTERN = Pattern.compile("(([§][a-fA-Fk-oK-OrR0-9])+)([^§]*)"); + private static final Pattern PART_PATTERN = Pattern.compile("(((?:[a-fA-Fk-oK-OrR0-9]|#[a-fA-F0-9]{6}))+)([^]*)"); + private static final Pattern HEX_PATTERN = Pattern.compile("([a-fA-F0-9]){6}"); private Part rootPart; private ShopChest plugin; @@ -145,6 +146,12 @@ public JsonBuilder(ShopChest plugin) { } public static Part parse(String text) { + Matcher hexMatcher = HEX_PATTERN.matcher(text); + while (hexMatcher.find()) { + String hexCode = hexMatcher.group(0).replace("", ""); + text = text.replace(hexMatcher.group(0), "#" + hexCode); + } + Matcher matcher = PART_PATTERN.matcher(text); if (!matcher.find()) { @@ -171,7 +178,7 @@ public static Part parse(String text) { PartMap part = new PartMap(); part.setValue("text", new Part(value)); - String[] formats = format.split("§"); + String[] formats = format.split(""); for (String f : formats) { switch (f.toLowerCase()) { case "": @@ -200,7 +207,11 @@ public static Part parse(String text) { part.removeValue("color"); break; default: - part.setValue("color", new Part(ChatColor.getByChar(f).name().toLowerCase())); + if (f.startsWith("#")) { + part.setValue("color", new Part(f)); + } else { + part.setValue("color", new Part(ChatColor.getByChar(f).name().toLowerCase())); + } } } @@ -241,4 +252,4 @@ public void sendJson(Player p) { } } -} +} \ No newline at end of file diff --git a/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java b/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java index 46937e03..4a7934ba 100644 --- a/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java +++ b/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java @@ -132,6 +132,20 @@ public void addShop(Shop shop, boolean addToDatabase) { addShop(shop, addToDatabase, null); } + /** + * Removes (i.e. unloads) all currently loaded shops + */ + public void removeShops() { + shopLocation.forEach((location, shop) -> { + if (!shop.isCreated()) return; + + plugin.debug("Removing shop " + shop.getID()); + shop.removeItem(); + shop.removeHologram(); + }); + shopLocation.clear(); + } + /** Remove a shop. May not work properly if double chest doesn't exist! * @param shop Shop to remove * @param removeFromDatabase Whether the shop should also be removed from the database @@ -507,4 +521,4 @@ private void updateNearestShops(Player p) { } } } -} +} \ No newline at end of file diff --git a/src/main/java/de/epiceric/shopchest/utils/Utils.java b/src/main/java/de/epiceric/shopchest/utils/Utils.java index 671f9667..62353141 100644 --- a/src/main/java/de/epiceric/shopchest/utils/Utils.java +++ b/src/main/java/de/epiceric/shopchest/utils/Utils.java @@ -412,6 +412,8 @@ public static Object createDataWatcher(String customName, Object nmsItemStack) { dataWatcherObjectFieldNames = new String[] {"T", "AIR_TICKS", "aA", "az", "aB", "aC", "ITEM", "b"}; } else if ("v1_16_R1".equals(version)) { dataWatcherObjectFieldNames = new String[] {"T", "AIR_TICKS", "ay", "ax", "az", "aA", "ITEM", "b"}; + } else if ("v1_16_R2".equals(version) || "v1_16_R3".equals(version)) { + dataWatcherObjectFieldNames = new String[] {"S", "AIR_TICKS", "ar", "aq", "as", "at", "ITEM", "b"}; } else { return null; } @@ -647,4 +649,4 @@ public static ItemStack decode(String string) { } -} +} \ No newline at end of file diff --git a/src/main/resources/lang/de_DE.lang b/src/main/resources/lang/de_DE.lang index 2e52ff39..423b601f 100644 --- a/src/main/resources/lang/de_DE.lang +++ b/src/main/resources/lang/de_DE.lang @@ -1,14 +1,14 @@ message.shop-created=&6Dir wurden &c%CREATION-PRICE% &6abgenommen, um diesen Shop zu erstellen. message.admin-shop-created=&6Dir wurden &c%CREATION-PRICE% &6abgenommen, um diesen Admin Shop zu erstellen. message.chest-already-shop=&cTruhe ist bereits ein Shop. -message.chest-blocked=&cÜber der Truhe ist kein Platz. -message.double-chest-blocked=&cÜber der Truhe ist kein Platz. +message.chest-blocked=&cÜber der Truhe ist kein Platz. +message.double-chest-blocked=&cÜber der Truhe ist kein Platz. message.shop-removed=&6Shop entfernt. message.shop-removed-refund=&6Shop entfernt. Dir wurden &c%CREATION-PRICE%&6 erstattet. message.all-shops-removed=&6Alle (&c%AMOUNT%&6) Shops von &c%VENDOR%&6 wurden entfernt. message.chest-no-shop=&cTruhe ist kein Shop. message.shop-create-not-enough-money=&cNicht genug Geld. Du brauchst &6%CREATION-PRICE% &cum einen Shop zu erstellen. -message.shopInfo.vendor=&6Verkäufer: &e%VENDOR% +message.shopInfo.vendor=&6Verkäufer: &e%VENDOR% message.shopInfo.product=&6Produkt: &e%AMOUNT% x %ITEMNAME% message.shopInfo.stock=&6Auf Lager: &e%STOCK% message.shopInfo.chest-space=&6Platz in Truhe: &e%CHEST-SPACE% @@ -17,56 +17,56 @@ message.shopInfo.disabled=&7Deaktiviert message.shopInfo.is-normal=&6Typ: &eNormal message.shopInfo.is-admin=&6Typ: &eAdmin message.buy-and-sell-disabled=&cDu kannst keinen Shop ohne Kauf- und Verkaufspreis erstellen. -message.buy-success=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE%&a von &6%VENDOR% &agekauft. -message.buy-success-admin=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE% &agekauft. -message.sell-success=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE%&a an &6%VENDOR% &averkauft. -message.sell-success-admin=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE% &averkauft. -message.someone-bought=&6%PLAYER% &ahat &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE%&a von deinem Shop gekauft. -message.someone-sold=&6%PLAYER% &ahat &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE%&a an deinen Shop verkauft. -message.revenue-while-offline=&6Während du offline warst, haben deine Shops einen Umsatz von &c%REVENUE%&6 gemacht. +message.buy-success=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE%&a von &6%VENDOR% &agekauft. +message.buy-success-admin=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE% &agekauft. +message.sell-success=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE%&a an &6%VENDOR% &averkauft. +message.sell-success-admin=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE% &averkauft. +message.someone-bought=&6%PLAYER% &ahat &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE%&a von deinem Shop gekauft. +message.someone-sold=&6%PLAYER% &ahat &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE%&a an deinen Shop verkauft. +message.revenue-while-offline=&6Während du offline warst, haben deine Shops einen Umsatz von &c%REVENUE%&6 gemacht. message.not-enough-inventory-space=&cNicht genug Platz im Inventar. message.chest-not-enough-inventory-space=&cShop ist voll. message.not-enough-money=&cNicht genug Geld. message.not-enough-items=&cNicht genug Items. -message.vendor-not-enough-money=&cVerkäufer hat nicht genug Geld. +message.vendor-not-enough-money=&cVerkäufer hat nicht genug Geld. message.out-of-stock=&cShop ausverkauft. message.vendor-out-of-stock=&cDein Shop, der &6%AMOUNT% x %ITEMNAME% &cverkauft, ist ausverkauft. message.error-occurred=&cEin Fehler ist aufgetreten: %ERROR% -message.amount-and-price-not-number=&cAnzahl und Preise müssen Zahlen sein. -message.amount-is-zero=&cAnzahl muss größer als 0 sein. -message.prices-contain-decimals=&cPreise dürfen keine Dezimalen enthalten. +message.amount-and-price-not-number=&cAnzahl und Preise müssen Zahlen sein. +message.amount-is-zero=&cAnzahl muss größer als 0 sein. +message.prices-contain-decimals=&cPreise dürfen keine Dezimalen enthalten. message.no-item-in-hand=&cKein Item in der Hand. message.click-chest-to-create-shop=&aKlicke innerhalb von 15 Sekunden auf eine Truhe, um einen Shop zu erstellen. message.click-chest-to-remove-shop=&aKlicke innerhalb von 15 Sekunden auf einen Shop, um ihn zu entfernen. -message.click-chest-for-info=&aKlicke innerhalb von 15 Sekunden auf einen Shop, um Informationen über ihn zu bekommen. -message.click-chest-to-open-shop=&Klicke innerhalb von 15 Sekunden auf einen Shop, um ihn zu öffnen. -message.click-to-confirm=&aKlicke noch einmal zum Bestätigen. -message.opened-shop=&aDu hast &6%VENDOR%&as Shop geöffnet. -message.cannot-break-shop=&cDu kannst einen Shop nicht zerstören. +message.click-chest-for-info=&aKlicke innerhalb von 15 Sekunden auf einen Shop, um Informationen über ihn zu bekommen. +message.click-chest-to-open-shop=&Klicke innerhalb von 15 Sekunden auf einen Shop, um ihn zu öffnen. +message.click-to-confirm=&aKlicke noch einmal zum Bestätigen. +message.opened-shop=&aDu hast &6%VENDOR%&as Shop geöffnet. +message.cannot-break-shop=&cDu kannst einen Shop nicht zerstören. message.cannot-sell-broken-item=&cDu kannst kein kaputtes Artikel verkaufen. -message.buy-price-too-low=&cDer Kaufpreis muss höher sein als %MIN-PRICE%. -message.sell-price-too-low=&cDer Verkaufspreis muss höher sein als %MIN-PRICE%. +message.buy-price-too-low=&cDer Kaufpreis muss höher sein als %MIN-PRICE%. +message.sell-price-too-low=&cDer Verkaufspreis muss höher sein als %MIN-PRICE%. message.buy-price-too-high=&cDer Kaufpreis muss geringer sein als %MAX-PRICE%. message.sell-price-too-high=&cDer Verkaufspreis muss geringer sein als %MAX-PRICE%. -message.buying-disabled=&cKaufen ist an diesem Shop nicht möglich. -message.selling-disabled=&cVerkaufen ist an diesem Shop nicht möglich. +message.buying-disabled=&cKaufen ist an diesem Shop nicht möglich. +message.selling-disabled=&cVerkaufen ist an diesem Shop nicht möglich. message.reloaded-shops=&a%AMOUNT% Shop/s wurden erfolgreich neu geladen. message.shop-limit-reached=&cDu hast dein Limit von &6%LIMIT% &cShop/s erreicht. message.occupied-shop-slots=&6Du hast &c%AMOUNT%/%LIMIT% &6Shop Slot/s benutzt. -message.cannot-sell-item=&cDu kannst für diesen Artikel keinen Shop erstellen. +message.cannot-sell-item=&cDu kannst für diesen Artikel keinen Shop erstellen. message.use-in-creative=&cDu kannst im Kreativ-Modus keine Shops benutzen. -message.select-item=&aÖffne dein Inventar und lass ein Item fallen, um es auszuwählen. -message.item-selected=&aItem wurde ausgewählt: &6%ITEMNAME% +message.select-item=&aÖffne dein Inventar und lass ein Item fallen, um es auszuwählen. +message.item-selected=&aItem wurde ausgewählt: &6%ITEMNAME% message.creation-cancelled=&cShoperstellung wurde abgebrochen. -message.update.update-available=&6&lVersion &c&l%VERSION% &6&lvon &c&lShopChest &6&list verfügbar. +message.update.update-available=&6&lVersion &c&l%VERSION% &6&lvon &c&lShopChest &6&list verfügbar. message.update.click-to-download=Klicke hier zum Herunterladen -message.update.no-update=&6&lKeine neue Aktualisierung verfügbar. +message.update.no-update=&6&lKeine neue Aktualisierung verfügbar. message.update.checking=&6&lSuche nach Aktualisierungen... message.update.error=&c&lFehler beim Suchen nach Aktualisierungen. message.noPermission.create=&cDu hast keine Berechtigung einen Shop zu erstellen. message.noPermission.create-admin=&cDu hast keine Berechtigung einen Admin-Shop zu erstellen. message.noPermission.create-protected=&cDu hast keine Berechtigung hier einen Shop zu erstellen. -message.noPermission.open-others=&cDu hast keine Berechtigung diesen Shop zu öffnen. +message.noPermission.open-others=&cDu hast keine Berechtigung diesen Shop zu öffnen. message.noPermission.buy=&cDu hast keine Berechtigung etwas zu kaufen. message.noPermission.sell=&cDu hast keine Berechtigung etwas zu verkaufen. message.noPermission.buy-here=&cDu hast keine Berechtigung hier etwas zu kaufen. @@ -75,7 +75,7 @@ message.noPermission.remove-others=&cDu hast keine Berechtigung diesen Shop zu e message.noPermission.remove-admin=&cDu hast keine Berechtigung einen Admin Shop zu entfernen. message.noPermission.reload=&cDu hast keine Berechtigung die Shops neu zu laden. message.noPermission.update=&cDu hast keine Berechtigung nach Aktualisierungen zu suchen. -message.noPermission.config=&cDu hast keine Berechtigung Konfigurationswerte zu verändern. +message.noPermission.config=&cDu hast keine Berechtigung Konfigurationswerte zu verändern. message.noPermission.extend-others=&cDu hast keine Berechtigung diesen Shop zu erweitern. message.noPermission.extend-protected=&cDu hast keine Berechtigung diesen Shop nach hier zu erweitern. message.commandDescription.header=&6==== &c/%COMMAND% &6Hilfe @@ -83,19 +83,19 @@ message.commandDescription.footer=&6==== Ende message.commandDescription.create=&a/%COMMAND% create - Erstelle einen Shop. message.commandDescription.create-admin=&a/%COMMAND% create [admin] - Erstelle einen Shop. message.commandDescription.remove=&a/%COMMAND% remove - Entferne einen Shop. -message.commandDescription.info=&a/%COMMAND% info - Rufe Informationen über den Shop ab. +message.commandDescription.info=&a/%COMMAND% info - Rufe Informationen über den Shop ab. message.commandDescription.removeall=&a/%COMMAND% removeall - Entferne alle Shops eines Spielers. message.commandDescription.reload=&a/%COMMAND% reload - Lade die Shops neu. message.commandDescription.update=&a/%COMMAND% update - Suche nach Aktualisierungen. message.commandDescription.limits=&a/%COMMAND% limits - Betrachte die Shop Limits. -message.commandDescription.open=&a/%COMMAND% open - Öffne einen Shop. -message.commandDescription.config=&a/%COMMAND% config - Verändere Konfigurationswerte. +message.commandDescription.open=&a/%COMMAND% open - Öffne einen Shop. +message.commandDescription.config=&a/%COMMAND% config - Verändere Konfigurationswerte. message.config.set=&6Eigenschaft &a%PROPERTY% &6wurde auf &a%VALUE% &6gesetzt. -message.config.added=&6Wert &a%VALUE% &6wurde zu &a%PROPERTY% &6hinzugefügt. +message.config.added=&6Wert &a%VALUE% &6wurde zu &a%PROPERTY% &6hinzugefügt. message.config.removed=&6Wert &a%VALUE% &6wurde aus &a%PROPERTY% &6entfernt. block.minecraft.acacia_button=Akazienholzknopf -block.minecraft.acacia_door=Akazienholztür +block.minecraft.acacia_door=Akazienholztür block.minecraft.acacia_fence=Akazienholzzaun block.minecraft.acacia_fence_gate=Akazienholzzauntor block.minecraft.acacia_leaves=Akazienlaub @@ -106,7 +106,7 @@ block.minecraft.acacia_sapling=Akaziensetzling block.minecraft.acacia_sign=Akazienholzschild block.minecraft.acacia_slab=Akazienholzstufe block.minecraft.acacia_stairs=Akazienholztreppe -block.minecraft.acacia_trapdoor=Akazienholzfalltür +block.minecraft.acacia_trapdoor=Akazienholzfalltür block.minecraft.acacia_wall_sign=Akazienholzwandschild block.minecraft.acacia_wood=Akazienholz block.minecraft.activator_rail=Aktivierungsschiene @@ -119,10 +119,10 @@ block.minecraft.andesite_stairs=Andesittreppe block.minecraft.andesite_wall=Andesitmauer block.minecraft.anvil=Amboss block.minecraft.attached_melon_stem=Melonenranke -block.minecraft.attached_pumpkin_stem=Kürbisranke +block.minecraft.attached_pumpkin_stem=Kürbisranke block.minecraft.azure_bluet=Porzellansternchen block.minecraft.bamboo=Bambus -block.minecraft.bamboo_sapling=Bambussprössling +block.minecraft.bamboo_sapling=Bambussprössling block.minecraft.barrel=Fass block.minecraft.barrier=Barriere block.minecraft.basalt=Basalt @@ -133,7 +133,7 @@ block.minecraft.beehive=Bienenstock block.minecraft.beetroots=Rote Bete block.minecraft.bell=Glocke block.minecraft.birch_button=Birkenholzknopf -block.minecraft.birch_door=Birkenholztür +block.minecraft.birch_door=Birkenholztür block.minecraft.birch_fence=Birkenholzzaun block.minecraft.birch_fence_gate=Birkenholzzauntor block.minecraft.birch_leaves=Birkenlaub @@ -144,7 +144,7 @@ block.minecraft.birch_sapling=Birkensetzling block.minecraft.birch_sign=Birkenholzschild block.minecraft.birch_slab=Birkenholzstufe block.minecraft.birch_stairs=Birkenholztreppe -block.minecraft.birch_trapdoor=Birkenholzfalltür +block.minecraft.birch_trapdoor=Birkenholzfalltür block.minecraft.birch_wall_sign=Birkenholzwandschild block.minecraft.birch_wood=Birkenholz block.minecraft.black_bed=Schwarzes Bett @@ -175,10 +175,10 @@ block.minecraft.blue_stained_glass_pane=Blaue Glasscheibe block.minecraft.blue_terracotta=Blaue Keramik block.minecraft.blue_wool=Blaue Wolle block.minecraft.bone_block=Knochenblock -block.minecraft.bookshelf=Bücherregal +block.minecraft.bookshelf=Bücherregal block.minecraft.brain_coral=Hirnkoralle block.minecraft.brain_coral_block=Hirnkorallenblock -block.minecraft.brain_coral_fan=Hirnkorallenfächer +block.minecraft.brain_coral_fan=Hirnkorallenfächer block.minecraft.brewing_stand=Braustand block.minecraft.brick_slab=Ziegelstufe block.minecraft.brick_stairs=Ziegeltreppe @@ -196,29 +196,29 @@ block.minecraft.brown_stained_glass=Braunes Glas block.minecraft.brown_stained_glass_pane=Braune Glasscheibe block.minecraft.brown_terracotta=Braune Keramik block.minecraft.brown_wool=Braune Wolle -block.minecraft.bubble_column=Blasensäule +block.minecraft.bubble_column=Blasensäule block.minecraft.bubble_coral=Blasenkoralle block.minecraft.bubble_coral_block=Blasenkorallenblock -block.minecraft.bubble_coral_fan=Blasenkorallenfächer +block.minecraft.bubble_coral_fan=Blasenkorallenfächer block.minecraft.cactus=Kaktus block.minecraft.cake=Kuchen block.minecraft.campfire=Lagerfeuer block.minecraft.carrots=Karotten block.minecraft.cartography_table=Kartentisch -block.minecraft.carved_pumpkin=Geschnitzter Kürbis +block.minecraft.carved_pumpkin=Geschnitzter Kürbis block.minecraft.cauldron=Kessel -block.minecraft.cave_air=Höhlenluft +block.minecraft.cave_air=Höhlenluft block.minecraft.chain=Kette block.minecraft.chain_command_block=Ketten-Befehlsblock block.minecraft.chest=Truhe block.minecraft.chipped_anvil=Angeschlagener Amboss -block.minecraft.chiseled_nether_bricks=Gemeißelte Netherziegel -block.minecraft.chiseled_polished_blackstone=Gemeißelter polierter Schwarzstein -block.minecraft.chiseled_quartz_block=Gemeißelter Quarzblock -block.minecraft.chiseled_red_sandstone=Gemeißelter roter Sandstein -block.minecraft.chiseled_sandstone=Gemeißelter Sandstein -block.minecraft.chiseled_stone_bricks=Gemeißelte Steinziegel -block.minecraft.chorus_flower=Chorusblüte +block.minecraft.chiseled_nether_bricks=Gemeißelte Netherziegel +block.minecraft.chiseled_polished_blackstone=Gemeißelter polierter Schwarzstein +block.minecraft.chiseled_quartz_block=Gemeißelter Quarzblock +block.minecraft.chiseled_red_sandstone=Gemeißelter roter Sandstein +block.minecraft.chiseled_sandstone=Gemeißelter Sandstein +block.minecraft.chiseled_stone_bricks=Gemeißelte Steinziegel +block.minecraft.chorus_flower=Chorusblüte block.minecraft.chorus_plant=Choruspflanze block.minecraft.clay=Ton block.minecraft.coal_block=Kohleblock @@ -242,7 +242,7 @@ block.minecraft.crafting_table=Werkbank block.minecraft.creeper_head=Creeperkopf block.minecraft.creeper_wall_head=Creeper-Wandkopf block.minecraft.crimson_button=Karmesinknopf -block.minecraft.crimson_door=Karmesintür +block.minecraft.crimson_door=Karmesintür block.minecraft.crimson_fence=Karmesinzaun block.minecraft.crimson_fence_gate=Karmesinzauntor block.minecraft.crimson_fungus=Karmesinpilz @@ -255,27 +255,27 @@ block.minecraft.crimson_sign=Karmesinschild block.minecraft.crimson_slab=Karmesinstufe block.minecraft.crimson_stairs=Karmesintreppe block.minecraft.crimson_stem=Karmesinstiel -block.minecraft.crimson_trapdoor=Karmesinfalltür +block.minecraft.crimson_trapdoor=Karmesinfalltür block.minecraft.crimson_wall_sign=Karmesinwandschild block.minecraft.crying_obsidian=Weinender Obsidian block.minecraft.cut_red_sandstone=Geschnittener roter Sandstein block.minecraft.cut_red_sandstone_slab=Geschnittene rote Sandsteinstufe block.minecraft.cut_sandstone=Geschnittener Sandstein block.minecraft.cut_sandstone_slab=Geschnittene Sandsteinstufe -block.minecraft.cyan_bed=Türkises Bett -block.minecraft.cyan_carpet=Türkiser Teppich -block.minecraft.cyan_concrete=Türkiser Beton -block.minecraft.cyan_concrete_powder=Türkiser Trockenbeton -block.minecraft.cyan_glazed_terracotta=Türkise glasierte Keramik -block.minecraft.cyan_shulker_box=Türkise Shulkerkiste -block.minecraft.cyan_stained_glass=Türkises Glas -block.minecraft.cyan_stained_glass_pane=Türkise Glasscheibe -block.minecraft.cyan_terracotta=Türkise Keramik -block.minecraft.cyan_wool=Türkise Wolle -block.minecraft.damaged_anvil=Beschädigter Amboss -block.minecraft.dandelion=Löwenzahn +block.minecraft.cyan_bed=Türkises Bett +block.minecraft.cyan_carpet=Türkiser Teppich +block.minecraft.cyan_concrete=Türkiser Beton +block.minecraft.cyan_concrete_powder=Türkiser Trockenbeton +block.minecraft.cyan_glazed_terracotta=Türkise glasierte Keramik +block.minecraft.cyan_shulker_box=Türkise Shulkerkiste +block.minecraft.cyan_stained_glass=Türkises Glas +block.minecraft.cyan_stained_glass_pane=Türkise Glasscheibe +block.minecraft.cyan_terracotta=Türkise Keramik +block.minecraft.cyan_wool=Türkise Wolle +block.minecraft.damaged_anvil=Beschädigter Amboss +block.minecraft.dandelion=Löwenzahn block.minecraft.dark_oak_button=Schwarzeichenholzknopf -block.minecraft.dark_oak_door=Schwarzeichenholztür +block.minecraft.dark_oak_door=Schwarzeichenholztür block.minecraft.dark_oak_fence=Schwarzeichenholzzaun block.minecraft.dark_oak_fence_gate=Schwarzeichenholzzauntor block.minecraft.dark_oak_leaves=Schwarzeichenlaub @@ -286,7 +286,7 @@ block.minecraft.dark_oak_sapling=Schwarzeichensetzling block.minecraft.dark_oak_sign=Schwarzeichenholzschild block.minecraft.dark_oak_slab=Schwarzeichenholzstufe block.minecraft.dark_oak_stairs=Schwarzeichenholztreppe -block.minecraft.dark_oak_trapdoor=Schwarzeichenholzfalltür +block.minecraft.dark_oak_trapdoor=Schwarzeichenholzfalltür block.minecraft.dark_oak_wall_sign=Schwarzeichenholzwandschild block.minecraft.dark_oak_wood=Schwarzeichenholz block.minecraft.dark_prismarine=Dunkler Prismarin @@ -336,10 +336,10 @@ block.minecraft.fern=Farn block.minecraft.fire=Feuer block.minecraft.fire_coral=Feuerkoralle block.minecraft.fire_coral_block=Feuerkorallenblock -block.minecraft.fire_coral_fan=Feuerkorallenfächer +block.minecraft.fire_coral_fan=Feuerkorallenfächer block.minecraft.fletching_table=Bognertisch block.minecraft.flower_pot=Blumentopf -block.minecraft.frosted_ice=Brüchiges Eis +block.minecraft.frosted_ice=Brüchiges Eis block.minecraft.furnace=Ofen block.minecraft.gilded_blackstone=Golddurchzogener Schwarzstein block.minecraft.glass=Glas @@ -365,27 +365,27 @@ block.minecraft.gray_stained_glass=Graues Glas block.minecraft.gray_stained_glass_pane=Graue Glasscheibe block.minecraft.gray_terracotta=Graue Keramik block.minecraft.gray_wool=Graue Wolle -block.minecraft.green_bed=Grünes Bett -block.minecraft.green_carpet=Grüner Teppich -block.minecraft.green_concrete=Grüner Beton -block.minecraft.green_concrete_powder=Grüner Trockenbeton -block.minecraft.green_glazed_terracotta=Grüne glasierte Keramik -block.minecraft.green_shulker_box=Grüne Shulkerkiste -block.minecraft.green_stained_glass=Grünes Glas -block.minecraft.green_stained_glass_pane=Grüne Glasscheibe -block.minecraft.green_terracotta=Grüne Keramik -block.minecraft.green_wool=Grüne Wolle +block.minecraft.green_bed=Grünes Bett +block.minecraft.green_carpet=Grüner Teppich +block.minecraft.green_concrete=Grüner Beton +block.minecraft.green_concrete_powder=Grüner Trockenbeton +block.minecraft.green_glazed_terracotta=Grüne glasierte Keramik +block.minecraft.green_shulker_box=Grüne Shulkerkiste +block.minecraft.green_stained_glass=Grünes Glas +block.minecraft.green_stained_glass_pane=Grüne Glasscheibe +block.minecraft.green_terracotta=Grüne Keramik +block.minecraft.green_wool=Grüne Wolle block.minecraft.grindstone=Schleifstein block.minecraft.hay_block=Strohballen -block.minecraft.heavy_weighted_pressure_plate=Grobwägeplatte +block.minecraft.heavy_weighted_pressure_plate=Grobwägeplatte block.minecraft.honey_block=Honigblock block.minecraft.honeycomb_block=Honigwabenblock block.minecraft.hopper=Trichter block.minecraft.horn_coral=Geweihkoralle block.minecraft.horn_coral_block=Geweihkorallenblock -block.minecraft.horn_coral_fan=Geweihkorallenfächer +block.minecraft.horn_coral_fan=Geweihkorallenfächer block.minecraft.ice=Eis -block.minecraft.infested_chiseled_stone_bricks=Befallene gemeißelte Steinziegel +block.minecraft.infested_chiseled_stone_bricks=Befallene gemeißelte Steinziegel block.minecraft.infested_cobblestone=Befallener Bruchstein block.minecraft.infested_cracked_stone_bricks=Befallene rissige Steinziegel block.minecraft.infested_mossy_stone_bricks=Befallene bemooste Steinziegel @@ -393,14 +393,14 @@ block.minecraft.infested_stone=Befallener Stein block.minecraft.infested_stone_bricks=Befallene Steinziegel block.minecraft.iron_bars=Eisengitter block.minecraft.iron_block=Eisenblock -block.minecraft.iron_door=Eisentür +block.minecraft.iron_door=Eisentür block.minecraft.iron_ore=Eisenerz -block.minecraft.iron_trapdoor=Eisenfalltür -block.minecraft.jack_o_lantern=Kürbislaterne +block.minecraft.iron_trapdoor=Eisenfalltür +block.minecraft.jack_o_lantern=Kürbislaterne block.minecraft.jigsaw=Verbundblock block.minecraft.jukebox=Plattenspieler block.minecraft.jungle_button=Tropenholzknopf -block.minecraft.jungle_door=Tropenholztür +block.minecraft.jungle_door=Tropenholztür block.minecraft.jungle_fence=Tropenholzzaun block.minecraft.jungle_fence_gate=Tropenholzzauntor block.minecraft.jungle_leaves=Tropenbaumlaub @@ -411,16 +411,16 @@ block.minecraft.jungle_sapling=Tropenbaumsetzling block.minecraft.jungle_sign=Tropenholzschild block.minecraft.jungle_slab=Tropenholzstufe block.minecraft.jungle_stairs=Tropenholztreppe -block.minecraft.jungle_trapdoor=Tropenholzfalltür +block.minecraft.jungle_trapdoor=Tropenholzfalltür block.minecraft.jungle_wall_sign=Tropenholzwandschild block.minecraft.jungle_wood=Tropenholz block.minecraft.kelp=Seetang -block.minecraft.kelp_plant=Seetangstängel +block.minecraft.kelp_plant=Seetangstängel block.minecraft.ladder=Leiter block.minecraft.lantern=Laterne block.minecraft.lapis_block=Lapislazuliblock block.minecraft.lapis_ore=Lapislazulierz -block.minecraft.large_fern=Großer Farn +block.minecraft.large_fern=Großer Farn block.minecraft.lava=Lava block.minecraft.lectern=Lesepult block.minecraft.lever=Hebel @@ -444,20 +444,20 @@ block.minecraft.light_gray_stained_glass=Hellgraues Glas block.minecraft.light_gray_stained_glass_pane=Hellgraue Glasscheibe block.minecraft.light_gray_terracotta=Hellgraue Keramik block.minecraft.light_gray_wool=Hellgraue Wolle -block.minecraft.light_weighted_pressure_plate=Feinwägeplatte +block.minecraft.light_weighted_pressure_plate=Feinwägeplatte block.minecraft.lilac=Flieder -block.minecraft.lily_of_the_valley=Maiglöckchen +block.minecraft.lily_of_the_valley=Maiglöckchen block.minecraft.lily_pad=Seerosenblatt -block.minecraft.lime_bed=Hellgrünes Bett -block.minecraft.lime_carpet=Hellgrüner Teppich -block.minecraft.lime_concrete=Hellgrüner Beton -block.minecraft.lime_concrete_powder=Hellgrüner Trockenbeton -block.minecraft.lime_glazed_terracotta=Hellgrüne glasierte Keramik -block.minecraft.lime_shulker_box=Hellgrüne Shulkerkiste -block.minecraft.lime_stained_glass=Hellgrünes Glas -block.minecraft.lime_stained_glass_pane=Hellgrüne Glasscheibe -block.minecraft.lime_terracotta=Hellgrüne Keramik -block.minecraft.lime_wool=Hellgrüne Wolle +block.minecraft.lime_bed=Hellgrünes Bett +block.minecraft.lime_carpet=Hellgrüner Teppich +block.minecraft.lime_concrete=Hellgrüner Beton +block.minecraft.lime_concrete_powder=Hellgrüner Trockenbeton +block.minecraft.lime_glazed_terracotta=Hellgrüne glasierte Keramik +block.minecraft.lime_shulker_box=Hellgrüne Shulkerkiste +block.minecraft.lime_stained_glass=Hellgrünes Glas +block.minecraft.lime_stained_glass_pane=Hellgrüne Glasscheibe +block.minecraft.lime_terracotta=Hellgrüne Keramik +block.minecraft.lime_wool=Hellgrüne Wolle block.minecraft.lodestone=Leitstein block.minecraft.loom=Webstuhl block.minecraft.magenta_bed=Magenta Bett @@ -499,7 +499,7 @@ block.minecraft.netherite_block=Netheritblock block.minecraft.netherrack=Netherrack block.minecraft.note_block=Notenblock block.minecraft.oak_button=Eichenholzknopf -block.minecraft.oak_door=Eichenholztür +block.minecraft.oak_door=Eichenholztür block.minecraft.oak_fence=Eichenholzzaun block.minecraft.oak_fence_gate=Eichenholzzauntor block.minecraft.oak_leaves=Eichenlaub @@ -510,7 +510,7 @@ block.minecraft.oak_sapling=Eichensetzling block.minecraft.oak_sign=Eichenholzschild block.minecraft.oak_slab=Eichenholzstufe block.minecraft.oak_stairs=Eichenholztreppe -block.minecraft.oak_trapdoor=Eichenholzfalltür +block.minecraft.oak_trapdoor=Eichenholzfalltür block.minecraft.oak_wall_sign=Eichenholzwandschild block.minecraft.oak_wood=Eichenholz block.minecraft.observer=Beobachter @@ -579,12 +579,12 @@ block.minecraft.potted_cactus=Eingetopfter Kaktus block.minecraft.potted_cornflower=Eingetopfte Kornblume block.minecraft.potted_crimson_fungus=Eingetopfter Karmesinpilz block.minecraft.potted_crimson_roots=Eingetopfte Karmesinwurzeln -block.minecraft.potted_dandelion=Eingetopfter Löwenzahn +block.minecraft.potted_dandelion=Eingetopfter Löwenzahn block.minecraft.potted_dark_oak_sapling=Eingetopfter Schwarzeichensetzling block.minecraft.potted_dead_bush=Eingetopfter toter Busch block.minecraft.potted_fern=Eingetopfter Farn block.minecraft.potted_jungle_sapling=Eingetopfter Tropenbaumsetzling -block.minecraft.potted_lily_of_the_valley=Eingetopftes Maiglöckchen +block.minecraft.potted_lily_of_the_valley=Eingetopftes Maiglöckchen block.minecraft.potted_oak_sapling=Eingetopfter Eichensetzling block.minecraft.potted_orange_tulip=Eingetopfte orange Tulpe block.minecraft.potted_oxeye_daisy=Eingetopfte Margerite @@ -595,7 +595,7 @@ block.minecraft.potted_red_tulip=Eingetopfte rote Tulpe block.minecraft.potted_spruce_sapling=Eingetopfter Fichtensetzling block.minecraft.potted_warped_fungus=Eingetopfter Wirrpilz block.minecraft.potted_warped_roots=Eingetopfte Wirrwurzeln -block.minecraft.potted_white_tulip=Eingetopfte weiße Tulpe +block.minecraft.potted_white_tulip=Eingetopfte weiße Tulpe block.minecraft.potted_wither_rose=Eingetopfte Witherrose block.minecraft.powered_rail=Antriebsschiene block.minecraft.prismarine=Prismarin @@ -605,8 +605,8 @@ block.minecraft.prismarine_bricks=Prismarinziegel block.minecraft.prismarine_slab=Prismarinstufe block.minecraft.prismarine_stairs=Prismarintreppe block.minecraft.prismarine_wall=Prismarinmauer -block.minecraft.pumpkin=Kürbis -block.minecraft.pumpkin_stem=Kürbispflanze +block.minecraft.pumpkin=Kürbis +block.minecraft.pumpkin_stem=Kürbispflanze block.minecraft.purple_bed=Violettes Bett block.minecraft.purple_carpet=Violetter Teppich block.minecraft.purple_concrete=Violetter Beton @@ -618,12 +618,12 @@ block.minecraft.purple_stained_glass_pane=Violette Glasscheibe block.minecraft.purple_terracotta=Violette Keramik block.minecraft.purple_wool=Violette Wolle block.minecraft.purpur_block=Purpurblock -block.minecraft.purpur_pillar=Purpursäule +block.minecraft.purpur_pillar=Purpursäule block.minecraft.purpur_slab=Purpurstufe block.minecraft.purpur_stairs=Purpurtreppe block.minecraft.quartz_block=Quarzblock block.minecraft.quartz_bricks=Quarzziegel -block.minecraft.quartz_pillar=Quarzsäule +block.minecraft.quartz_pillar=Quarzsäule block.minecraft.quartz_slab=Quarzstufe block.minecraft.quartz_stairs=Quarztreppe block.minecraft.rail=Schiene @@ -655,7 +655,7 @@ block.minecraft.redstone_ore=Redstone-Erz block.minecraft.redstone_torch=Redstone-Fackel block.minecraft.redstone_wall_torch=Redstone-Wandfackel block.minecraft.redstone_wire=Redstone-Leitung -block.minecraft.repeater=Redstone-Verstärker +block.minecraft.repeater=Redstone-Verstärker block.minecraft.repeating_command_block=Wiederhol-Befehlsblock block.minecraft.respawn_anchor=Seelenanker block.minecraft.rose_bush=Rosenstrauch @@ -664,17 +664,17 @@ block.minecraft.sandstone=Sandstein block.minecraft.sandstone_slab=Sandsteinstufe block.minecraft.sandstone_stairs=Sandsteintreppe block.minecraft.sandstone_wall=Sandsteinmauer -block.minecraft.scaffolding=Gerüst +block.minecraft.scaffolding=Gerüst block.minecraft.sea_lantern=Seelaterne block.minecraft.sea_pickle=Meeresgurke block.minecraft.seagrass=Seegras block.minecraft.shroomlight=Pilzlicht block.minecraft.shulker_box=Shulkerkiste -block.minecraft.skeleton_skull=Skelettschädel -block.minecraft.skeleton_wall_skull=Skelett-Wandschädel +block.minecraft.skeleton_skull=Skelettschädel +block.minecraft.skeleton_wall_skull=Skelett-Wandschädel block.minecraft.slime_block=Schleimblock block.minecraft.smithing_table=Schmiedetisch -block.minecraft.smoker=Räucherofen +block.minecraft.smoker=Räucherofen block.minecraft.smooth_quartz=Glatter Quarzblock block.minecraft.smooth_quartz_slab=Glatte Quarzstufe block.minecraft.smooth_quartz_stairs=Glatte Quarztreppe @@ -698,7 +698,7 @@ block.minecraft.soul_wall_torch=Seelenwandfackel block.minecraft.spawner=Spawner block.minecraft.sponge=Schwamm block.minecraft.spruce_button=Fichtenholzknopf -block.minecraft.spruce_door=Fichtenholztür +block.minecraft.spruce_door=Fichtenholztür block.minecraft.spruce_fence=Fichtenholzzaun block.minecraft.spruce_fence_gate=Fichtenholzzauntor block.minecraft.spruce_leaves=Fichtennadeln @@ -709,7 +709,7 @@ block.minecraft.spruce_sapling=Fichtensetzling block.minecraft.spruce_sign=Fichtenholzschild block.minecraft.spruce_slab=Fichtenholzstufe block.minecraft.spruce_stairs=Fichtenholztreppe -block.minecraft.spruce_trapdoor=Fichtenholzfalltür +block.minecraft.spruce_trapdoor=Fichtenholzfalltür block.minecraft.spruce_wall_sign=Fichtenholzwandschild block.minecraft.spruce_wood=Fichtenholz block.minecraft.sticky_piston=Klebriger Kolben @@ -721,13 +721,13 @@ block.minecraft.stone_bricks=Steinziegel block.minecraft.stone_button=Steinknopf block.minecraft.stone_pressure_plate=Steindruckplatte block.minecraft.stone_slab=Steinstufe -block.minecraft.stonecutter=Steinsäge +block.minecraft.stonecutter=Steinsäge block.minecraft.stripped_acacia_log=Entrindeter Akazienstamm block.minecraft.stripped_acacia_wood=Entrindetes Akazienholz block.minecraft.stripped_birch_log=Entrindeter Birkenstamm block.minecraft.stripped_birch_wood=Entrindetes Birkenholz -block.minecraft.stripped_crimson_hyphae=Geschälte Karmesinhyphen -block.minecraft.stripped_crimson_stem=Geschälter Karmesinstiel +block.minecraft.stripped_crimson_hyphae=Geschälte Karmesinhyphen +block.minecraft.stripped_crimson_stem=Geschälter Karmesinstiel block.minecraft.stripped_dark_oak_log=Entrindeter Schwarzeichenstamm block.minecraft.stripped_dark_oak_wood=Entrindetes Schwarzeichenholz block.minecraft.stripped_jungle_log=Entrindeter Tropenbaumstamm @@ -736,13 +736,13 @@ block.minecraft.stripped_oak_log=Entrindeter Eichenstamm block.minecraft.stripped_oak_wood=Entrindetes Eichenholz block.minecraft.stripped_spruce_log=Entrindeter Fichtenstamm block.minecraft.stripped_spruce_wood=Entrindetes Fichtenholz -block.minecraft.stripped_warped_hyphae=Geschälte Wirrhyphen -block.minecraft.stripped_warped_stem=Geschälter Wirrstiel +block.minecraft.stripped_warped_hyphae=Geschälte Wirrhyphen +block.minecraft.stripped_warped_stem=Geschälter Wirrstiel block.minecraft.structure_block=Konstruktionsblock block.minecraft.structure_void=Konstruktionsleere block.minecraft.sugar_cane=Zuckerrohr block.minecraft.sunflower=Sonnenblume -block.minecraft.sweet_berry_bush=Süßbeerstrauch +block.minecraft.sweet_berry_bush=Süßbeerstrauch block.minecraft.tall_grass=Hohes Gras block.minecraft.tall_seagrass=Hohes Seegras block.minecraft.target=Zielblock @@ -754,8 +754,8 @@ block.minecraft.tripwire=Stolperdraht block.minecraft.tripwire_hook=Haken block.minecraft.tube_coral=Orgelkoralle block.minecraft.tube_coral_block=Orgelkorallenblock -block.minecraft.tube_coral_fan=Orgelkorallenfächer -block.minecraft.turtle_egg=Schildkrötenei +block.minecraft.tube_coral_fan=Orgelkorallenfächer +block.minecraft.turtle_egg=Schildkrötenei block.minecraft.twisting_vines=Zwirbelranken block.minecraft.twisting_vines_plant=Zwirbelrankenpflanze block.minecraft.vine=Ranken @@ -763,7 +763,7 @@ block.minecraft.void_air=Leerenluft block.minecraft.wall_sign=Wandschild block.minecraft.wall_torch=Kohlewandfackel block.minecraft.warped_button=Wirrknopf -block.minecraft.warped_door=Wirrtür +block.minecraft.warped_door=Wirrtür block.minecraft.warped_fence=Wirrzaun block.minecraft.warped_fence_gate=Wirrzauntor block.minecraft.warped_fungus=Wirrpilz @@ -776,7 +776,7 @@ block.minecraft.warped_sign=Wirrschild block.minecraft.warped_slab=Wirrstufe block.minecraft.warped_stairs=Wirrtreppe block.minecraft.warped_stem=Wirrstiel -block.minecraft.warped_trapdoor=Wirrfalltür +block.minecraft.warped_trapdoor=Wirrfalltür block.minecraft.warped_wall_sign=Wirrwandschild block.minecraft.warped_wart_block=Wirrwarzenblock block.minecraft.water=Wasser @@ -784,20 +784,20 @@ block.minecraft.weeping_vines=Trauerranken block.minecraft.weeping_vines_plant=Trauerrankenpflanze block.minecraft.wet_sponge=Nasser Schwamm block.minecraft.wheat=Weizenpflanzen -block.minecraft.white_bed=Weißes Bett -block.minecraft.white_carpet=Weißer Teppich -block.minecraft.white_concrete=Weißer Beton -block.minecraft.white_concrete_powder=Weißer Trockenbeton -block.minecraft.white_glazed_terracotta=Weiße glasierte Keramik -block.minecraft.white_shulker_box=Weiße Shulkerkiste -block.minecraft.white_stained_glass=Weißes Glas -block.minecraft.white_stained_glass_pane=Weiße Glasscheibe -block.minecraft.white_terracotta=Weiße Keramik -block.minecraft.white_tulip=Weiße Tulpe -block.minecraft.white_wool=Weiße Wolle +block.minecraft.white_bed=Weißes Bett +block.minecraft.white_carpet=Weißer Teppich +block.minecraft.white_concrete=Weißer Beton +block.minecraft.white_concrete_powder=Weißer Trockenbeton +block.minecraft.white_glazed_terracotta=Weiße glasierte Keramik +block.minecraft.white_shulker_box=Weiße Shulkerkiste +block.minecraft.white_stained_glass=Weißes Glas +block.minecraft.white_stained_glass_pane=Weiße Glasscheibe +block.minecraft.white_terracotta=Weiße Keramik +block.minecraft.white_tulip=Weiße Tulpe +block.minecraft.white_wool=Weiße Wolle block.minecraft.wither_rose=Witherrose -block.minecraft.wither_skeleton_skull=Witherskelettschädel -block.minecraft.wither_skeleton_wall_skull=Witherskelett-Wandschädel +block.minecraft.wither_skeleton_skull=Witherskelettschädel +block.minecraft.wither_skeleton_wall_skull=Witherskelett-Wandschädel block.minecraft.yellow_bed=Gelbes Bett block.minecraft.yellow_carpet=Gelber Teppich block.minecraft.yellow_concrete=Gelber Beton @@ -815,7 +815,7 @@ book.generation.1=Kopie des Originals book.generation.2=Kopie einer Kopie book.generation.3=Zerrissen effect.minecraft.absorption=Absorption -effect.minecraft.bad_omen=Böses Omen +effect.minecraft.bad_omen=Böses Omen effect.minecraft.blindness=Blindheit effect.minecraft.conduit_power=Meereskraft effect.minecraft.dolphins_grace=Gunst des Delfins @@ -830,22 +830,22 @@ effect.minecraft.instant_health=Direktheilung effect.minecraft.invisibility=Unsichtbarkeit effect.minecraft.jump_boost=Sprungkraft effect.minecraft.levitation=Schwebekraft -effect.minecraft.luck=Glück -effect.minecraft.mining_fatigue=Abbaulähmung -effect.minecraft.nausea=Übelkeit +effect.minecraft.luck=Glück +effect.minecraft.mining_fatigue=Abbaulähmung +effect.minecraft.nausea=Übelkeit effect.minecraft.night_vision=Nachtsicht effect.minecraft.poison=Vergiftung effect.minecraft.regeneration=Regeneration effect.minecraft.resistance=Resistenz -effect.minecraft.saturation=Sättigung +effect.minecraft.saturation=Sättigung effect.minecraft.slow_falling=Sanfter Fall effect.minecraft.slowness=Langsamkeit effect.minecraft.speed=Schnelligkeit -effect.minecraft.strength=Stärke +effect.minecraft.strength=Stärke effect.minecraft.unluck=Pech effect.minecraft.water_breathing=Unterwasseratem -effect.minecraft.weakness=Schwäche -effect.minecraft.wither=Ausdörrung +effect.minecraft.weakness=Schwäche +effect.minecraft.wither=Ausdörrung enchantment.level.1=I enchantment.level.10=X enchantment.level.2=II @@ -856,37 +856,37 @@ enchantment.level.6=VI enchantment.level.7=VII enchantment.level.8=VIII enchantment.level.9=IX -enchantment.minecraft.aqua_affinity=Wasseraffinität -enchantment.minecraft.bane_of_arthropods=Nemesis der Gliederfüßer +enchantment.minecraft.aqua_affinity=Wasseraffinität +enchantment.minecraft.bane_of_arthropods=Nemesis der Gliederfüßer enchantment.minecraft.binding_curse=Fluch der Bindung enchantment.minecraft.blast_protection=Explosionsschutz enchantment.minecraft.channeling=Entladung -enchantment.minecraft.depth_strider=Wasserläufer +enchantment.minecraft.depth_strider=Wasserläufer enchantment.minecraft.efficiency=Effizienz enchantment.minecraft.feather_falling=Federfall enchantment.minecraft.fire_aspect=Verbrennung enchantment.minecraft.fire_protection=Feuerschutz enchantment.minecraft.flame=Flamme -enchantment.minecraft.fortune=Glück -enchantment.minecraft.frost_walker=Eisläufer +enchantment.minecraft.fortune=Glück +enchantment.minecraft.frost_walker=Eisläufer enchantment.minecraft.impaling=Harpune enchantment.minecraft.infinity=Unendlichkeit -enchantment.minecraft.knockback=Rückstoß -enchantment.minecraft.looting=Plünderung +enchantment.minecraft.knockback=Rückstoß +enchantment.minecraft.looting=Plünderung enchantment.minecraft.loyalty=Treue -enchantment.minecraft.luck_of_the_sea=Glück des Meeres -enchantment.minecraft.lure=Köder +enchantment.minecraft.luck_of_the_sea=Glück des Meeres +enchantment.minecraft.lure=Köder enchantment.minecraft.mending=Reparatur enchantment.minecraft.multishot=Mehrfachschuss enchantment.minecraft.piercing=Durchschuss -enchantment.minecraft.power=Stärke +enchantment.minecraft.power=Stärke enchantment.minecraft.projectile_protection=Schusssicher enchantment.minecraft.protection=Schutz enchantment.minecraft.punch=Schlag enchantment.minecraft.quick_charge=Schnellladen enchantment.minecraft.respiration=Atmung enchantment.minecraft.riptide=Sog -enchantment.minecraft.sharpness=Schärfe +enchantment.minecraft.sharpness=Schärfe enchantment.minecraft.silk_touch=Behutsamkeit enchantment.minecraft.smite=Bann enchantment.minecraft.sweeping=Schwungkraft @@ -895,7 +895,7 @@ enchantment.minecraft.unbreaking=Haltbarkeit enchantment.minecraft.vanishing_curse=Fluch des Verschwindens item.minecraft.acacia_boat=Akazienholzboot item.minecraft.apple=Apfel -item.minecraft.armor_stand=Rüstungsständer +item.minecraft.armor_stand=Rüstungsständer item.minecraft.arrow=Pfeil item.minecraft.baked_potato=Ofenkartoffel item.minecraft.bat_spawn_egg=Fledermaus-Spawn-Ei @@ -914,25 +914,25 @@ item.minecraft.bone=Knochen item.minecraft.bone_meal=Knochenmehl item.minecraft.book=Buch item.minecraft.bow=Bogen -item.minecraft.bowl=Schüssel +item.minecraft.bowl=Schüssel item.minecraft.bread=Brot item.minecraft.brewing_stand=Braustand item.minecraft.brick=Ziegel item.minecraft.brown_dye=Brauner Farbstoff item.minecraft.bucket=Eimer -item.minecraft.cactus_green=Kaktusgrün +item.minecraft.cactus_green=Kaktusgrün item.minecraft.carrot=Karotte item.minecraft.carrot_on_a_stick=Karottenrute item.minecraft.cat_spawn_egg=Katzen-Spawn-Ei item.minecraft.cauldron=Kessel -item.minecraft.cave_spider_spawn_egg=Höhlenspinnen-Spawn-Ei +item.minecraft.cave_spider_spawn_egg=Höhlenspinnen-Spawn-Ei item.minecraft.chainmail_boots=Kettenstiefel item.minecraft.chainmail_chestplate=Kettenhemd item.minecraft.chainmail_helmet=Kettenhaube item.minecraft.chainmail_leggings=Kettenhose item.minecraft.charcoal=Holzkohle -item.minecraft.chest_minecart=Güterlore -item.minecraft.chicken=Rohes Hühnchen +item.minecraft.chest_minecart=Güterlore +item.minecraft.chicken=Rohes Hühnchen item.minecraft.chicken_spawn_egg=Huhn-Spawn-Ei item.minecraft.chorus_fruit=Chorusfrucht item.minecraft.clay_ball=Tonklumpen @@ -945,7 +945,7 @@ item.minecraft.cod_spawn_egg=Kabeljau-Spawn-Ei item.minecraft.command_block_minecart=Befehlsblocklore item.minecraft.compass=Kompass item.minecraft.cooked_beef=Steak -item.minecraft.cooked_chicken=Gebratenes Hühnchen +item.minecraft.cooked_chicken=Gebratenes Hühnchen item.minecraft.cooked_cod=Gebratener Kabeljau item.minecraft.cooked_mutton=Gebratenes Hammelfleisch item.minecraft.cooked_porkchop=Gebratenes Schweinefleisch @@ -958,8 +958,8 @@ item.minecraft.creeper_banner_pattern.desc=Creeper item.minecraft.creeper_head=Creeperkopf item.minecraft.creeper_spawn_egg=Creeper-Spawn-Ei item.minecraft.crossbow=Armbrust -item.minecraft.cyan_dye=Türkiser Farbstoff -item.minecraft.dandelion_yellow=Löwenzahngelb +item.minecraft.cyan_dye=Türkiser Farbstoff +item.minecraft.dandelion_yellow=Löwenzahngelb item.minecraft.dark_oak_boat=Schwarzeichenholzboot item.minecraft.debug_stick=Debug-Stab item.minecraft.diamond=Diamant @@ -980,7 +980,7 @@ item.minecraft.dragon_head=Drachenkopf item.minecraft.dried_kelp=Getrockneter Seetang item.minecraft.drowned_spawn_egg=Ertrunkenen-Spawn-Ei item.minecraft.egg=Ei -item.minecraft.elder_guardian_spawn_egg=Großer-Wächter-Spawn-Ei +item.minecraft.elder_guardian_spawn_egg=Großer-Wächter-Spawn-Ei item.minecraft.elytra=Elytren item.minecraft.emerald=Smaragd item.minecraft.enchanted_book=Verzaubertes Buch @@ -991,7 +991,7 @@ item.minecraft.ender_pearl=Enderperle item.minecraft.enderman_spawn_egg=Enderman-Spawn-Ei item.minecraft.endermite_spawn_egg=Endermiten-Spawn-Ei item.minecraft.evoker_spawn_egg=Magier-Spawn-Ei -item.minecraft.experience_bottle=Erfahrungsfläschchen +item.minecraft.experience_bottle=Erfahrungsfläschchen item.minecraft.feather=Feder item.minecraft.fermented_spider_eye=Fermentiertes Spinnenauge item.minecraft.filled_map=Karte @@ -1007,7 +1007,7 @@ item.minecraft.flower_pot=Blumentopf item.minecraft.fox_spawn_egg=Fuchs-Spawn-Ei item.minecraft.furnace_minecart=Antriebslore item.minecraft.ghast_spawn_egg=Ghast-Spawn-Ei -item.minecraft.ghast_tear=Ghastträne +item.minecraft.ghast_tear=Ghastträne item.minecraft.glass_bottle=Glasflasche item.minecraft.glistering_melon_slice=Glitzernde Melonenscheibe item.minecraft.globe_banner_pattern=Bannervorlage @@ -1028,8 +1028,8 @@ item.minecraft.golden_pickaxe=Goldspitzhacke item.minecraft.golden_shovel=Goldschaufel item.minecraft.golden_sword=Goldschwert item.minecraft.gray_dye=Grauer Farbstoff -item.minecraft.green_dye=Grüner Farbstoff -item.minecraft.guardian_spawn_egg=Wächter-Spawn-Ei +item.minecraft.green_dye=Grüner Farbstoff +item.minecraft.guardian_spawn_egg=Wächter-Spawn-Ei item.minecraft.gunpowder=Schwarzpulver item.minecraft.heart_of_the_sea=Herz des Meeres item.minecraft.hoglin_spawn_egg=Hoglin-Spawn-Ei @@ -1037,7 +1037,7 @@ item.minecraft.honey_bottle=Honigflasche item.minecraft.honeycomb=Honigwabe item.minecraft.hopper_minecart=Trichterlore item.minecraft.horse_spawn_egg=Pferde-Spawn-Ei -item.minecraft.husk_spawn_egg=Wüstenzombie-Spawn-Ei +item.minecraft.husk_spawn_egg=Wüstenzombie-Spawn-Ei item.minecraft.ink_sac=Tintenbeutel item.minecraft.iron_axe=Eisenaxt item.minecraft.iron_boots=Eisenstiefel @@ -1065,7 +1065,7 @@ item.minecraft.leather_horse_armor=Lederner Rossharnisch item.minecraft.leather_leggings=Lederhose item.minecraft.light_blue_dye=Hellblauer Farbstoff item.minecraft.light_gray_dye=Hellgrauer Farbstoff -item.minecraft.lime_dye=Hellgrüner Farbstoff +item.minecraft.lime_dye=Hellgrüner Farbstoff item.minecraft.lingering_potion=Verweiltrank item.minecraft.lingering_potion.effect.awkward=Seltsamer Verweiltrank item.minecraft.lingering_potion.effect.empty=Nicht braubarer Verweiltrank @@ -1075,25 +1075,25 @@ item.minecraft.lingering_potion.effect.healing=Verweiltrank der Heilung item.minecraft.lingering_potion.effect.invisibility=Verweiltrank der Unsichtbarkeit item.minecraft.lingering_potion.effect.leaping=Verweiltrank der Sprungkraft item.minecraft.lingering_potion.effect.levitation=Verweiltrank der Schwebekraft -item.minecraft.lingering_potion.effect.luck=Verweiltrank des Glücks -item.minecraft.lingering_potion.effect.mundane=Gewöhnlicher Verweiltrank +item.minecraft.lingering_potion.effect.luck=Verweiltrank des Glücks +item.minecraft.lingering_potion.effect.mundane=Gewöhnlicher Verweiltrank item.minecraft.lingering_potion.effect.night_vision=Verweiltrank der Nachtsicht item.minecraft.lingering_potion.effect.poison=Verweiltrank der Vergiftung item.minecraft.lingering_potion.effect.regeneration=Verweiltrank der Regeneration item.minecraft.lingering_potion.effect.slow_falling=Verweiltrank des sanften Falls item.minecraft.lingering_potion.effect.slowness=Verweiltrank der Langsamkeit -item.minecraft.lingering_potion.effect.strength=Verweiltrank der Stärke +item.minecraft.lingering_potion.effect.strength=Verweiltrank der Stärke item.minecraft.lingering_potion.effect.swiftness=Verweiltrank der Schnelligkeit -item.minecraft.lingering_potion.effect.thick=Dickflüssiger Verweiltrank -item.minecraft.lingering_potion.effect.turtle_master=Verweiltrank des Schildkrötenmeisters +item.minecraft.lingering_potion.effect.thick=Dickflüssiger Verweiltrank +item.minecraft.lingering_potion.effect.turtle_master=Verweiltrank des Schildkrötenmeisters item.minecraft.lingering_potion.effect.water=Verweilende Wasserflasche item.minecraft.lingering_potion.effect.water_breathing=Verweiltrank der Unterwasseratmung -item.minecraft.lingering_potion.effect.weakness=Verweiltrank der Schwäche +item.minecraft.lingering_potion.effect.weakness=Verweiltrank der Schwäche item.minecraft.llama_spawn_egg=Lama-Spawn-Ei item.minecraft.lodestone_compass=Leitstein-Kompass item.minecraft.magenta_dye=Magenta Farbstoff item.minecraft.magma_cream=Magmacreme -item.minecraft.magma_cube_spawn_egg=Magmawürfel-Spawn-Ei +item.minecraft.magma_cube_spawn_egg=Magmawürfel-Spawn-Ei item.minecraft.map=Leere Karte item.minecraft.melon_seeds=Melonenkerne item.minecraft.melon_slice=Melonenscheibe @@ -1121,7 +1121,7 @@ item.minecraft.music_disc_mall.desc=C418 - Mall item.minecraft.music_disc_mellohi=Schallplatte item.minecraft.music_disc_mellohi.desc=C418 - Mellohi item.minecraft.music_disc_pigstep=Schallplatte -item.minecraft.music_disc_pigstep.desc=Lena Raine ‐ Pigstep +item.minecraft.music_disc_pigstep.desc=Lena Raine â€� Pigstep item.minecraft.music_disc_stal=Schallplatte item.minecraft.music_disc_stal.desc=C418 - Stal item.minecraft.music_disc_strad=Schallplatte @@ -1150,7 +1150,7 @@ item.minecraft.netherite_sword=Netheritschwert item.minecraft.oak_boat=Eichenholzboot item.minecraft.ocelot_spawn_egg=Ozelot-Spawn-Ei item.minecraft.orange_dye=Oranger Farbstoff -item.minecraft.painting=Gemälde +item.minecraft.painting=Gemälde item.minecraft.panda_spawn_egg=Panda-Spawn-Ei item.minecraft.paper=Papier item.minecraft.parrot_spawn_egg=Papageien-Spawn-Ei @@ -1158,11 +1158,12 @@ item.minecraft.phantom_membrane=Phantomhaut item.minecraft.phantom_spawn_egg=Phantom-Spawn-Ei item.minecraft.pig_spawn_egg=Schweine-Spawn-Ei item.minecraft.piglin_banner_pattern.desc=Schnauze +item.minecraft.piglin_brute_spawn_egg=Piglin-Barbaren-Spawn-Ei item.minecraft.piglin_spawn_egg=Piglin-Spawn-Ei -item.minecraft.pillager_spawn_egg=Plünderer-Spawn-Ei +item.minecraft.pillager_spawn_egg=Plünderer-Spawn-Ei item.minecraft.pink_dye=Rosa Farbstoff item.minecraft.poisonous_potato=Giftige Kartoffel -item.minecraft.polar_bear_spawn_egg=Eisbären-Spawn-Ei +item.minecraft.polar_bear_spawn_egg=Eisbären-Spawn-Ei item.minecraft.popped_chorus_fruit=Geplatzte Chorusfrucht item.minecraft.porkchop=Rohes Schweinefleisch item.minecraft.potato=Kartoffel @@ -1175,27 +1176,27 @@ item.minecraft.potion.effect.healing=Trank der Heilung item.minecraft.potion.effect.invisibility=Trank der Unsichtbarkeit item.minecraft.potion.effect.leaping=Trank der Sprungkraft item.minecraft.potion.effect.levitation=Trank der Schwebekraft -item.minecraft.potion.effect.luck=Trank des Glücks -item.minecraft.potion.effect.mundane=Gewöhnlicher Trank +item.minecraft.potion.effect.luck=Trank des Glücks +item.minecraft.potion.effect.mundane=Gewöhnlicher Trank item.minecraft.potion.effect.night_vision=Trank der Nachtsicht item.minecraft.potion.effect.poison=Trank der Vergiftung item.minecraft.potion.effect.regeneration=Trank der Regeneration item.minecraft.potion.effect.slow_falling=Trank des sanften Falls item.minecraft.potion.effect.slowness=Trank der Langsamkeit -item.minecraft.potion.effect.strength=Trank der Stärke +item.minecraft.potion.effect.strength=Trank der Stärke item.minecraft.potion.effect.swiftness=Trank der Schnelligkeit -item.minecraft.potion.effect.thick=Dickflüssiger Trank -item.minecraft.potion.effect.turtle_master=Trank des Schildkrötenmeisters +item.minecraft.potion.effect.thick=Dickflüssiger Trank +item.minecraft.potion.effect.turtle_master=Trank des Schildkrötenmeisters item.minecraft.potion.effect.water=Wasserflasche item.minecraft.potion.effect.water_breathing=Trank der Unterwasseratmung -item.minecraft.potion.effect.weakness=Trank der Schwäche +item.minecraft.potion.effect.weakness=Trank der Schwäche item.minecraft.prismarine_crystals=Prismarinkristalle item.minecraft.prismarine_shard=Prismarinscherbe item.minecraft.pufferfish=Kugelfisch item.minecraft.pufferfish_bucket=Kugelfischeimer item.minecraft.pufferfish_spawn_egg=Kugelfisch-Spawn-Ei -item.minecraft.pumpkin_pie=Kürbiskuchen -item.minecraft.pumpkin_seeds=Kürbiskerne +item.minecraft.pumpkin_pie=Kürbiskuchen +item.minecraft.pumpkin_seeds=Kürbiskerne item.minecraft.purple_dye=Violetter Farbstoff item.minecraft.quartz=Netherquarz item.minecraft.rabbit=Rohes Kaninchen @@ -1203,7 +1204,7 @@ item.minecraft.rabbit_foot=Hasenpfote item.minecraft.rabbit_hide=Kaninchenfell item.minecraft.rabbit_spawn_egg=Kaninchen-Spawn-Ei item.minecraft.rabbit_stew=Kaninchenragout -item.minecraft.ravager_spawn_egg=Verwüster-Spawn-Ei +item.minecraft.ravager_spawn_egg=Verwüster-Spawn-Ei item.minecraft.red_dye=Roter Farbstoff item.minecraft.redstone=Redstone-Staub item.minecraft.rose_red=Rosenrot @@ -1220,10 +1221,10 @@ item.minecraft.shulker_spawn_egg=Shulker-Spawn-Ei item.minecraft.sign=Schild item.minecraft.silverfish_spawn_egg=Silberfischchen-Spawn-Ei item.minecraft.skeleton_horse_spawn_egg=Skelettpferde-Spawn-Ei -item.minecraft.skeleton_skull=Skelettschädel +item.minecraft.skeleton_skull=Skelettschädel item.minecraft.skeleton_spawn_egg=Skelett-Spawn-Ei item.minecraft.skull_banner_pattern=Bannervorlage -item.minecraft.skull_banner_pattern.desc=Schädel +item.minecraft.skull_banner_pattern.desc=Schädel item.minecraft.slime_ball=Schleimball item.minecraft.slime_spawn_egg=Schleim-Spawn-Ei item.minecraft.snowball=Schneeball @@ -1239,20 +1240,20 @@ item.minecraft.splash_potion.effect.healing=Wurftrank der Heilung item.minecraft.splash_potion.effect.invisibility=Wurftrank der Unsichtbarkeit item.minecraft.splash_potion.effect.leaping=Wurftrank der Sprungkraft item.minecraft.splash_potion.effect.levitation=Wurftrank der Schwebekraft -item.minecraft.splash_potion.effect.luck=Wurftrank des Glücks -item.minecraft.splash_potion.effect.mundane=Gewöhnlicher Wurftrank +item.minecraft.splash_potion.effect.luck=Wurftrank des Glücks +item.minecraft.splash_potion.effect.mundane=Gewöhnlicher Wurftrank item.minecraft.splash_potion.effect.night_vision=Wurftrank der Nachtsicht item.minecraft.splash_potion.effect.poison=Wurftrank der Vergiftung item.minecraft.splash_potion.effect.regeneration=Wurftrank der Regeneration item.minecraft.splash_potion.effect.slow_falling=Wurftrank des sanften Falls item.minecraft.splash_potion.effect.slowness=Wurftrank der Langsamkeit -item.minecraft.splash_potion.effect.strength=Wurftrank der Stärke +item.minecraft.splash_potion.effect.strength=Wurftrank der Stärke item.minecraft.splash_potion.effect.swiftness=Wurftrank der Schnelligkeit -item.minecraft.splash_potion.effect.thick=Dickflüssiger Wurftrank -item.minecraft.splash_potion.effect.turtle_master=Wurftrank des Schildkrötenmeisters +item.minecraft.splash_potion.effect.thick=Dickflüssiger Wurftrank +item.minecraft.splash_potion.effect.turtle_master=Wurftrank des Schildkrötenmeisters item.minecraft.splash_potion.effect.water=Werfbare Wasserflasche item.minecraft.splash_potion.effect.water_breathing=Wurftrank der Unterwasseratmung -item.minecraft.splash_potion.effect.weakness=Wurftrank der Schwäche +item.minecraft.splash_potion.effect.weakness=Wurftrank der Schwäche item.minecraft.spruce_boat=Fichtenholzboot item.minecraft.squid_spawn_egg=Tintenfisch-Spawn-Ei item.minecraft.stick=Stock @@ -1266,50 +1267,50 @@ item.minecraft.strider_spawn_egg=Schreiter-Spawn-Ei item.minecraft.string=Faden item.minecraft.sugar=Zucker item.minecraft.suspicious_stew=Seltsame Suppe -item.minecraft.sweet_berries=Süßbeeren -item.minecraft.tipped_arrow=Getränkter Pfeil -item.minecraft.tipped_arrow.effect.awkward=Getränkter Pfeil -item.minecraft.tipped_arrow.effect.empty=Nicht herstellbarer getränkter Pfeil +item.minecraft.sweet_berries=Süßbeeren +item.minecraft.tipped_arrow=Getränkter Pfeil +item.minecraft.tipped_arrow.effect.awkward=Getränkter Pfeil +item.minecraft.tipped_arrow.effect.empty=Nicht herstellbarer getränkter Pfeil item.minecraft.tipped_arrow.effect.fire_resistance=Pfeil der Feuerresistenz item.minecraft.tipped_arrow.effect.harming=Pfeil des Schadens item.minecraft.tipped_arrow.effect.healing=Pfeil der Heilung item.minecraft.tipped_arrow.effect.invisibility=Pfeil der Unsichtbarkeit item.minecraft.tipped_arrow.effect.leaping=Pfeil der Sprungkraft item.minecraft.tipped_arrow.effect.levitation=Pfeil der Schwebekraft -item.minecraft.tipped_arrow.effect.luck=Pfeil des Glücks -item.minecraft.tipped_arrow.effect.mundane=Getränkter Pfeil +item.minecraft.tipped_arrow.effect.luck=Pfeil des Glücks +item.minecraft.tipped_arrow.effect.mundane=Getränkter Pfeil item.minecraft.tipped_arrow.effect.night_vision=Pfeil der Nachtsicht item.minecraft.tipped_arrow.effect.poison=Pfeil der Vergiftung item.minecraft.tipped_arrow.effect.regeneration=Pfeil der Regeneration item.minecraft.tipped_arrow.effect.slow_falling=Pfeil des sanften Falls item.minecraft.tipped_arrow.effect.slowness=Pfeil der Langsamkeit -item.minecraft.tipped_arrow.effect.strength=Pfeil der Stärke +item.minecraft.tipped_arrow.effect.strength=Pfeil der Stärke item.minecraft.tipped_arrow.effect.swiftness=Pfeil der Schnelligkeit -item.minecraft.tipped_arrow.effect.thick=Getränkter Pfeil -item.minecraft.tipped_arrow.effect.turtle_master=Pfeil des Schildkrötenmeisters +item.minecraft.tipped_arrow.effect.thick=Getränkter Pfeil +item.minecraft.tipped_arrow.effect.turtle_master=Pfeil des Schildkrötenmeisters item.minecraft.tipped_arrow.effect.water=Nasser Pfeil item.minecraft.tipped_arrow.effect.water_breathing=Pfeil der Unterwasseratmung -item.minecraft.tipped_arrow.effect.weakness=Pfeil der Schwäche +item.minecraft.tipped_arrow.effect.weakness=Pfeil der Schwäche item.minecraft.tnt_minecart=TNT-Lore item.minecraft.totem_of_undying=Totem der Unsterblichkeit -item.minecraft.trader_llama_spawn_egg=Händlerlama-Spawn-Ei +item.minecraft.trader_llama_spawn_egg=Händlerlama-Spawn-Ei item.minecraft.trident=Dreizack item.minecraft.tropical_fish=Tropenfisch item.minecraft.tropical_fish_bucket=Tropenfischeimer item.minecraft.tropical_fish_spawn_egg=Tropenfisch-Spawn-Ei -item.minecraft.turtle_helmet=Schildkrötenpanzer -item.minecraft.turtle_spawn_egg=Schildkröten-Spawn-Ei +item.minecraft.turtle_helmet=Schildkrötenpanzer +item.minecraft.turtle_spawn_egg=Schildkröten-Spawn-Ei item.minecraft.vex_spawn_egg=Plagegeister-Spawn-Ei item.minecraft.villager_spawn_egg=Dorfbewohner-Spawn-Ei item.minecraft.vindicator_spawn_egg=Diener-Spawn-Ei -item.minecraft.wandering_trader_spawn_egg=Fahrender-Händler-Spawn-Ei +item.minecraft.wandering_trader_spawn_egg=Fahrender-Händler-Spawn-Ei item.minecraft.warped_fungus_on_a_stick=Wirrpilzrute item.minecraft.water_bucket=Wassereimer item.minecraft.wheat=Weizen -item.minecraft.wheat_seeds=Weizenkörner -item.minecraft.white_dye=Weißer Farbstoff +item.minecraft.wheat_seeds=Weizenkörner +item.minecraft.white_dye=Weißer Farbstoff item.minecraft.witch_spawn_egg=Hexen-Spawn-Ei -item.minecraft.wither_skeleton_skull=Witherskelettschädel +item.minecraft.wither_skeleton_skull=Witherskelettschädel item.minecraft.wither_skeleton_spawn_egg=Witherskelett-Spawn-Ei item.minecraft.wolf_spawn_egg=Wolfs-Spawn-Ei item.minecraft.wooden_axe=Holzaxt diff --git a/src/main/resources/lang/en_US.lang b/src/main/resources/lang/en_US.lang index c35e8fa1..52830867 100644 --- a/src/main/resources/lang/en_US.lang +++ b/src/main/resources/lang/en_US.lang @@ -1285,6 +1285,7 @@ item.minecraft.ocelot_spawn_egg=Ocelot Spawn Egg item.minecraft.panda_spawn_egg=Panda Spawn Egg item.minecraft.parrot_spawn_egg=Parrot Spawn Egg item.minecraft.pig_spawn_egg=Pig Spawn Egg +item.minecraft.piglin_brute_spawn_egg=Piglin Brute Spawn Egg item.minecraft.piglin_spawn_egg=Piglin Spawn Egg item.minecraft.pillager_spawn_egg=Pillager Spawn Egg item.minecraft.phantom_spawn_egg=Phantom Spawn Egg