diff --git a/build.gradle b/build.gradle index 8cc79f1c..484f97c9 100644 --- a/build.gradle +++ b/build.gradle @@ -23,13 +23,14 @@ plugins { id "de.undercouch.download" version "5.0.1" } -version '1.4.21-1.19.3' +version '1.4.23-1.19.3' def nmsVersion = "1.19.3" //[NMS] def apiVersion = '1.19' def specialSourceVersion = '1.11.0' //[NMS] def spigotJarVersion = '1.19.3-R0.1-SNAPSHOT' //[NMS] def name = getRootProject().getName() // Defined in settings.gradle def main = 'com.volmit.adapt.Adapt' +def manifoldVersion = '2022.1.21' // ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED // ======================== WINDOWS ============================= @@ -122,7 +123,6 @@ configurations.all { resolutionStrategy.cacheDynamicVersionsFor 60, 'minutes' } - dependencies { // Provided or Classpath compileOnly 'org.projectlombok:lombok:1.18.24' @@ -133,9 +133,9 @@ dependencies { // Cancer implementation 'art.arcane:Amulet:22.7.18' implementation 'art.arcane:Fukkit:22.7.5' - annotationProcessor 'systems.manifold:manifold-ext:2022.1.21' - testAnnotationProcessor 'systems.manifold:manifold-ext:2022.1.21' - implementation 'systems.manifold:manifold-rt:2022.1.21' + annotationProcessor 'systems.manifold:manifold-ext:' + manifoldVersion + testAnnotationProcessor 'systems.manifold:manifold-ext:' + manifoldVersion + implementation 'systems.manifold:manifold-rt:' + manifoldVersion implementation "io.papermc:paperlib:1.0.7" //Random Api's @@ -150,15 +150,15 @@ dependencies { // Shaded implementation 'io.papermc:paperlib:1.0.5' - implementation "net.kyori:adventure-text-minimessage:4.11.0" + implementation 'net.kyori:adventure-text-minimessage:4.12.0' implementation 'net.kyori:adventure-platform-bukkit:4.1.2' - implementation 'net.kyori:adventure-api:4.11.0' + implementation 'net.kyori:adventure-api:4.12.0' implementation 'xyz.xenondevs:particle:1.8.1' // Dynamically Loaded implementation 'com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2' implementation 'org.apache.commons:commons-lang3:3.12.0' - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10' } if (JavaVersion.current().toString() != "17") { diff --git a/src/main/java/com/volmit/adapt/Adapt.java b/src/main/java/com/volmit/adapt/Adapt.java index 78cd5c12..bd4f9dd5 100644 --- a/src/main/java/com/volmit/adapt/Adapt.java +++ b/src/main/java/com/volmit/adapt/Adapt.java @@ -99,8 +99,7 @@ public static void autoUpdateCheck() { if (instance.getDescription().getVersion().contains("development")) { info("Development build detected. Skipping update check."); return; - } - else if (!version.equals(instance.getDescription().getVersion())) { + } else if (!version.equals(instance.getDescription().getVersion())) { info("Please update your Adapt plugin to the latest version! (Current: " + instance.getDescription().getVersion() + " Latest: " + version + ")"); } else { info("You are running the latest version of Adapt!"); diff --git a/src/main/java/com/volmit/adapt/api/Component.java b/src/main/java/com/volmit/adapt/api/Component.java index 63066833..c99fd50e 100644 --- a/src/main/java/com/volmit/adapt/api/Component.java +++ b/src/main/java/com/volmit/adapt/api/Component.java @@ -265,31 +265,21 @@ default void vfxZuck(Location from, Location to) { } } - default boolean safeGiveItem(Player player, Entity droppedItemEntity, ItemStack is) { - EntityPickupItemEvent e = new EntityPickupItemEvent(player, (Item) droppedItemEntity, 0); + default void safeGiveItem(Player player, Entity itemEntity, ItemStack is) { + EntityPickupItemEvent e = new EntityPickupItemEvent(player, (Item) itemEntity, 0); Bukkit.getPluginManager().callEvent(e); if (!e.isCancelled()) { - droppedItemEntity.remove(); + itemEntity.remove(); if (!player.getInventory().addItem(is).isEmpty()) { player.getWorld().dropItem(player.getLocation(), is); } - return true; - } else { - return false; } } - default boolean safeGiveItem(Player player, Item droppedItemEntity, ItemStack is) { - EntityPickupItemEvent e = new EntityPickupItemEvent(player, droppedItemEntity, 0); - Bukkit.getPluginManager().callEvent(e); - if (!e.isCancelled()) { - droppedItemEntity.remove(); - if (!player.getInventory().addItem(is).isEmpty()) { - player.getWorld().dropItem(player.getLocation(), is); - } - return true; - } else { - return false; + + default void safeGiveItem(Player player, ItemStack item) { + if (!player.getInventory().addItem(item).isEmpty()) { + player.getWorld().dropItem(player.getLocation(), item); } } diff --git a/src/main/java/com/volmit/adapt/api/recipe/AdaptRecipe.java b/src/main/java/com/volmit/adapt/api/recipe/AdaptRecipe.java index 22205edc..4f9acb3d 100644 --- a/src/main/java/com/volmit/adapt/api/recipe/AdaptRecipe.java +++ b/src/main/java/com/volmit/adapt/api/recipe/AdaptRecipe.java @@ -115,7 +115,7 @@ class Furnace implements AdaptRecipe { private String key; private ItemStack result; private Material ingredient; -// private float experience = 1; + // private float experience = 1; // private int cookTime = 20; private float experience; private int cookTime; diff --git a/src/main/java/com/volmit/adapt/api/value/MaterialValue.java b/src/main/java/com/volmit/adapt/api/value/MaterialValue.java index fc93a81a..4f1fed7e 100644 --- a/src/main/java/com/volmit/adapt/api/value/MaterialValue.java +++ b/src/main/java/com/volmit/adapt/api/value/MaterialValue.java @@ -139,7 +139,7 @@ public static double getValue(Material m) { private static double getValue(Material m, Set ignore) { if (get().value.containsKey(m)) { - if (m.getHardness() == 0) { + if (m.isBlock() && m.getHardness() == 0) { return 0; } return get().value.get(m); diff --git a/src/main/java/com/volmit/adapt/api/world/AdaptPlayer.java b/src/main/java/com/volmit/adapt/api/world/AdaptPlayer.java index 8b61ddb8..4cd09bb8 100644 --- a/src/main/java/com/volmit/adapt/api/world/AdaptPlayer.java +++ b/src/main/java/com/volmit/adapt/api/world/AdaptPlayer.java @@ -241,10 +241,13 @@ public double getSpeed() { public boolean hasAdaptation(String id) { String skillLine = id.split("-")[0]; + Adapt.verbose("Checking for adaptation " + id + " in skill line " + skillLine); if (skillLine == null) return false; PlayerSkillLine line = getData().getSkillLine(skillLine); + Adapt.verbose("Found skill line " + line); if (line.getAdaptation(id) == null || line.getAdaptation(id).getLevel() == 0) { + Adapt.verbose("Adaptation " + id + " not found or level 0"); return false; } return line.getAdaptation(id).getLevel() > 0; diff --git a/src/main/java/com/volmit/adapt/api/world/PlayerSkillLine.java b/src/main/java/com/volmit/adapt/api/world/PlayerSkillLine.java index aaf51b78..c8f3d711 100644 --- a/src/main/java/com/volmit/adapt/api/world/PlayerSkillLine.java +++ b/src/main/java/com/volmit/adapt/api/world/PlayerSkillLine.java @@ -67,6 +67,8 @@ public void giveXP(Notifier p, double xp) { last = M.ms(); if (AdaptConfig.get().isActionbarNotifyXp()) { p.notifyXP(line, xp); + } else { + // bossbar thing here } } } diff --git a/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectFoundation.java b/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectFoundation.java index aa17657f..66409b09 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectFoundation.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectFoundation.java @@ -22,6 +22,7 @@ import com.volmit.adapt.api.adaptation.SimpleAdaptation; import com.volmit.adapt.util.*; import lombok.NoArgsConstructor; +import net.minecraft.world.level.Explosion; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; @@ -29,8 +30,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockExplodeEvent; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; +import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerToggleSneakEvent; @@ -114,6 +117,7 @@ public void on(PlayerMoveEvent e) { blockPower.put(p, power); } + //prevent piston from moving blocks // Dupe fix @EventHandler(priority = EventPriority.HIGHEST) public void on(BlockPistonExtendEvent e) { if (e.isCancelled()) { @@ -127,6 +131,7 @@ public void on(BlockPistonExtendEvent e) { }); } + //prevent piston from pulling blocks // Dupe fix @EventHandler(priority = EventPriority.HIGHEST) public void on(BlockPistonRetractEvent e) { if (e.isCancelled()) { @@ -140,6 +145,35 @@ public void on(BlockPistonRetractEvent e) { }); } + //prevent TNT from destroying blocks // Dupe fix + @EventHandler(priority = EventPriority.HIGHEST) + public void on(BlockExplodeEvent e) { + if (e.isCancelled()) { + return; + } + if (activeBlocks.contains(e.getBlock())) { + Adapt.verbose("Cancelled Block Explosion on Adaptation Foundation Block"); + e.setCancelled(true); + } + } + + //prevent block from being destroyed // Dupe fix + @EventHandler(priority = EventPriority.HIGHEST) + public void on(BlockBreakEvent e) { + if (activeBlocks.contains(e.getBlock())) { + e.setCancelled(true); + } + } + + //prevent Entities from destroying blocks // Dupe fix + @EventHandler(priority = EventPriority.HIGHEST) + public void on(EntityExplodeEvent e) { + if (e.isCancelled()) { + return; + } + e.blockList().removeIf(activeBlocks::contains); + } + @EventHandler(priority = EventPriority.MONITOR) public void on(PlayerToggleSneakEvent e) { if (e.isCancelled()) { @@ -238,12 +272,7 @@ private boolean hasCooldown(Player i) { return cooldowns.containsKey(i); } - @EventHandler(priority = EventPriority.HIGHEST) - public void on(BlockBreakEvent e) { - if (activeBlocks.contains(e.getBlock())) { - e.setCancelled(true); - } - } + @Override public boolean isEnabled() { diff --git a/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectPlacement.java b/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectPlacement.java index 2def3f1e..79aea858 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectPlacement.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/architect/ArchitectPlacement.java @@ -110,6 +110,7 @@ public void on(BlockPlaceEvent e) { if (hand.getAmount() > 0) { runPlayerViewport(getBlockFace(p), p.getTargetBlock(null, 5), p.getInventory().getItemInMainHand().getType(), p); } + e.setCancelled(true); } else { Adapt.messagePlayer(p, C.RED + Localizer.dLocalize("architect", "placement", "lore1") + " " + C.GREEN + totalMap.get(p).size() + C.RED + " " + Localizer.dLocalize("architect", "placement", "lore2")); } diff --git a/src/main/java/com/volmit/adapt/content/adaptation/axe/AxeWoodVeinminer.java b/src/main/java/com/volmit/adapt/content/adaptation/axe/AxeWoodVeinminer.java index 46f73179..76c09824 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/axe/AxeWoodVeinminer.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/axe/AxeWoodVeinminer.java @@ -25,7 +25,6 @@ import com.volmit.adapt.util.J; import com.volmit.adapt.util.Localizer; import lombok.NoArgsConstructor; -import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Particle; import org.bukkit.Sound; @@ -37,8 +36,8 @@ import org.bukkit.inventory.ItemStack; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import java.util.HashSet; +import java.util.Set; public class AxeWoodVeinminer extends SimpleAdaptation { public AxeWoodVeinminer() { @@ -89,8 +88,7 @@ public void on(BlockBreakEvent e) { if (isLog(new ItemStack(e.getBlock().getType()))) { Block block = e.getBlock(); - Map blockMap = new HashMap<>(); - blockMap.put(block.getLocation(), block); + Set blockMap = new HashSet<>(); int blockCount = 0; for (int i = 0; i < getRadius(getLevel(p)); i++) { for (int x = -i; x <= i; x++) { @@ -107,7 +105,7 @@ public void on(BlockBreakEvent e) { Adapt.verbose("Block: " + b.getLocation() + " is too far away from " + block.getLocation() + " (" + getRadius(getLevel(p)) + ")"); continue; } - blockMap.put(b.getLocation(), b); + blockMap.add(b); } } } @@ -115,38 +113,23 @@ public void on(BlockBreakEvent e) { } J.s(() -> { - for (Location l : blockMap.keySet()) { - Block b = e.getBlock().getWorld().getBlockAt(l); - xp(p, 2); - if (getPlayer(p).getData().getSkillLines() != null - && getPlayer(p).getData().getSkillLines().get("axes").getAdaptations() != null - && getPlayer(p).getData().getSkillLines().get("axes").getAdaptations().get("axe-drop-to-inventory") != null - && getPlayer(p).getData().getSkillLines().get("axes").getAdaptations().get("axe-drop-to-inventory").getLevel() > 0) { - Collection items = e.getBlock().getDrops(); - if (!isLog(new ItemStack(b.getType()))) { - for (ItemStack i : items) { - p.playSound(p.getLocation(), Sound.BLOCK_CALCITE_HIT, 0.01f, 0.01f); - xp(p, 2); - HashMap extra = p.getInventory().addItem(i); - if (!extra.isEmpty()) { - p.getWorld().dropItem(p.getLocation(), extra.get(0)); - } - } - } else { - if (!p.getInventory().addItem(new ItemStack(b.getType())).isEmpty()) { - p.getWorld().dropItemNaturally(p.getLocation(), new ItemStack(b.getType())); - } + for (Block blocks : blockMap) { + if (getPlayer(p).getData().getSkillLines().get("axes").getAdaptations().get("axe-drop-to-inventory").getLevel() > 0) { + Collection items = blocks.getDrops(); + for (ItemStack item : items) { + safeGiveItem(p, item); + Adapt.verbose("Giving item: " + item); } - p.breakBlock(l.getBlock()); + blocks.setType(Material.AIR); } else { - b.breakNaturally(p.getItemInUse()); - e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.BLOCK_FUNGUS_BREAK, 0.01f, 0.25f); + blocks.breakNaturally(p.getItemInUse()); + blocks.getWorld().playSound(e.getBlock().getLocation(), Sound.BLOCK_FUNGUS_BREAK, 0.01f, 0.25f); if (getConfig().showParticles) { - e.getBlock().getWorld().spawnParticle(Particle.ASH, e.getBlock().getLocation().add(0.5, 0.5, 0.5), 25, 0.5, 0.5, 0.5, 0.1); + blocks.getWorld().spawnParticle(Particle.ASH, blocks.getLocation().add(0.5, 0.5, 0.5), 25, 0.5, 0.5, 0.5, 0.1); } } if (getConfig().showParticles) { - vfxSingleCubeOutlineR(b, Particle.ENCHANTMENT_TABLE); + vfxSingleCubeOutlineR(blocks, Particle.ENCHANTMENT_TABLE); } } }); diff --git a/src/main/java/com/volmit/adapt/content/adaptation/brewing/BrewingSuperHeated.java b/src/main/java/com/volmit/adapt/content/adaptation/brewing/BrewingSuperHeated.java index 29633bed..6d6d4884 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/brewing/BrewingSuperHeated.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/brewing/BrewingSuperHeated.java @@ -129,7 +129,7 @@ public void onTick() { if (activeStands.get(b.getBlock()) == 0) { activeStands.remove(b.getBlock()); } - if(activeStands.containsKey(b.getBlock())) { + if (activeStands.containsKey(b.getBlock())) { activeStands.put(b.getBlock(), activeStands.get(b.getBlock()) - 1); } } diff --git a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterLuck.java b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterLuck.java index d017ca46..16c77db4 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterLuck.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterLuck.java @@ -74,7 +74,7 @@ public void on(EntityDamageEvent e) { } else { if (getConfig().consumable != null && Material.getMaterial(getConfig().consumable) != null) { Material mat = Material.getMaterial(getConfig().consumable); - if (mat != null &&p.getInventory().contains(mat)) { + if (mat != null && p.getInventory().contains(mat)) { p.getInventory().removeItem(new ItemStack(mat, 1)); addPotionStacks(p, PotionEffectType.LUCK, getLevel(p), 50, false); } else { diff --git a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterRegen.java b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterRegen.java index e92103c5..073fbe93 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterRegen.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterRegen.java @@ -73,7 +73,7 @@ public void on(EntityDamageEvent e) { } else { if (getConfig().consumable != null && Material.getMaterial(getConfig().consumable) != null) { Material mat = Material.getMaterial(getConfig().consumable); - if (mat != null &&p.getInventory().contains(mat)) { + if (mat != null && p.getInventory().contains(mat)) { p.getInventory().removeItem(new ItemStack(mat, 1)); addPotionStacks(p, PotionEffectType.REGENERATION, getLevel(p), 5 + getLevel(p), false); } else { diff --git a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterResistance.java b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterResistance.java index a0458cf1..bcfadb50 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterResistance.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterResistance.java @@ -75,7 +75,7 @@ public void on(EntityDamageEvent e) { } else { if (getConfig().consumable != null && Material.getMaterial(getConfig().consumable) != null) { Material mat = Material.getMaterial(getConfig().consumable); - if (mat != null &&p.getInventory().contains(mat)) { + if (mat != null && p.getInventory().contains(mat)) { p.getInventory().removeItem(new ItemStack(mat, 1)); addPotionStacks(p, PotionEffectType.DAMAGE_RESISTANCE, getLevel(p), 50, false); } else { diff --git a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterSpeed.java b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterSpeed.java index f1924a41..84c6e7d3 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterSpeed.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterSpeed.java @@ -73,7 +73,7 @@ public void on(EntityDamageEvent e) { } else { if (getConfig().consumable != null && Material.getMaterial(getConfig().consumable) != null) { Material mat = Material.getMaterial(getConfig().consumable); - if (mat != null &&p.getInventory().contains(mat)) { + if (mat != null && p.getInventory().contains(mat)) { p.getInventory().removeItem(new ItemStack(mat, 1)); addPotionStacks(p, PotionEffectType.SPEED, getLevel(p), 50, false); } else { diff --git a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterStrength.java b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterStrength.java index 515c9bdc..2b4b4877 100644 --- a/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterStrength.java +++ b/src/main/java/com/volmit/adapt/content/adaptation/hunter/HunterStrength.java @@ -72,7 +72,7 @@ public void on(EntityDamageEvent e) { } else { if (getConfig().consumable != null && Material.getMaterial(getConfig().consumable) != null) { Material mat = Material.getMaterial(getConfig().consumable); - if (mat != null &&p.getInventory().contains(mat)) { + if (mat != null && p.getInventory().contains(mat)) { p.getInventory().removeItem(new ItemStack(mat, 1)); addPotionStacks(p, PotionEffectType.INCREASE_DAMAGE, getLevel(p), 50, false); } else { diff --git a/src/main/java/com/volmit/adapt/util/BlockPosition.java b/src/main/java/com/volmit/adapt/util/BlockPosition.java index 7a6e9a62..929793f1 100644 --- a/src/main/java/com/volmit/adapt/util/BlockPosition.java +++ b/src/main/java/com/volmit/adapt/util/BlockPosition.java @@ -18,9 +18,11 @@ package com.volmit.adapt.util; -import lombok.Data; +import lombok.*; -@Data +@Getter +@Setter +@ToString public class BlockPosition { private int x; private int y; @@ -37,8 +39,7 @@ public boolean equals(Object o) { return false; } - if (o instanceof BlockPosition) { - BlockPosition ot = (BlockPosition) o; + if (o instanceof BlockPosition ot) { return ot.x == x && ot.y == y && ot.z == z; } diff --git a/src/main/java/com/volmit/adapt/util/IO.java b/src/main/java/com/volmit/adapt/util/IO.java index 1c1dbb62..ab29e32b 100644 --- a/src/main/java/com/volmit/adapt/util/IO.java +++ b/src/main/java/com/volmit/adapt/util/IO.java @@ -609,7 +609,7 @@ public static byte[] toByteArray(Reader input, String encoding) throws IOExcepti * @return the requested byte array * @throws NullPointerException if the input is null * @throws IOException if an I/O error occurs (never occurs) - * @deprecated Use {@link String#getBytes()} + * @Deprecated Use {@link String#getBytes()} */ public static byte[] toByteArray(String input) throws IOException { return input.getBytes(); @@ -743,7 +743,7 @@ public static String toString(Reader input) throws IOException { * @return the requested String * @throws NullPointerException if the input is null * @throws IOException if an I/O error occurs (never occurs) - * @deprecated Use {@link String#String(byte[])} + * @Deprecated Use {@link String#String(byte[])} */ public static String toString(byte[] input) throws IOException { return new String(input); @@ -764,7 +764,7 @@ public static String toString(byte[] input) throws IOException { * @return the requested String * @throws NullPointerException if the input is null * @throws IOException if an I/O error occurs (never occurs) - * @deprecated Use {@link String#String(byte[], String)} + * @Deprecated Use {@link String#String(byte[], String)} */ public static String toString(byte[] input, String encoding) throws IOException { if (encoding == null) { diff --git a/src/main/java/com/volmit/adapt/util/JSONArray.java b/src/main/java/com/volmit/adapt/util/JSONArray.java index 8b1c4360..71bc59b1 100644 --- a/src/main/java/com/volmit/adapt/util/JSONArray.java +++ b/src/main/java/com/volmit/adapt/util/JSONArray.java @@ -694,7 +694,7 @@ public JSONArray put(double value) throws JSONException { * @return this. */ public JSONArray put(int value) { - this.put( Integer.valueOf(value)); + this.put(Integer.valueOf(value)); return this; } @@ -705,7 +705,7 @@ public JSONArray put(int value) { * @return this. */ public JSONArray put(long value) { - this.put( Long.valueOf(value)); + this.put(Long.valueOf(value)); return this; } diff --git a/src/main/java/com/volmit/adapt/util/M.java b/src/main/java/com/volmit/adapt/util/M.java index 553dcfb2..f899d293 100644 --- a/src/main/java/com/volmit/adapt/util/M.java +++ b/src/main/java/com/volmit/adapt/util/M.java @@ -258,7 +258,7 @@ public static float tan(float a) { /** * Biggest number * - * @param numbers the numbers + * @param doubles the numbers * @return the biggest one */ @SuppressWarnings("unchecked") @@ -344,24 +344,24 @@ public static boolean within(int from, int to, int is) { return is >= from && is <= to; } - /** - * Get the amount of days past since the epoch time (1970 jan 1 utc) - * - * @return the epoch days - */ - public static long epochDays() { - return epochDays(M.ms()); - } - - /** - * Get the amount of days past since the epoch time (1970 jan 1 utc) - * - * @param ms the time in milliseconds - * @return the epoch days - */ - private static long epochDays(long ms) { - return ms / 1000 / 60 / 60 / 24; - } +// /** +// * Get the amount of days past since the epoch time (1970 jan 1 utc) +// * +// * @return the epoch days +// */ +// public static long epochDays() { +// return epochDays(M.ms()); +// } +// +// /** +// * Get the amount of days past since the epoch time (1970 jan 1 utc) +// * +// * @param ms the time in milliseconds +// * @return the epoch days +// */ +// private static long epochDays(long ms) { +// return ms / 1000 / 60 / 60 / 24; +// } private static float sinLookup(int a) { return a >= 0 ? sin[a % (modulus)] : -sin[-a % (modulus)]; diff --git a/src/main/java/com/volmit/adapt/util/Tuple3d.java b/src/main/java/com/volmit/adapt/util/Tuple3d.java index 9bebe232..f3ea1074 100644 --- a/src/main/java/com/volmit/adapt/util/Tuple3d.java +++ b/src/main/java/com/volmit/adapt/util/Tuple3d.java @@ -284,7 +284,7 @@ public final void scaleAdd(double s, Tuple3d t1, Tuple3d t2) { /** - * @deprecated Use scaleAdd(double,Tuple3d) instead + * @Deprecated Use scaleAdd(double,Tuple3d) instead */ public final void scaleAdd(double s, Tuple3f t1) { scaleAdd(s, new Point3d(t1)); @@ -398,7 +398,7 @@ public boolean epsilonEquals(Tuple3d t1, double epsilon) { /** - * @deprecated Use clamp(double,double,Tuple3d) instead + * @Deprecated Use clamp(double,double,Tuple3d) instead */ public final void clamp(float min, float max, Tuple3d t) { clamp(min, (double) max, t); @@ -442,7 +442,7 @@ public final void clamp(double min, double max, Tuple3d t) { /** - * @deprecated Use clampMin(double,Tuple3d) instead + * @Deprecated Use clampMin(double,Tuple3d) instead */ public final void clampMin(float min, Tuple3d t) { clampMin((double) min, t); @@ -479,7 +479,7 @@ public final void clampMin(double min, Tuple3d t) { /** - * @deprecated Use clampMax(double,Tuple3d) instead + * @Deprecated Use clampMax(double,Tuple3d) instead */ public final void clampMax(float max, Tuple3d t) { clampMax((double) max, t); @@ -530,7 +530,7 @@ public final void absolute(Tuple3d t) { /** - * @deprecated Use clamp(double,double) instead + * @Deprecated Use clamp(double,double) instead */ public final void clamp(float min, float max) { clamp(min, (double) max); @@ -566,7 +566,7 @@ public final void clamp(double min, double max) { /** - * @deprecated Use clampMin(double) instead + * @Deprecated Use clampMin(double) instead */ public final void clampMin(float min) { clampMin((double) min); @@ -587,7 +587,7 @@ public final void clampMin(double min) { /** - * @deprecated Use clampMax(double) instead + * @Deprecated Use clampMax(double) instead */ public final void clampMax(float max) { clampMax((double) max); @@ -617,7 +617,7 @@ public final void absolute() { /** - * @deprecated Use interpolate(Tuple3d,Tuple3d,double) instead + * @Deprecated Use interpolate(Tuple3d,Tuple3d,double) instead */ public final void interpolate(Tuple3d t1, Tuple3d t2, float alpha) { interpolate(t1, t2, (double) alpha); @@ -640,7 +640,7 @@ public final void interpolate(Tuple3d t1, Tuple3d t2, double alpha) { /** - * @deprecated Use interpolate(Tuple3d,double) instead + * @Deprecated Use interpolate(Tuple3d,double) instead */ public final void interpolate(Tuple3d t1, float alpha) { interpolate(t1, (double) alpha); diff --git a/src/main/java/com/volmit/adapt/util/Tuple4d.java b/src/main/java/com/volmit/adapt/util/Tuple4d.java index e14f0227..ea83e34d 100644 --- a/src/main/java/com/volmit/adapt/util/Tuple4d.java +++ b/src/main/java/com/volmit/adapt/util/Tuple4d.java @@ -324,7 +324,7 @@ public final void scaleAdd(double s, Tuple4d t1, Tuple4d t2) { /** - * @deprecated Use scaleAdd(double,Tuple4d) instead + * @Deprecated Use scaleAdd(double,Tuple4d) instead */ public final void scaleAdd(float s, Tuple4d t1) { scaleAdd((double) s, t1); @@ -448,7 +448,7 @@ public int hashCode() { /** - * @deprecated Use clamp(double,double,Tuple4d) instead + * @Deprecated Use clamp(double,double,Tuple4d) instead */ public final void clamp(float min, float max, Tuple4d t) { clamp(min, (double) max, t); @@ -500,7 +500,7 @@ public final void clamp(double min, double max, Tuple4d t) { /** - * @deprecated Use clampMin(double,Tuple4d) instead + * @Deprecated Use clampMin(double,Tuple4d) instead */ public final void clampMin(float min, Tuple4d t) { clampMin((double) min, t); @@ -543,7 +543,7 @@ public final void clampMin(double min, Tuple4d t) { /** - * @deprecated Use clampMax(double,Tuple4d) instead + * @Deprecated Use clampMax(double,Tuple4d) instead */ public final void clampMax(float max, Tuple4d t) { clampMax((double) max, t); @@ -601,7 +601,7 @@ public final void absolute(Tuple4d t) { /** - * @deprecated Use clamp(double,double) instead + * @Deprecated Use clamp(double,double) instead */ public final void clamp(float min, float max) { clamp(min, (double) max); @@ -643,7 +643,7 @@ public final void clamp(double min, double max) { /** - * @deprecated Use clampMin(double) instead + * @Deprecated Use clampMin(double) instead */ public final void clampMin(float min) { clampMin((double) min); @@ -664,7 +664,7 @@ public final void clampMin(double min) { /** - * @deprecated Use clampMax(double) instead + * @Deprecated Use clampMax(double) instead */ public final void clampMax(float max) { clampMax((double) max); @@ -698,7 +698,7 @@ public final void absolute() { /** - * @deprecated Use interpolate(Tuple4d,Tuple4d,double) instead + * @Deprecated Use interpolate(Tuple4d,Tuple4d,double) instead */ public void interpolate(Tuple4d t1, Tuple4d t2, float alpha) { interpolate(t1, t2, (double) alpha); @@ -722,7 +722,7 @@ public void interpolate(Tuple4d t1, Tuple4d t2, double alpha) { /** - * @deprecated Use interpolate(Tuple4d,double) instead + * @Deprecated Use interpolate(Tuple4d,double) instead */ public void interpolate(Tuple4d t1, float alpha) { interpolate(t1, (double) alpha); diff --git a/src/main/resources/fi_FI.json b/src/main/resources/fi_FI.json index fb4c8f92..6641d643 100644 --- a/src/main/resources/fi_FI.json +++ b/src/main/resources/fi_FI.json @@ -2,23 +2,23 @@ "advancement": { "challenge_move_1k": { "title": "Täytyy liikkua!", - "description": "Kävele yli 1 kilometri (1 000 korttelin)" + "description": "Kävele yli 1 kilometri (1 000 palikkaa)" }, "challenge_sprint_5k": { - "title": "Sprint 5K!", - "description": "Kävele yli 5 kilometriä (5 000 lohkoa)" + "title": "Juokse 5K!", + "description": "Kävele yli 5 kilometriä (5 000 palikkaa)" }, "challenge_sprint_50k": { "title": "Zoomaa 50K!", - "description": "Kävele yli 50 kilometriä (50 000 korttelia)" + "description": "Kävele yli 50 kilometriä (50 000 palikkaa)" }, "challenge_sprint_500k": { "title": "Läpi universumissa!!", - "description": "Kävele yli 500 kilometriä (500 000 korttelia)" + "description": "Kävele yli 500 kilometriä (500 000 palikkaa)" }, "challenge_sprint_marathon": { - "title": "Sprintti (kirjaimellinen) maraton!", - "description": "Sprint yli 42 195 lohkoa!" + "title": "Juokse (kirjaimellinen) Maratoni!", + "description": "Juokse yli 42 195 palikkaa!" }, "challenge_place_1k": { "title": "Aloitteleva rakentaja!", @@ -38,162 +38,217 @@ }, "challenge_place_5m": { "title": "Symmetry's Acolyte!", - "description": "TODELLISUUS ON LEIKKIPENTÄSI! (5 miljoonaa lohkoa)" + "description": "TODELLISUUS ON LEIKKIKENTTÄSI! (5 miljoonaa palikkaa)" }, "challenge_chop_1k": { "title": "Aloitteleva metsämies!", - "description": "Aseta 1000 Palikkaa" + "description": "Kaada 1000 Palikkaa" }, "challenge_chop_5k": { "title": "Keskitason metsuri!", - "description": "Aseta 5 000 palikkaa" + "description": "Kaada 5 000 palikkaa" }, "challenge_chop_50k": { "title": "Edistynyt metsuri!", - "description": "Aseta 50 000 palikkaa\n" + "description": "Kaada 50 000 palikkaa\n" }, "challenge_chop_500k": { "title": "Mestari Metsuri!", - "description": "Aseta 500 000 Palikkaa" + "description": "Kaada 500 000 Palikkaa" }, "challenge_chop_5m": { "title": "Koira Jackson", - "description": "Paras hyvä Poika! (5 miljoonaa lohkoa)" + "description": "Paras Poika! (5 miljoonaa palikkaa)" }, "challenge_block_1k": { - "title": "Huonosti esto!", - "description": "Estä 1000 osumaa" + "title": "Hienosti Torjuttu!", + "description": "Torju 1000 osumaa" }, "challenge_block_5k": { - "title": "Estäminen on hauskaa!", - "description": "Estä 5000 osumaa" + "title": "Torjuminen on hauskaa!", + "description": "Torju 5000 osumaa" }, "challenge_block_50k": { - "title": "Estäminen on elämäni!", - "description": "Estä 50 000 osumaa" + "title": "Torjuminen on elämäni!", + "description": "Torju 50 000 osumaa" }, "challenge_block_500k": { - "title": "Estäminen on tarkoitukseni!", - "description": "Estä 500 000 osumaa" + "title": "Torjuminen on Tarkoitukseni!", + "description": "Torju 500 000 osumaa" }, "challenge_block_5m": { - "title": "Die Hand Die Verletzt", - "description": "Estä 5 000 000 osumaa" + "title": "Kuole Käsiin Kuolkaa Heikot", + "description": "Torju 5 000 000 osumaa" }, "challenge_brew_1k": { - "title": "Aloitteleva alkemisti!", - "description": "Käytä 1000 juomaa" + "title": "Aloitteleva Alkemisti!", + "description": "Käytä 1000 Taikajuomaa" }, "challenge_brew_5k": { - "title": "Keskitason alkemisti!", - "description": "Käytä 5000 juomaa" + "title": "Keskitason Alkemisti!", + "description": "Käytä 5000 Taikajuomaa" }, "challenge_brew_50k": { "title": "Edistynyt alkemisti!", - "description": "Käytä 50 000 juomaa" + "description": "Käytä 50 000 Taikajuomaa" }, "challenge_brew_500k": { "title": "Mestari alkemisti!", - "description": "Käytä 500 000 juomaa" + "description": "Käytä 500 000 Taikajuomaa" }, "challenge_brew_5m": { "title": "Alkemisti", - "description": "Käytä 5 000 000 juomaa" + "description": "Käytä 5 000 000 Taikajuomaa" }, "challenge_brewsplash_1k": { - "title": "Noviisi Potion-Splasher!", - "description": "Splash 1000 juomaa" + "title": "Noviisi Taikajuomien Heittelijä", + "description": "Heitä 1000 Taikajuomaa" }, "challenge_brewsplash_5k": { - "title": "Keskitason Potion-Splasher!", - "description": "Splash 5000 juomaa" + "title": "Keskitason Taikajuomien-Heittelijä!", + "description": "Heitä 5000 Taikajuomaa" }, "challenge_brewsplash_50k": { - "title": "Advanced Potion-Splasher!", - "description": "Suihkuta 50 000 juomaa" + "title": "Edistynyt Taikajuomien-Heittelijä!", + "description": "Heitä 50 000 Taikajuomaa" }, "challenge_brewsplash_500k": { - "title": "Mestari Potion-Splasher!", - "description": "Purista 500 000 juomaa" + "title": "Mestari Taikajuomien-Heittelijä!", + "description": "Heitä 500 000 juomaa" }, "challenge_brewsplash_5m": { - "title": "Splash Meister", - "description": "Suihkuta 5 000 000 juomaa" + "title": "Mestari Heittelijä", + "description": "Heitä 5 000 000 Taikajuomaa" }, "challenge_craft_1k": { "title": "Taitava käsityöläinen!", - "description": "Käsityö 1000 esinettä" + "description": "Valmista 1000 Esinettä" }, "challenge_craft_5k": { - "title": "Pirteä käsityöläinen!", - "description": "Käsityö 5000 esinettä" + "title": "Pirteä Käsityöläinen!", + "description": "Valmista 5000 esinettä" }, "challenge_craft_50k": { - "title": "Cervile Crafter!", - "description": "Käsityö 50 000 esinettä" + "title": "Servile Käsityöläinen!", + "description": "Valmista 50 000 Esinettä" }, "challenge_craft_500k": { - "title": "Kakofoninen käsityöläinen!", - "description": "Käsityö 500 000 esinettä" + "title": "Kakofoninen Käsityöläinen!", + "description": "Valmista 500 000 Esinettä" }, "challenge_craft_5m": { - "title": "Surkea McCraftface", - "description": "Käsittele 5 000 000 esinettä" + "title": "Mestari Käsityöläinen", + "description": "Valmista 5 000 000 Esinettä" + }, + "challenge_enchant_1k": { + "title": "Noviisi Lumooja!", + "description": "Lumoa 1000 Tavaraa" + }, + "challenge_enchant_5k": { + "title": "Keskitason Lumooja!", + "description": "Lumoa 5000 Tavaraa" + }, + "challenge_enchant_50k": { + "title": "Kehittynyt Lumooja!", + "description": "Lumoa 50 000 Tavaraa" + }, + "challenge_enchant_500k": { + "title": "Mestari Lumooja!", + "description": "Lumoa 500 000 Esinettä" + }, + "challenge_enchant_5m": { + "title": "Engimaattinen Lumooja!", + "description": "Lumoa 5 000 000 Tavaraa" + }, + "challenge_excavate_1k": { + "title": "Kaivaja Tulokas!", + "description": "Kaiva 1000 Palikkaa" + }, + "challenge_excavate_5k": { + "title": "Kehittynyt Kaivaja!", + "description": "Kaiva 5000 Palikkaa" + }, + "challenge_excavate_50k": { + "title": "Edistynyt Kaivaja!", + "description": "Kaiva 50 000 Palikkaa" + }, + "challenge_excavate_500k": { + "title": "Mestari Kaivaja!", + "description": "Kaiva 500 000 Palikkaa" + }, + "challenge_excavate_5m": { + "title": "Insinööri Kaivaja", + "description": "Kaiva 5 000 000 Palikkaa" + } + }, + "items": { + "boundenderperal": { + "usage1": "Shift + Vasen Klikkaa to bind", + "usage2": "Oikea Klikkaa to access the bound Inventory" + }, + "boundeyeofender": { + "usage1": "Oikea Klikkaa to consume and teleport to the bound location", + "usage2": "Shift + Vasen Klikkaa to bind to a block" + }, + "boundredstonetorch": { + "name": "Punakivi Säädin", + "usage1": "Oikea Klikkaa tehdäksesi 1-Tick Punakivi signaali", + "usage2": "Shift + Vasen Klikkaa 'Kohde'-Palikkaa sitoaksesi" } }, "snippets": { "gui": { - "level": "leveli", + "level": "Taso", "knowledge": "tietämys", "powerused": "Voimaa käytetty", - "notlearned": "Et ole oppinut", + "notlearned": "Et ole Oppinut", "xp": "XP to", "welcome": "Tervetuloa!", "welcomeback": "Tervetuloa takaisin!", "xpbonusfortime": "XP varten", - "unlockthisbyclicking": "Avaa tämä napsauttamalla hiiren oikealla painikkeella Adapt Blockia!", + "unlockthisbyclicking": "Avaa tämä napsauttamalla hiiren oikealla painikkeella Adapt Palikkaa!", "back": "Takaisin", - "unlearnall": "Unohda kaikki oppimasi", - "unlearnedall": "Unohda kaikki oppimasi" + "unlearnall": "Unohda kaikki", + "unlearnedall": "Kaikki unohdetut" }, "adaptmenu": { "maynotunlearn": "ET VOI POISTAA OPPIMISTA", - "mayunlearn": "SAAT OPPIA/POISTAA", + "mayunlearn": "VOIT OPPIA/EPÄ OPPIA", "knowledgecost": "Tietämys Hinta", "alreadylearned": "Olet jo oppinut", - "unlearnrefund": "Napsauta lopettaaksesi oppimisen ja hyvityksen", - "norefunds": "HARDCORE, REFUNDIT POIS PÄÄLTÄ", + "unlearnrefund": "Klikkaa Unohtaaksesi oppi & Hyvitys", + "norefunds": "HARDCORE, HYVITYKSET POIS PÄÄLTÄ", "knowledge": "Tietämys", "clicklearn": "Klikkaa oppiaksesi", - "noknowledge": "(Sinulla ei ole tarpeeksi tietämystä)", + "noknowledge": "(Sinulla ei ole yhtään Tietämystä)", "youonlyhave": "Sinulla on vain", "howtolevelup": "Nosta taitojasi lisätäksesi maksimitehoasi.", - "notenoughpower": "Teho ei riitä! Jokainen kykytaso maksaa 1 tehon.", + "notenoughpower": "Teho ei riitä! Jokainen taitotaso maksaa 1 tehon.", "power": "voima", "powerdrain": "Virran tyhjennys", "learned": "Oppinut", - "unlearned": "Unohda oppimasi" + "unlearned": "Unohdetut opit" }, "knowledgeorb": { "contains": "sisältää", - "knowledge": "Tietämys", + "knowledge": "tietämys", "rightclick": "Oikea-Klikkaa", - "togainknowledge": "saadakseen tämän tiedon", - "knowledgeorb": "Knowledge Orb" + "togainknowledge": "saadakseen tämän tietämyksen", + "knowledgeorb": "Tietämys Kuula" }, "experienceorb": { "contains": "sisältää", "xp": "Kokemus", - "rightclick": "Oikea Klikkaa", + "rightclick": "Oikea-Klikkaa", "togainxp": "saadakseen tämän kokemuksen", - "xporb": "Koe Orb" + "xporb": "Kokemus Kuula" } }, "skill": { "agility": { "name": "Ketteryys", "icon": "⇉", - "description": "Agility on kykyä liikkua nopeasti ja sujuvasti esteiden edessä." + "description": "Ketteryys on kykyä liikkua nopeasti ja sujuvasti esteiden edessä." }, "architect": { "name": "Arkkitehti", @@ -202,18 +257,18 @@ }, "axes": { "name": "Kirveet", - "icon": "❖", - "description1": "Miksi kaataa puita, kun voisi kaataa", + "icon": "🪓", + "description1": "Miksi kaataa puita, kun voit kaataa", "description2": "asiat", "description3": "sen sijaan sama lopputulos!" }, "brewing": { "name": "Panimo", "icon": "❦", - "description": "Double Bubble, Triple Bubble, Quadruple Bubble - En edelleenkään voi laittaa tätä juomaa kattilaan" + "description": "Double Bubble, Triple Bubble, Quadruple Bubble - En edelleenkään voi laittaa tätä taikajuomaa kattilaan" }, "blocking": { - "name": "Estäminen", + "name": "Torjuminen", "icon": "▒", "description": "Kepit ja kivet eivät riko luita, mutta kilpi sen tekee." }, @@ -234,11 +289,11 @@ }, "excavation": { "name": "Kaivaminen", - "icon": "✥", - "description": "Diggey Diggey reikä..." + "icon": "ᛳ", + "description": "Kaiva Kaiva reikä..." }, "herbalism": { - "name": "Herbalismi", + "name": "Maanviljely", "icon": "⚘", "description": "En löydä kasveja, mutta voin löytää siemeniä ja - onko se... Rikkaruoho?" }, @@ -250,7 +305,7 @@ "nether": { "name": "Horna", "icon": "₪", - "description": "Itse Alankomaiden syvyyksistä." + "description": "Itse Hornan syvyyksistä." }, "pickaxe": { "name": "Hakku", @@ -263,9 +318,9 @@ "description": "Etäisyys on avain voittoon ja avain selviytymiseen." }, "rift": { - "name": "Rift", + "name": "Maagisuus", "icon": "❍", - "description": "Rift on syövyttävä valjaat, mutta olet valjastanut valjaat." + "description": "Maagisuus on syövyttävä valjaat, mutta olet valjastanut valjaat." }, "seaborne": { "name": "Merellä", @@ -273,14 +328,14 @@ "description": "Tällä taidolla voit tehdä veden ihmeitä" }, "stealth": { - "name": "Stealth", + "name": "Salakavaluus", "icon": "✠", "description": "Näkymättömän taide. Kävele varjoissa." }, "swords": { "name": "Miekat", "icon": "⚔", - "description": "GreyStonen voimalla!" + "description": "Harmaan kiven voima!" }, "taming": { "name": "Kesyttäminen", @@ -288,85 +343,90 @@ "description": "Papukaijat ja mehiläiset... ja sinä?" }, "tragoul": { - "name": "TragOul", - "icon": "▼", + "name": "Vampyrismi", + "icon": "🗡", "description": "Veri virtaa universumin suonissa. Käsien puristama." }, "chronos": { "name": "Chronos", - "icon": "۞", + "icon": "⏳", "description": "Pyöritä universumin kelloa, koe virtaus. Riko kello, tule siitä." }, "unarmed": { "name": "Aseeton", - "icon": "⚜", + "icon": "»", "description": "Ilman asetta ei ole ilman voimaa" } }, "agility": { "armorup": { - "name": "Armor-Up", - "description": "Hanki enemmän panssaria, mitä pidempään sprintit!", + "name": "Nouseva Panssarointi", + "description": "Hanki enemmän panssaria, mitä pidempään juokset!", "lore1": "Maximi Armori", - "lore2": "Armor-up-aika" + "lore2": "Nouseva Panssarointi Aika" }, "superjump": { - "name": "Super hyppy", + "name": "Super Hyppy", "description": "Poikkeuksellinen korkeusetu", "lore1": "Maksimi Hyppy Korkaus", - "lore2": "Sneak + hyppää superhypyyn!" + "lore2": "Kyykkää + Hyppää tehdäksesi Superhyppy!" }, "walljump": { "name": "Seinähyppy", "description": "Pidä vaihtoa painettuna seinää vasten ja hyppää!", - "lore1": "Max hyppää", + "lore1": "Maksimi Hypyt", "lore2": "Hyppykorkeus" }, "windup": { - "name": "Päästä ylös", + "name": "Lisääntyvä Nopeus", "description": "Ole nopeampi mitä pidempään sprintit!", "lore1": "Maksimi nopeus", - "lore2": "Päättymisaika" + "lore2": "Lisääntyvä Nopeus Aika" } }, "architect": { "foundation": { - "name": "Magic Foundation", + "name": "Maaginen Silta", "description": "Näin voit livahtaa ja asettaa alallesi väliaikaisen perustan!", "lore1": "Maagisesti luo: ", - "lore2": "Lohkot allasi!" + "lore2": "Palikat allasi!" }, "glass": { - "name": "Silkkikosketuslasi", + "name": "Silkkinen Lasi Kosketus", "description": "Näin voit olennaisesti estää lasipalojen katoamisen, kun rikot ne tyhjällä kädellä!", "lore1": "Kätesi saavat silkkisen kosketuksen Glassia varten" }, + "wirelessredstone": { + "name": "Punakivi Säädin", + "description": "Tämän avulla voit käyttää Redstone-soihtua Redstonen virroittamiseen etänä!", + "lore1": "Kohde + Punakivi Soihtu + Enderperal = 1 Punakivi Säädin" + }, "placement": { "name": "Rakentajan Sauva", - "description": "Voit asettaa useita lohkoja kerralla aktivoidaksesi Sneakin, ja pidä lohkoa, joka vastaa ulkonäköäsi lohkoa ja paikkaa! Muista, että saatat joutua liikkumaan hieman laatikoiden rajaamisen käynnistämiseksi!", + "description": "Voit asettaa useita palikoita kerralla aktivoidaksesi Sneakin. Pidä palikkaa kädessä, joka vastaa palikkaa jota katsot! Muista, että saatat joutua liikkumaan hieman laatikoiden rajaamisen käynnistämiseksi!", "lore1": "Sinä tarvitset", "lore2": "lohkoja kädessäsi tämän sijoittamiseksi", - "lore3": "Material Builders Wand" + "lore3": "Materiaali Rakentajan Sauva" } }, "axe": { "chop": { - "name": "Kirves Chop", + "name": "Kirveellä Hakkaus", "description": "Katkaise puita hiiren oikealla painikkeella pohjalokia!", - "lore1": "Blocks per Chop", - "lore2": "Leikkaa Cooldown", + "lore1": "Palikkaa per Hakkaus", + "lore2": "Hakkaus Odotusaika", "lore3": "Työkalujen kuluminen" }, "logswap": { - "name": "Lucy's Log-Swappper", + "name": "Onnekas Puun-Vaihtaja", "description": "Muuta hirsien makua askartelupöydässä!", "lore1": "8 tukki mitä tahansa + 1 taimi = 8 tukki taimen tyyppiä" }, "droptoinventory": { - "name": "Axe Drop-To-Inventory" + "name": "Kirves Pudottaa Tavaraluetteloon" }, "groundsmash": { - "name": "Axe Ground Smash", + "name": "Kirves Murskaus", "description": "Hyppää, kyyristy ja murskaa kaikki lähellä olevat viholliset.", "lore1": "Vahinko", "lore2": "Estä säde", @@ -377,26 +437,26 @@ "name": "Lehtien kaivosmies", "description": "Voit katkaista lehtiä kerralla!", "lore1": "Hiipiä, ja MINUN LÄHTEENI", - "lore2": "valikoima Leaf-kaivostoimintaa", - "lore3": "Et saa pisaroita lehdistä (Exploit Prevention)" + "lore2": "Alueellinen Lehtien-leikkaus", + "lore3": "Et saa pisaroita lehdistä (Räjähdys suoja)" }, "woodminer": { - "name": "Puun kaivosmies", + "name": "Puunkaataja", "description": "Mahdollistaa irtopuun murtamisen kerralla!", "lore1": "Hiipiä ja louhi PUU/TUKKI (ei lankkuja)", - "lore2": "valikoima puunlouhintaa", + "lore2": "alueellinen Puunkaato", "lore3": "Toimii pudottamalla varastoon" } }, "brewing": { "lingering": { - "name": "Viipyvä Brew", - "description": "Valmistetut juomat kestävät pidempään!", + "name": "Viipyvä Hautuminen", + "description": "Valmistetut taikajuomat kestävät pidempään!", "lore1": "Kesto", "lore2": "Kesto" }, "superheated": { - "name": "Super lämmitetty olut", + "name": "Super Lämmitetty Hautuminen", "description": "Keittotelineet toimivat sitä nopeammin mitä kuumempia ne ovat.", "lore1": "Koskettavan palolohkon mukaan", "lore2": "Koskettavaa laavalohkoa kohden" @@ -408,64 +468,64 @@ "lore2": "On huomattava, että tämä estää pelaajaa Juoksemasta!" }, "haste": { - "name": "Pullotettu kiire", + "name": "Pullotettu Kiire", "description": "Kun tehokkuus ei riitä", "lore1": "Speed Potion + ametistin sirpale = Potion of Haste (60 sekuntia)", - "lore2": "Speed Potion + Ametistipala = Potion of Haste-2 (30 sekuntia)" + "lore2": "Välitön Paraneminen + Ametisti Palikka = Tehokkuus Taikajuoma-2 (30 sekuntia)" }, "absorption": { - "name": "Pullotettu imeytyminen", - "description": "Koveta kehoa!", - "lore1": "Speed Potion + Quartz = Potion of Absorptio (60 sekuntia)", - "lore2": "Speed Potion + Quartz Block = Potion of Absorption-2 (30 sekuntia)" + "name": "Pullotettu Imeytyminen", + "description": "Koveta keho!", + "lore1": "Nopeus Taikajuoma + Quartz = Imeytymisen Taikajuoma (60 sekuntia)", + "lore2": "Nopeus Taikajuoma + Quartz Palikka = Imeytymisen Taikajuoma-2 (30 sekuntia)" }, "fatigue": { "name": "Pullotettu väsymys", "description": "Heikentää kehoa!", - "lore1": "Heikkousjuoma + Limapallo = Väsymysjuoma (30 sekuntia)", - "lore2": "Heikkousjuoma + Slime Block = Väsymysjuoma-2 (15 sekuntia)" + "lore1": "Heikkoustaikajuoma + Limapallo = Väsymystaikajuoma (30 sekuntia)", + "lore2": "Heikkoustaikajuoma + Slime Block = Väsymystaikajuoma-2 (15 sekuntia)" }, "hunger": { - "name": "Pullotettu nälkä", + "name": "Pullotettu Nälkä", "description": "Ruoki kyltymättömiä!", - "lore1": "Kiusallinen juoma + mätä liha = nälkäjuoma (30 sekuntia)", - "lore2": "Heikkousjuoma + Mätä liha = Nälkäjuoma-3 (15 sekuntia)" + "lore1": "Kiusallinen taikajuoma + mätä liha = nälkätaikajuoma (30 sekuntia)", + "lore2": "Heikkoustaikajuoma + Mätä liha = Nälkätaikajuoma-3 (15 sekuntia)" }, "nausea": { "name": "Pullotettu pahoinvointi", "description": "Olet kauhea ihminen...", - "lore1": "Kiusallinen juoma + ruskea sieni = pahoinvointijuoma (16 sekuntia)", - "lore2": "Awkward Potion + Crimson Fungus = Pahoinvointijuoma-2 (8 sekuntia)" + "lore1": "Kiusallinen taikajuoma + Ruskea Sieni = Pahoinvointi Taikajuoma (16 sekuntia)", + "lore2": "Awkward Potion + Crimson Fungus = Pahoinvointi taikajuoma-2 (8 sekuntia)" }, "blindness": { "name": "Pullotettu sokeus", "description": "Olet kauhea ihminen...", "lore1": "Awkward Potion + mustesäkki = Potion of Blindness (30 sekuntia)", - "lore2": "Hankala juoma + hehkuva mustesäkki = sokeuden juoma-2 (15 sekuntia)" + "lore2": "Hankala taikajuoma + hehkuva mustesäkki = sokeuden taikajuoma-2 (15 sekuntia)" }, "resistance": { "name": "Pullotettu vastustuskyky", "description": "Linnoitus parhaimmillaan!", - "lore1": "Hankala juoma + rautaharkko = vastustusjuoma (60 sekuntia)", + "lore1": "Hankala taikajuoma + rautaharkko = vastustus taikajuoma (60 sekuntia)", "lore2": "Awkward Potion + Iron Block = Potion of Resistance-2 (30 sekuntia)" }, "healthboost": { "name": "Pullotettu elämä", "description": "Kun maksimaalinen terveys ei riitä...", - "lore1": "Välittömästi parantava juoma + kultainen omena = terveyttä vahvistava juoma (120 sekuntia)", - "lore2": "Välittömästi parantava juoma + Lumottu kultainen omena = Potion of Health Boost-2 (120 sekuntia)" + "lore1": "Välittömästi parantava taikajuoma + kultainen omena = terveyttä vahvistava taikajuoma (120 sekuntia)", + "lore2": "Välittömästi parantava taikajuoma + Lumottu kultainen omena = Enemmän elämiä Taikajuoma-2 (120 sekuntia)" }, "decay": { "name": "Pullotettu hajoaminen", "description": "Kuka tiesi, että Detritus olisi niin hyödyllinen?", - "lore1": "Heikkousjuoma + Myrkyllinen peruna = Säkäjuoma (16 sekuntia)", - "lore2": "Heikkousjuoma + Crimson Roots = Säkäjuoma-2 (8 sekuntia)" + "lore1": "Heikkous taikajuoma + Myrkyllinen peruna = Wither taikajuoma (16 sekuntia)", + "lore2": "Heikkous taikajuoma + Crimson Roots = Wither taikajuoma-2 (8 sekuntia)" }, "saturation": { "name": "Pullotettu kylläisyys", "description": "Tiedätkö, minulla ei ole edes nälkä...", - "lore1": "Regen-juoma + uuniperuna = kyllästysjuoma (120 sekuntia)", - "lore2": "Regen Potion + Hay Bale = Kyllästysjuoma (120 sekuntia)" + "lore1": "Parannu nopeammin taikajuoma + uuniperuna = kyllästys taikajuoma (120 sekuntia)", + "lore2": "Prannu nopeammin taikajuoma + Heinäpaali = Kyllästys taikajuoma (120 sekuntia)" } }, "blocking": { @@ -486,7 +546,7 @@ }, "multiarmor": { "name": "Multi-Armor", - "description": "Sido Elytras panssariin", + "description": "Sido Elytra panssariin", "lore1": "Tämä on uskomaton taito matkustamiseen.", "lore2": "yhdistä ja muuta Armor/Elytra dynaamisesti lennossa!", "lore3": "yhdistääksesi siirrä napsautusluettelon kohdetta toisen päälle.", @@ -520,15 +580,21 @@ "lore3": "XSX: Nahka, tynnyrilaatikko, nahka", "lore4": "XCX: Nahka, rintakehä, nahka" }, + "stations": { + "name": "Kannettavat Pöydät!", + "description": "Käytä pöytää kädessäsi!", + "lore2": "KAIKKI TAVARAT, JOTKA UNOHDAT PÖYDÄLLE, MENETÄT NE IKUISESTII!", + "lore3": "Kelvolliset pöydät: Alasin, Työpöytä, Tahko, Karttapöytä, Kivileikkuri, Kangaspuut" + }, "skulls": { "name": "Muodostettavat pääkallot!", "description": "Materiaalien avulla voit valmistaa Mob-kalloja!", "lore1": "Ympäröi luulohko seuraavilla aineilla saadaksesi kallon:", - "lore2": "Zombie: Rotting Flesh", + "lore2": "Zombi: Mädäntynyt Liha", "lore3": "Luuranko: Luu", - "lore4": "Creeper: Gunpowder", - "lore5": "Säkä: Nether Brick", - "lore6": "Dragon: Dragons Breath" + "lore4": "Lurkki: Ruuti", + "lore5": "Witheri: Nether Tiili", + "lore6": "Lohikäärme: Lohikäärmeen Henkäys" } }, "discovery": { @@ -591,7 +657,7 @@ "name": "Lapio Drop-To-Inventory" }, "omnitool": { - "name": "OMNI - T.O.O.L.", + "name": "OMNI - T.Y.Ö.K.A.L.U.", "description": "Tacklen ylisuunniteltu ylellinen Leatherman", "lore1": "Luultavasti tehokkain monista antaa sinulle mahdollisuuden", "lore2": "yhdistä ja muuta työkaluja dynaamisesti lennossa tarpeidesi mukaan.", @@ -628,7 +694,7 @@ "cobweb": { "name": "Webby Creator", "description": "Antaa sinulle mahdollisuuden luoda hämähäkinverkkoja askartelupöydässä", - "lore1": "Four String, luo hämähäkinseitin." + "lore1": "Neljä seittiä, luo hämähäkinseitin." }, "mushroomblocks": { "name": "Sienien Tekijä", @@ -639,12 +705,12 @@ "name": "Hoe Drop-To-Inventory" }, "hungryshield": { - "name": "Hungry Shield", + "name": "Nälkä Kilpi", "description": "Tee vahinkoa nälkällesi ennen terveyttäsi.", "lore1": "Nälkä vastusti" }, "luck": { - "name": "Herbalistien onni", + "name": "Maanviljelijän Onni", "description": "Kun rikot Grass/Flowersin, sinulla on mahdollisuus saada satunnainen esine", "lore0": "Kukat = ruoka ja ruoho = siemenet", "lore1": "Mahdollisuus saada esine rikkoutuneesta Flowersista", @@ -668,7 +734,7 @@ "droptoinventory": { "name": "Tuotteet pudotetaan varastoon", "description": "Kun tapat jotain / rikot lohkon miekalla, se teleporttaa pisarat varastoosi", - "lore1": "Aina kun esine putoaa väkijoukosta/blokista, rikot, se menee varastoosi, jos mahdollista." + "lore1": "Aina kun esine putoaa olennosta/rikot palikan, se menee varastoosi, jos mahdollista." }, "invisibility": { "name": "Kadonnut askel", @@ -736,13 +802,13 @@ }, "nether": { "skulltoss": { - "name": "Wither Skull Throw", - "description1": "Vapauta sisäinen kuoppasi käyttämällä", + "name": "Näivettäjän Pääkallon Ampuminen", + "description1": "Vapauta sisäinen Näivettäjäsi käyttämällä", "description2": "joku", "description3": "pää.", "lore1": "Sekuntia jäähdyttelyä kallonheittojen välillä.", - "lore2": "Wither Skullin käyttäminen: Heitä a", - "lore3": "Kuihtuva kallo", + "lore2": "Näivettäjän Pääkallon käyttäminen: Heitä a", + "lore3": "Näivettäjän Pääkallo", "lore4": "räjähtää törmäyksessä." }, "witherresist": { @@ -769,7 +835,7 @@ "droptoinventory": { "name": "Pickaxe Drop-To-Inventory", "description": "Kun rikot lohkon, se teleporttaa kohteen varastoosi", - "lore1": "Aina kun esine pudotetaan lohkosta, rikot, se menee varastoosi, jos mahdollista." + "lore1": "Aina kun rikkomasi palikka tiputtaa jotain, se menee varastoosi, jos mahdollista." }, "veinminer": { "name": "Veinminer", @@ -814,7 +880,7 @@ }, "blink": { "name": "Rift Blink", - "description": "Lyhyen matkan välitön teleportaatio, vain silmänräpäyksen päässä!", + "description": "Lyhyen matkan välitön teleportaatio, vain silmää räpsäyttämällä!", "lore1": "Blocks vilkkuessa (2x pystysuora)", "lore2": "Sprintin aikana: Kaksoisnapauta Jump to", "lore3": "Räpäytys" @@ -827,7 +893,7 @@ "gate": { "name": "Rift Gate", "description": "Teleportoi merkittyyn paikkaan.", - "lore1": "KÄSITTELY: Emerald + ametistin sirpale + Ender Pearl", + "lore1": "KÄSITTELY: Emeraldi + ametistin sirpale + Ender Pearl", "lore2": "Lue ennen käyttöä!", "lore3": "5s viive,", "lore4": "voit kuolla ollessasi tässä animaatiossa" @@ -847,7 +913,7 @@ }, "fishersfantasy": { "name": "Kalastajan Fantasia", - "description": "ansaitse enemmän XP:tä kalastuksesta ja hanki enemmän kalaa!", + "description": "Ansaitse enemmän XP:tä kalastuksesta ja hanki enemmän kalaa!", "lore1": "Jokaisella tasolla on mahdollisuus saada lisää XP:tä ja kalaa!" }, "haste": { @@ -856,88 +922,88 @@ "lore1": "Haste 3 levitetään veden alle kaivostoiminnan aikana (pinotaan AquaAffinityllä) sen jälkeen, kun vesihengitysvaikutuksesi loppuu!" }, "nightvision": { - "name": "Kilpikonnan visio", - "description": "Veden alla ollessasi saat Night Visionin", - "lore1": "Hanki vain Night Vision veden alla, kun vesihengitysvaikutuksesi loppuu!" + "name": "Kilpikonnan Näkö", + "description": "Veden alla ollessasi saat Hämäränäön", + "lore1": "Hanki vain Hämäränäön veden alla, kun vesihengitysvaikutuksesi loppuu!" }, "dolphingrace": { - "name": "Dolphin's Grace", + "name": "Delfiinin Kiito", "description": "Ui kuin delfiini, ilman delfiinejä", "lore1": "+ Passiivinen: vahvistus", - "lore2": "x nopeus (delphins grace)", - "lore3": "tarkkuus saksalainen insinööri - odota, se ei ole oikein... Ei yhteensopiva Depth Striderin kanssa" + "lore2": "x nopeus (delfiinin kiito)", + "lore3": "tarkkuus saksalainen insinööri - odota, se ei ole oikein... Ei yhteensopiva Vesivipellyksen kanssa" } }, "stealth": { "ghostarmor": { - "name": "Ghost's Armor", + "name": "Haamu Panssari", "description": "Hidas panssarin rakentaminen, kun se ei ota vahinkoa, kestää 1 osuman", - "lore1": "Maksimi Armori", + "lore1": "Maksimi Panssari", "lore2": "Nopeus\n" }, "nightvision": { - "name": "Stealth Vision", - "description": "Saat hämäränäköä hiipiessäsi", + "name": "Salakavalanäkeminen", + "description": "Saat hämäränäkö hiipiessäsi", "lore1": "Hanki räjähdys", "lore2": "yönäkö", "lore3": "hiipiessään" }, "snatch": { - "name": "Tuote Snatch", - "description": "Nappaa pudonneet tavarat heti livahdellessa!", - "lore1": "Snatch Radius" + "name": "Esine Sieppaaminen", + "description": "Nappaa pudonneet tavarat heti hiipiessä!", + "lore1": "Nappaamissäde" }, "speed": { - "name": "Sneak Speed", + "name": "Kyykkimis Nopeus", "description": "Lisää nopeutta hiipiessäsi", - "lore1": "Sneaking Speed" + "lore1": "Hiipimisnopeus" } }, "sword": { "machete": { "name": "Viidakkoveitsi", "description": "Leikkaa lehtien läpi helposti!", - "lore1": "Viisasäde", - "lore2": "Leikkaa Odotusaika", + "lore1": "Viiltosäde", + "lore2": "Puun hakkaamisen Odotusaika", "lore3": "Työkalujen kuluminen" }, "bloodyblade": { - "name": "Verinen Blade", + "name": "Verinen Terä", "description": "Iske miekallasi, aiheuta verenvuotoa!", "lore1": "Elävän olennon lyöminen miekalla aiheuttaa verenvuotoa", "lore2": "Verenvuodon kesto", - "lore3": "Bleed Cooldown" + "lore3": "Verenvuodon odotusaika" }, "poisonedblade": { "name": "Myrkytetty terä", - "description": "Iske miekallasi, aiheuta myrkkyä!", - "lore1": "Elävän olennon lyöminen miekalla aiheuttaa myrkkyä", - "lore2": "Myrkyn kesto", - "lore3": "Poison Cooldown" + "description": "Iske miekallasi, aiheuta Myrkytys!", + "lore1": "Elävän olennon lyöminen miekalla aiheuttaa myrkytyksen", + "lore2": "Myrkytyksen kesto", + "lore3": "Myrkytyksen odotusaika" } }, "taming": { "damage": { - "name": "Kesytä vahinko", + "name": "Kesytysvahinko", "description": "Kasvata kesytettyjen eläinten aiheuttamaa vahinkoa.", - "lore1": "Lisääntynyt vahinko" + "lore1": "Kasvanut vahinko" }, "health": { - "name": "Kesy Terveys", - "description": "Lisää kesytettyjen eläinten terveyttä.", - "lore1": "Lisääntynyt terveys" + "name": "Kesytys-Terveys", + "description": "Kasvattaa kesytettyjen eläinten terveyttä.", + "lore1": "Kasvanut Terveys" }, "regeneration": { - "name": "Kesytä Regeneraatio", - "description": "Lisää kesytetyn eläimen uudistumista.", - "lore1": "HP/s" + "name": "Kesytysksen Uudelleenparantuminen", + "description": "Kasvattaa kesytetyn eläimen uudellenparantumista.", + "lore1": "Elämää/sekunnissa" } }, "tragoul": { "thorns": { - "name": "Piikkejä", + "name": "Piikitys", "description": "Heijasta vahinko takaisin hyökkääjällesi!", - "lore1": "Vahinko kosti iskulla" + "lore1": "Palautettu vahinko iskusta" } }, "unarmed": { @@ -945,7 +1011,7 @@ "name": "Lasinen tykki", "description": "Bonus aseeton vahinko, mitä pienempi panssariarvosi on", "lore1": "x Vahinko 0 panssarin kohdalla", - "lore2": "PerLevel-bonusvaurio" + "lore2": "Tasollinen Bonus Vahinko" }, "power": { "name": "Aseeton voima", @@ -953,8 +1019,8 @@ "lore1": "Vahinko" }, "suckerpunch": { - "name": "Sucker Punch", - "description": "Sprinttilyöntejä, mutta tappavampia.", + "name": "Imu Lyönti", + "description": "Juoksulyöntejä, mutta tappavampia.", "lore1": "Vahinko", "lore2": "Vahinko kasvaa nopeuden myötä lyönnin aikana" } diff --git a/src/main/resources/zh_CN.json b/src/main/resources/zh_CN.json index 17fa9cfa..d2cca87b 100644 --- a/src/main/resources/zh_CN.json +++ b/src/main/resources/zh_CN.json @@ -582,6 +582,12 @@ "lore3": "XSX : 皮革,木桶,皮革", "lore4": "XCX : 皮革,箱子,皮革" }, + "stations": { + "name": "便携式工作桌!", + "description": "工作桌就在掌心上!", + "lore2": "当关闭工作桌时,所有忘记从工作桌中取出的物品都将丢失!", + "lore3": "可用工作桌:铁砧,工作台,砂轮,制图台,切石机,织布机" + }, "skulls": { "name": "可合成头颅!", "description": "用材料可以合成生物头颅!",