From 969fae53ee0017144dcc584f6fb9011eb0e0cd9f Mon Sep 17 00:00:00 2001 From: "A. Regnander" Date: Tue, 7 Dec 2021 02:21:48 +0100 Subject: [PATCH 01/12] Create sv_se.json --- .../assets/constructionwand/lang/sv_se.json | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/main/resources/assets/constructionwand/lang/sv_se.json diff --git a/src/main/resources/assets/constructionwand/lang/sv_se.json b/src/main/resources/assets/constructionwand/lang/sv_se.json new file mode 100644 index 0000000..bab195b --- /dev/null +++ b/src/main/resources/assets/constructionwand/lang/sv_se.json @@ -0,0 +1,61 @@ +{ + "item.constructionwand.stone_wand": "Stenstav", + "item.constructionwand.iron_wand": "Järnstav", + "item.constructionwand.diamond_wand": "Diamantstav", + "item.constructionwand.infinity_wand": "Oändlighetsstav", + "item.constructionwand.core_angel": "Änglastavskärna", + "item.constructionwand.core_destruction": "Rivningsstavskärna", + + "constructionwand.tooltip.blocks": "Max. %d block", + "constructionwand.tooltip.shift": "Håll ned [SHIFT]", + "constructionwand.tooltip.cores": "Stavkärnor:", + "constructionwand.tooltip.core_tip": "Kombinera kärnan med din stav i ett tillverkningsrutnät", + + "constructionwand.option.cores": "", + "constructionwand.option.cores.constructionwand:default": "Byggkärna", + "constructionwand.option.cores.constructionwand:default.desc": "Utvidga din byggnad åt sidan som är riktad mot dig", + "constructionwand.option.cores.constructionwand:core_angel": "§6Änglakärna", + "constructionwand.option.cores.constructionwand:core_angel.desc": "Placera block bakom befintliga block och i luften", + "constructionwand.option.cores.constructionwand:core_destruction": "§cRivningskärna", + "constructionwand.option.cores.constructionwand:core_destruction.desc": "Förstör block på sidan som är riktad mot dig", + + "constructionwand.option.lock": "Begränsning: ", + "constructionwand.option.lock.horizontal": "§aVänster/Höger", + "constructionwand.option.lock.horizontal.desc": "Bygg en horisontal kolumn framför originalblocket", + "constructionwand.option.lock.vertical": "§aUppåt/Nedåt", + "constructionwand.option.lock.vertical.desc": "Bygg en vertikal kolumn framför originalblocket", + "constructionwand.option.lock.northsouth": "§6Nord/Syd", + "constructionwand.option.lock.northsouth.desc": "Bygg en nord-/sydriktad rad ovanpå originalblocket", + "constructionwand.option.lock.eastwest": "§6Öst/Väst", + "constructionwand.option.lock.eastwest.desc": "Bygg en öst-/västriktad rad ovanpå originalblocket", + "constructionwand.option.lock.nolock": "§cIngen", + "constructionwand.option.lock.nolock.desc": "Utvidga från en valfri sida av originalblocket", + + "constructionwand.option.direction": "Riktning: ", + "constructionwand.option.direction.target": "§6Mål", + "constructionwand.option.direction.target.desc": "Placera block i samma riktning som målblocket", + "constructionwand.option.direction.player": "§aSpelare", + "constructionwand.option.direction.player.desc": "Placera block i samma riktning som spelaren tittar åt", + + "constructionwand.option.replace": "Ersättning: ", + "constructionwand.option.replace.yes": "§aJa", + "constructionwand.option.replace.yes.desc": "Ersätt vissa block, t.ex. vätskor, snö och högt gräs", + "constructionwand.option.replace.no": "§cNej", + "constructionwand.option.replace.no.desc": "Ersätt inte något block", + + "constructionwand.option.match": "Matchning: ", + "constructionwand.option.match.exact": "§aExakt", + "constructionwand.option.match.exact.desc": "Utvidga endast block som är exakt likadana", + "constructionwand.option.match.similar": "§6Liknande", + "constructionwand.option.match.similar.desc": "Behandla liknande block (jord-/grästyper) likadant", + "constructionwand.option.match.any": "§cAllting", + "constructionwand.option.match.any.desc": "Utvidga alla block", + + "constructionwand.option.random": "Slumpa: ", + "constructionwand.option.random.yes": "§aJa", + "constructionwand.option.random.yes.desc": "Placera slumpartade block från din föremålsmeny", + "constructionwand.option.random.no": "§cNej", + "constructionwand.option.random.no.desc": "Slumpa inte block som ska placeras ut", + + "stat.constructionwand.use_wand": "Block placerade med stavar" +} From 644f3c1d48aaf1caca3d3c4cdf64f6c058dfb352 Mon Sep 17 00:00:00 2001 From: Theta-Dev Date: Thu, 9 Dec 2021 12:01:02 +0100 Subject: [PATCH 02/12] add JEI ingame documentation --- README.md | 31 +++++---- build.gradle | 8 ++- gradle.properties | 1 + .../constructionwand/basics/ConfigServer.java | 4 +- .../jei/ConstructionWandJeiPlugin.java | 67 +++++++++++++++++++ .../constructionwand/items/ModItems.java | 1 + src/main/resources/META-INF/mods.toml | 6 +- .../assets/constructionwand/lang/de_de.json | 9 +++ .../assets/constructionwand/lang/en_us.json | 9 +++ 9 files changed, 117 insertions(+), 19 deletions(-) create mode 100644 src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java diff --git a/README.md b/README.md index fc58c42..e664f13 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Construction Wand With a Construction Wand you can place multiple blocks (up to 1024) at once, extending your build on the side you're -facing. Sneak+Right click to activate angel mode which allows you to place a block at the opposite side of the block -facing you. If you concentrate enough, you can even conjure a block in mid air! +facing. If that's not enough: you can upgrade your wand with additional cores, allowing you to place a block behind the +block you are facing, conjure blocks in mid air or destroy lots of blocks very fast. ![](images/wands.png) @@ -73,8 +73,8 @@ SNEAK+OPTKEY+Right clicking empty space opens the option screen of your wand. **Restriction:** If restriction is enabled the wand will only place blocks in one row or column (choose between North/South, East/West on a horizontal plane and Horizontal, Vertical on a vertical plane). -If the direction lock is switched off, the wand will extend the entire face of the building it's pointed at. -This option has no effect in Angel mode. +If the direction lock is switched off, the wand will extend the entire face of the building it's pointed at. This option +has no effect if the angel core is enabled. **Direction:** If set to "Player" the wand places blocks in the same direction as if they were placed by yourself. Target mode places the blocks in the same direction as their supporting block. See the picture below: @@ -92,16 +92,17 @@ are exactly the same as the selected block.
~~Shamelessly stolen~~ Inspired by the Trowel from Quark. ## Undo -Holding down SHIFT+CTRL while looking at a blocks will show you the last blocks you placed with a green border -around them. SHIFT+CTRL+Right clickking any of them will undo the operation, giving you all the items back. -If you used the Destruction core, it will restore the blocks. + +Holding down Sneak+OPTKEY while looking at a block will show you the last blocks you placed with a green border around +them. Sneak+OPTKEY+Right clicking any of them will undo the operation, giving you all the items back. If you used the +Destruction core, it will restore the blocks. ## Additional features -- If you have shulker boxes in your inventory filled with blocks, the wand can pull them out and place them -- Botania compatibility: The Black Hole Talisman can supply blocks just like shulker boxes can. - Having a Rod of the Lands / Rod of the Depths in your inventory will provide you with infinite dirt/cobble - at the cost of Mana. +- Shulker boxes, bundles (MC 1.17+) and many containers from other mods can provide building blocks for the wand + +- Botania compatibility: The Black Hole Talisman can supply blocks just like shulker boxes can. Having a Rod of the + Lands / Rod of the Depths in your inventory will provide you with infinite dirt/cobble at the cost of Mana. - Having blocks in your offhand will place them instead of the block you're looking at @@ -109,14 +110,18 @@ If you used the Destruction core, it will restore the blocks. - **1.16+ only:** The Infinity Wand won't burn in lava just like netherite gear. +- Ingame documentation with Just Enough Items (JEI) + ## Contributions and #Hacktoberfest + As #Hacktoberfest now requires repo owners to opt in, I added the tag to this repository. -I'd really appreciate translations. Currently, ConstructionWand only has English and German, -so if you speak any other language you can help translate the mod and add a new language file +I'd really appreciate translations. Currently, ConstructionWand only has English and German, so if you speak any other +language you can help translate the mod and add a new language file under `src/main/resources/assets/constructionwand/lang/`. ## TileEntity Blacklist + Some modded TileEntitys can cause issues when placed using a wand. They may turn into invisible and unremovable ghost blocks, become unbreakable or cause other unwanted effects. diff --git a/build.gradle b/build.gradle index 2065453..dc6deda 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -89,6 +88,10 @@ repositories { maven { url = "https://maven.theillusivec4.top/" } + maven { + name = "JEI Maven" + url "https://dvs1.progwml6.com/files/maven" + } } dependencies { @@ -98,6 +101,9 @@ dependencies { version: "${project.mcversion}-${project.forgeversion}" ]) + compileOnly fg.deobf("mezz.jei:${jei_version}:api") + runtimeOnly fg.deobf("mezz.jei:${jei_version}") + compileOnly fg.deobf([ group: "vazkii.botania", name: "Botania", diff --git a/gradle.properties b/gradle.properties index 5ea7512..b973da6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,7 @@ forgeversion=32.0.108 mcp_mappings=20200723-1.16.1 botania=1.16-398 +jei_version=jei-1.16.1:7.0.1.10 version_major=2 version_minor=4 \ No newline at end of file diff --git a/src/main/java/thetadev/constructionwand/basics/ConfigServer.java b/src/main/java/thetadev/constructionwand/basics/ConfigServer.java index dea4c06..5b66cfa 100644 --- a/src/main/java/thetadev/constructionwand/basics/ConfigServer.java +++ b/src/main/java/thetadev/constructionwand/basics/ConfigServer.java @@ -64,7 +64,7 @@ public class ConfigServer else durability = null; builder.comment("Wand block limit"); limit = builder.defineInRange("limit", defLimit, 1, Integer.MAX_VALUE); - builder.comment("Max placement distance with angel mode (0 to disable angel core)"); + builder.comment("Max placement distance with angel core (0 to disable angel core)"); angel = builder.defineInRange("angel", defAngel, 0, Integer.MAX_VALUE); builder.comment("Wand destruction block limit (0 to disable destruction core)"); destruction = builder.defineInRange("destruction", defDestruction, 0, Integer.MAX_VALUE); @@ -116,7 +116,7 @@ public class ConfigServer MAX_RANGE = BUILDER.defineInRange("MaxRange", 100, 0, Integer.MAX_VALUE); BUILDER.comment("Number of operations that can be undone"); UNDO_HISTORY = BUILDER.defineInRange("UndoHistory", 3, 0, Integer.MAX_VALUE); - BUILDER.comment("Place blocks below you while falling > 10 blocks with angel mode (Can be used to save you from drops/the void)"); + BUILDER.comment("Place blocks below you while falling > 10 blocks with angel core (Can be used to save you from drops/the void)"); ANGEL_FALLING = BUILDER.define("AngelFalling", false); BUILDER.comment("Blocks to treat equally when in Similar mode. Enter block IDs seperated by ;"); SIMILAR_BLOCKS = BUILDER.defineList("SimilarBlocks", Arrays.asList(SIMILAR_BLOCKS_DEFAULT), obj -> true); diff --git a/src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java b/src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java new file mode 100644 index 0000000..232373a --- /dev/null +++ b/src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java @@ -0,0 +1,67 @@ +package thetadev.constructionwand.integrations.jei; + +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.registration.IRecipeRegistration; +import net.minecraft.client.util.InputMappings; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.util.ResourceLocation; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import thetadev.constructionwand.ConstructionWand; +import thetadev.constructionwand.basics.ConfigClient; +import thetadev.constructionwand.basics.ConfigServer; +import thetadev.constructionwand.items.ModItems; + +import javax.annotation.Nonnull; + +@JeiPlugin +public class ConstructionWandJeiPlugin implements IModPlugin +{ + private static final ResourceLocation pluginId = new ResourceLocation(ConstructionWand.MODID, ConstructionWand.MODID); + private static final String baseKey = ConstructionWand.MODID + ".description."; + private static final String baseKeyItem = "item." + ConstructionWand.MODID + "."; + + @Nonnull + @Override + public ResourceLocation getPluginUid() { + return pluginId; + } + + private ITextComponent keyComboComponent(boolean shiftOpt, ITextComponent optkeyComponent) { + String key = shiftOpt ? "sneak_opt" : "sneak"; + return new TranslationTextComponent(baseKey + "key." + key, optkeyComponent).mergeStyle(TextFormatting.BLUE); + } + + @Override + public void registerRecipes(IRecipeRegistration registration) { + ITextComponent optkeyComponent = new TranslationTextComponent(InputMappings.getInputByCode(ConfigClient.OPT_KEY.get(), -1).getTranslationKey()) + .mergeStyle(TextFormatting.BLUE); + ITextComponent wandModeComponent = keyComboComponent(ConfigClient.SHIFTOPT_MODE.get(), optkeyComponent); + ITextComponent wandGuiComponent = keyComboComponent(ConfigClient.SHIFTOPT_GUI.get(), optkeyComponent); + + for(Item wand : ModItems.WANDS) { + ConfigServer.WandProperties wandProperties = ConfigServer.getWandProperties(wand); + + String durabilityKey = wand == ModItems.WAND_INFINITY ? "unlimited" : "limited"; + ITextComponent durabilityComponent = new TranslationTextComponent(baseKey + "durability." + durabilityKey, wandProperties.getDurability()); + + registration.addIngredientInfo(new ItemStack(wand), VanillaTypes.ITEM, + new TranslationTextComponent(baseKey + "wand", + new TranslationTextComponent(baseKeyItem + wand.getRegistryName().getPath()), + wandProperties.getLimit(), durabilityComponent, + optkeyComponent, wandModeComponent, wandGuiComponent) + ); + } + + for(Item core : ModItems.CORES) { + registration.addIngredientInfo(new ItemStack(core), VanillaTypes.ITEM, + new TranslationTextComponent(baseKey + core.getRegistryName().getPath()), + new TranslationTextComponent(baseKey + "core", wandModeComponent) + ); + } + } +} diff --git a/src/main/java/thetadev/constructionwand/items/ModItems.java b/src/main/java/thetadev/constructionwand/items/ModItems.java index 43408dd..74c27ad 100644 --- a/src/main/java/thetadev/constructionwand/items/ModItems.java +++ b/src/main/java/thetadev/constructionwand/items/ModItems.java @@ -41,6 +41,7 @@ public class ModItems // Collections public static final Item[] WANDS = {WAND_STONE, WAND_IRON, WAND_DIAMOND, WAND_INFINITY}; + public static final Item[] CORES = {CORE_ANGEL, CORE_DESTRUCTION}; public static final HashSet ALL_ITEMS = new HashSet<>(); diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index bdf6802..d20a1ee 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -11,9 +11,9 @@ authors="ThetaDev" description=''' Construction Wands make building easier! -With a Construction Wand you can place multiple blocks (up to 1024) at once, extending you build on the side you're facing. -Sneak+Right click to activate angel mode which allows you to place a block at the opposite side of the block facing you. -If you concentrate enough, you can even conjure a block in mid air! +With a Construction Wand you can place multiple blocks (up to 1024) at once, extending your build on the side you're +facing. If that's not enough: you can upgrade your wand with additional cores, allowing you to place a block +behind the block you are facing, conjure blocks in mid air or destroy lots of blocks very fast. This is my first minecraft mod. May the odds be ever in your favor. ''' diff --git a/src/main/resources/assets/constructionwand/lang/de_de.json b/src/main/resources/assets/constructionwand/lang/de_de.json index 74865f3..a4d2f8f 100644 --- a/src/main/resources/assets/constructionwand/lang/de_de.json +++ b/src/main/resources/assets/constructionwand/lang/de_de.json @@ -57,5 +57,14 @@ "constructionwand.option.random.no": "§cAus", "constructionwand.option.random.no.desc": "Platziere Blöcke normal", + "constructionwand.description.wand": "Ein %1$s kann maximal %2$d Blöcke auf der dir zugewandten Seite eines Bauwerks platzieren und hält %3$s.\n\nHalte %5$s gedrückt und scrolle, um die Platzierung zu beschränken (Horizontal, Vertikal, Nord/Süd, Ost/West, Keine).\n\nÖffne den Optionsbildschirm mit %6$s§9+Rechtsklick§0.\n\n§5§nRÜCKGÄNGIG§0§r\nHalte §9Schleichen+§0%4$s während du einen Block fokussierst. Die letzten platzierten Blöcke werden mit einem grünen Rahmen markiert. §9Schleichen+§0%4$s§9+Rechtsklick§0 auf einen dieser Blöcke macht diese Operation rückgängig und gibt dir alle Items zurück. Wenn du den Kristall der Zerstörung benutzt hast, werden die zerstörten Blöcke wiederhergestellt.\n\n§5§nCONTAINER§0§r\nShulkerkisten, Bündel und viele Container von anderen Mods können Baumaterial für deinen Stab bereitstellen.\n\n§5§nLINKE-HAND-PRIORITÄT§0§r\nWenn du einen Block in der linken Hand hältst, wird der Stab diesen anstatt des Blocks, den du anschaust, platzieren.", + "constructionwand.description.durability.limited": "für %d Blöcke", + "constructionwand.description.durability.unlimited": "unendlich lang", + "constructionwand.description.key.sneak": "Schleichen", + "constructionwand.description.key.sneak_opt": "Schleichen+%s", + "constructionwand.description.core": "§5§nINSTALLATION§0§r\nLege deinen neuen Kristall zusammen mit dem Stab auf eine Werkbank, um ihn einzusetzen. Um zwischen den Kristallen zu wechseln, halte %s gedrückt und klicke mit der linken Maustaste ins Leere. Alternativ kannst du den Kristall auch im Optionsbildschirm auswählen.", + "constructionwand.description.core_angel": "Der Kristall der Engel platziert einen Block auf der gegenüberliegenden Seites des Blocks (oder der Blockreihe) den du anschaust. Die maximale Entfernung hängt vom Material des Stabes ab. Ein Rechtsklick ins Leere platziert einen Block mitten in der Luft. Hierfür musst du den Block, den du platzieren willst, in der linken Hand halten.", + "constructionwand.description.core_destruction": "Der Kristall der Zerstörung zerstört Blöcke (keine Tile Entities) auf der dir zugewandten Seite. Die maximale Anzahl Blöcke hängt vonm Material des Stabes ab. Zerstörte Blöcke verschwinden im Nichts, du kannst Fehler jedoch rückgängig machen.", + "stat.constructionwand.use_wand": "Blöcke mithilfe des Stabs platziert" } \ No newline at end of file diff --git a/src/main/resources/assets/constructionwand/lang/en_us.json b/src/main/resources/assets/constructionwand/lang/en_us.json index 5331b7b..619fc45 100644 --- a/src/main/resources/assets/constructionwand/lang/en_us.json +++ b/src/main/resources/assets/constructionwand/lang/en_us.json @@ -57,5 +57,14 @@ "constructionwand.option.random.no": "§cNo", "constructionwand.option.random.no.desc": "Don't randomize placed blocks", + "constructionwand.description.wand": "The %1$s can place up to %2$d blocks at the side of a building facing you and lasts %3$s.\n\nHold down %5$s and scroll to change placement restriction (Horizontal, Vertical, North/South, East/West, No lock).\n\nOpen the option screen with %6$s§9+Right click§0.\n\n§5§nUNDO§0§r\nHolding down §9Sneak+§0%4$s while looking at a blocks will show you the last blocks you placed with a green border around them. §9Sneak+§0%4$s§9+Right clicking§0 any of them will undo the operation, giving you all the items back. If you used the Destruction core, it will restore the blocks.\n\n§5§nCONTAINERS§0§r\nShulker boxes, bundles and many containers from other mods can provide building blocks for the wand.\n\n§5§nOFFHAND PRIORITY§0§r\nHaving blocks in your offhand will place them instead of the block you're looking at.", + "constructionwand.description.durability.limited": "for %d blocks", + "constructionwand.description.durability.unlimited": "forever", + "constructionwand.description.key.sneak": "Sneak", + "constructionwand.description.key.sneak_opt": "Sneak+%s", + "constructionwand.description.core": "§5§nINSTALLATION§0§r\nPut your new core together with your wand in a crafting grid to install it. To switch between cores, hold down %s and left click empty space with your wand or use the option screen.", + "constructionwand.description.core_angel": "The angel core places a block on the opposite side of the block (or row of blocks) you are facing. Maximum distance depends on wand tier. Right click empty space to place a block in midair. To do that, you'll need to have the block you want to place in your offhand.", + "constructionwand.description.core_destruction": "The destruction core destroys blocks (no tile entities) on the side facing you. Maximum number of blocks depends on wand tier. Destroyed blocks disappear into the void, you can use the undo feature if you've made a mistake.", + "stat.constructionwand.use_wand": "Blocks placed using Wand" } \ No newline at end of file From 1356b6a48cc8db019d2b03dee9f4e678d6c90dc3 Mon Sep 17 00:00:00 2001 From: Theta-Dev Date: Wed, 8 Dec 2021 19:48:12 +0100 Subject: [PATCH 03/12] fix wand getting damaged in creative mode --- .../constructionwand/wand/WandJob.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/thetadev/constructionwand/wand/WandJob.java b/src/main/java/thetadev/constructionwand/wand/WandJob.java index edcb566..b683d39 100644 --- a/src/main/java/thetadev/constructionwand/wand/WandJob.java +++ b/src/main/java/thetadev/constructionwand/wand/WandJob.java @@ -93,15 +93,19 @@ public class WandJob if(wand.isEmpty() || wandItem.remainingDurability(wand) == 0) break; if(snapshot.execute(world, player, rayTraceResult)) { - // If the item cant be taken, undo the placement - if(wandSupplier.takeItemStack(snapshot.getRequiredItems()) == 0) executed.add(snapshot); + if(player.isCreative()) executed.add(snapshot); else { - ConstructionWand.LOGGER.info("Item could not be taken. Remove block: " + - snapshot.getBlockState().getBlock().toString()); - snapshot.forceRestore(world); + // If the item cant be taken, undo the placement + if(wandSupplier.takeItemStack(snapshot.getRequiredItems()) == 0) { + executed.add(snapshot); + wand.damageItem(1, player, (e) -> e.sendBreakAnimation(player.swingingHand)); + } + else { + ConstructionWand.LOGGER.info("Item could not be taken. Remove block: " + + snapshot.getBlockState().getBlock().toString()); + snapshot.forceRestore(world); + } } - - wand.damageItem(1, player, (e) -> e.sendBreakAnimation(player.swingingHand)); player.addStat(ModStats.USE_WAND); } } From abe2e2c889d9a1ed8c5210bb8cb6cf2bf726d651 Mon Sep 17 00:00:00 2001 From: "A. Regnander" Date: Thu, 9 Dec 2021 01:14:01 +0100 Subject: [PATCH 04/12] Update sv_se.json Added new strings --- .../resources/assets/constructionwand/lang/sv_se.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/resources/assets/constructionwand/lang/sv_se.json b/src/main/resources/assets/constructionwand/lang/sv_se.json index bab195b..23eb3bf 100644 --- a/src/main/resources/assets/constructionwand/lang/sv_se.json +++ b/src/main/resources/assets/constructionwand/lang/sv_se.json @@ -57,5 +57,14 @@ "constructionwand.option.random.no": "§cNej", "constructionwand.option.random.no.desc": "Slumpa inte block som ska placeras ut", + "constructionwand.description.wand": "En %1$s kan placera upp till %2$d block på sidan av en byggnad som är riktad mot dig och räcker %3$s.\n\nHåll ned %5$s och rulla med mushjulet för att ändra placeringsbegränsningen (horisontal, vertikal, nord/syd, öst/väst, ingen låsning).\n\nÖppna alternativmenyn med %6$s§9+Högerklick§0.\n\n§5§nÅNGRA§0§r\nNär du håller ned §9Smyga+§0%4$s medan du tittar på ett block kommer du se de senaste blocken du placerade omgivna av en grön ram. §9Smyg+§0%4$s§9+högerklicka§0 på något av dem för att ångra handlingen och få tillbaka alla föremål. Om du har använt rivningskärnan kommer blocken att återställas.\n\n§5§nBEHÅLLARE§0§r\nShulkerlådor, påsar och många behållare från andra moddar kan tillhandahålla byggblock för staven.\n\n§5§nPRIO FÖR SEKUNDÄR HAND§0§r\nBlocken i din sekundära hand placeras i stället för blocket du tittar på.", + "constructionwand.description.durability.limited": "för %d block", + "constructionwand.description.durability.unlimited": "för alltid", + "constructionwand.description.key.sneak": "Smyg", + "constructionwand.description.key.sneak_opt": "Smyg+%s", + "constructionwand.description.core": "§5§nINSTALLATION§0§r\nLägg din nya kärna tillsammans med din stav i ett tillverkningsrutnät för att installera den. Håll ned %s och vänsterklicka i luften med din stav eller använd alternativmenyn för att byta kärna.", + "constructionwand.description.core_angel": "Änglakärnan placerar ett block på den motsatta sidan av blocket (eller blockraden) som är riktad mot dig. Det maximala avståndet beror på stavens nivå. Högerklicka i luften för att placera ett block i luften. För att göra detta behöver du hålla blocket du vill placera i din sekundära hand.", + "constructionwand.description.core_destruction": "Rivningskärnan förstör block (inte blockentiteter) på sidan som är riktad mot dig. Det maximala antalet block beror på stavens nivå. Förstörda block försvinner helt och hållet, men du kan använda ångrafunktionen om du har gjort ett misstag.", + "stat.constructionwand.use_wand": "Block placerade med stavar" } From defacf796be0fd6e95a5a2ff24dc43489924b97e Mon Sep 17 00:00:00 2001 From: Theta-Dev Date: Thu, 9 Dec 2021 09:52:49 +0100 Subject: [PATCH 05/12] update readme --- README.md | 18 +++++++++--------- gradle.properties | 2 ++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e664f13..a1263e3 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ and last longer. These properties can be changed in the config. ![](https://raw.githubusercontent.com/Theta-Dev/ConstructionWand/1.16.2/images/crafting5.png) ![](https://raw.githubusercontent.com/Theta-Dev/ConstructionWand/1.16.2/images/crafting6.png) -## OPTKEY +## Keybindings To change a wand's core and options or undo your placement you need to hold down the wand option key (refered as OPTKEY). By default, this is CTRL, but it can be changed in the client config file. To prevent unwanted @@ -112,14 +112,6 @@ Destruction core, it will restore the blocks. - Ingame documentation with Just Enough Items (JEI) -## Contributions and #Hacktoberfest - -As #Hacktoberfest now requires repo owners to opt in, I added the tag to this repository. - -I'd really appreciate translations. Currently, ConstructionWand only has English and German, so if you speak any other -language you can help translate the mod and add a new language file -under `src/main/resources/assets/constructionwand/lang/`. - ## TileEntity Blacklist Some modded TileEntitys can cause issues when placed using a wand. They may turn into invisible and @@ -132,3 +124,11 @@ If you find some of them you can tell me by creating an issue, commenting on Curse or editing the default blacklist yourself (it is located at https://github.com/Theta-Dev/ConstructionWand/blob/1.16.2/src/main/java/thetadev/constructionwand/basics/ConfigServer.java#L28) and making a PR. + +## Contributions and #Hacktoberfest + +As #Hacktoberfest now requires repo owners to opt in, I added the tag to this repository. + +I'd really appreciate translations. Currently, ConstructionWand is available in English, German and Swedish. +If you speak any other language you can help translate the mod and add a new language file +under `src/main/resources/assets/constructionwand/lang/`. diff --git a/gradle.properties b/gradle.properties index b973da6..0f4a4db 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,9 @@ mcversion=1.16.1 forgeversion=32.0.108 mcp_mappings=20200723-1.16.1 +# Source: https://maven.blamejared.com/vazkii/botania/Botania/ botania=1.16-398 +# Source: https://dvs1.progwml6.com/files/maven/mezz/jei/ jei_version=jei-1.16.1:7.0.1.10 version_major=2 From da2dea05049f0b9679fca0f934ed247634aba664 Mon Sep 17 00:00:00 2001 From: Theta-Dev Date: Thu, 9 Dec 2021 10:21:08 +0100 Subject: [PATCH 06/12] bump version 2.4 -> 2.5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0f4a4db..93053cb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,4 +14,4 @@ botania=1.16-398 jei_version=jei-1.16.1:7.0.1.10 version_major=2 -version_minor=4 \ No newline at end of file +version_minor=5 \ No newline at end of file From 1ead48dfb00940132f5fca852d7d8bb63ef4e2a4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 1 Jun 2023 14:20:09 +0200 Subject: [PATCH 07/12] update translations --- .../assets/constructionwand/lang/ko_kr.json | 70 +++++++++++++++++++ .../assets/constructionwand/lang/pt_br.json | 70 +++++++++++++++++++ .../assets/constructionwand/lang/ru_ru.json | 70 +++++++++++++++++++ .../assets/constructionwand/lang/zh_cn.json | 70 +++++++++++++++++++ 4 files changed, 280 insertions(+) create mode 100644 src/main/resources/assets/constructionwand/lang/ko_kr.json create mode 100644 src/main/resources/assets/constructionwand/lang/pt_br.json create mode 100644 src/main/resources/assets/constructionwand/lang/ru_ru.json create mode 100644 src/main/resources/assets/constructionwand/lang/zh_cn.json diff --git a/src/main/resources/assets/constructionwand/lang/ko_kr.json b/src/main/resources/assets/constructionwand/lang/ko_kr.json new file mode 100644 index 0000000..47df0b2 --- /dev/null +++ b/src/main/resources/assets/constructionwand/lang/ko_kr.json @@ -0,0 +1,70 @@ +{ + "item.constructionwand.stone_wand": "돌 완드", + "item.constructionwand.iron_wand": "철 완드", + "item.constructionwand.diamond_wand": "다이아몬드 완드", + "item.constructionwand.infinity_wand": "무한의 완드", + "item.constructionwand.core_angel": "천사 완드 코어", + "item.constructionwand.core_destruction": "파괴 완드 코어", + + "constructionwand.tooltip.blocks": "최대. %d 블록", + "constructionwand.tooltip.shift": "[SHIFT]를 누르세요.", + "constructionwand.tooltip.cores": "완드 코어:", + "constructionwand.tooltip.core_tip": "조합창에서 코어와 완드를 합치세요.", + + "constructionwand.option.cores": "", + "constructionwand.option.cores.constructionwand:default": "생성 코어", + "constructionwand.option.cores.constructionwand:default.desc": "당신 쪽으로 건물을 확장합니다.", + "constructionwand.option.cores.constructionwand:core_angel": "§6천사 코어", + "constructionwand.option.cores.constructionwand:core_angel.desc": "블록 뒤와 공중에 배치합니다.", + "constructionwand.option.cores.constructionwand:core_destruction": "§c파괴 코어", + "constructionwand.option.cores.constructionwand:core_destruction.desc": "당신 쪽의 블록을 파괴합니다.", + + "constructionwand.option.lock": "제한: ", + "constructionwand.option.lock.horizontal": "§a오른쪽/왼쪽", + "constructionwand.option.lock.horizontal.desc": "원래 블록의 앞에 수평한 열을 만듭니다.", + "constructionwand.option.lock.vertical": "§a위/아래", + "constructionwand.option.lock.vertical.desc": "원래 블록의 앞에 수직한 열을 만듭니다.", + "constructionwand.option.lock.northsouth": "§6북쪽/남쪽", + "constructionwand.option.lock.northsouth.desc": "원래 블록의 위에 북/남 방향으로 행을 만듭니다.", + "constructionwand.option.lock.eastwest": "§6동쪽/서쪽", + "constructionwand.option.lock.eastwest.desc": "원래 블록의 위에 동/서 방향으로 행을 만듭니다.", + "constructionwand.option.lock.nolock": "§c없음", + "constructionwand.option.lock.nolock.desc": "원래 블록의 어느 방향으로도 확장합니다.", + + "constructionwand.option.direction": "방향: ", + "constructionwand.option.direction.target": "§6대상", + "constructionwand.option.direction.target.desc": "대상 블록과 같은 방향으로 블록을 배치합니다.", + "constructionwand.option.direction.player": "§a플레이어", + "constructionwand.option.direction.player.desc": "플레이어를 향해 블록을 배치합니다.", + + "constructionwand.option.replace": "재배치: ", + "constructionwand.option.replace.yes": "§a예", + "constructionwand.option.replace.yes.desc": "유체, 눈, 키 큰 잔디와 같은 특정 블록을 교체합니다.", + "constructionwand.option.replace.no": "§c아니오", + "constructionwand.option.replace.no.desc": "블록을 재배치하지 않습니다.", + + "constructionwand.option.match": "비교: ", + "constructionwand.option.match.exact": "§a정확", + "constructionwand.option.match.exact.desc": "완전히 같은 블록만 확장합니다.", + "constructionwand.option.match.similar": "§6유사", + "constructionwand.option.match.similar.desc": "비슷한 블록(흙/잔디)을 똑같이 취급합니다.", + "constructionwand.option.match.any": "§c아무거나", + "constructionwand.option.match.any.desc": "아무 블록이나 확장합니다.", + + "constructionwand.option.random": "무작위: ", + "constructionwand.option.random.yes": "§a예", + "constructionwand.option.random.yes.desc": "핫바에 있는 블록 중 무작위적으로 배치합니다.", + "constructionwand.option.random.no": "§c아니오", + "constructionwand.option.random.no.desc": "배치할 블록을 무작위적으로 하지 않습니다.", + + "constructionwand.description.wand": "%1$s는 당신 쪽으로 최대 %2$d 블록까지 배치할 수 있고, %3$s 지속됩니다.\n\n%5$s을(를) 누르고 스크롤 하여 배치 제한을 바꾸세요 (수평, 수직, 북쪽/남쪽, 동쪽/서쪽, 제한 없음).\n\n%6$s§9+우클릭§0으로 옵션 스크린을 여세요.\n\n§5§n실행 취소§0§r\n블록을 보면서 §9웅크리기+§0%4$s를 누르고 있으면 마지막으로 배치했던 블록들이 녹색 테두리로 표시됩니다. 그 중 아무거나 §9S웅크리기+§0%4$s§9+우클릭§0 하면 그 작업을 실행 취소하고, 모든 아이템을 돌려줍니다. 파괴 코어를 사용했다면, 블록들을 복원합니다.\n\n§5§n컨테이너§0§r\n셜커 상자, 꾸러미, 그리고 다른 모드의 컨테이너들은 완드에 건설 블록을 제공할 수 있습니다.\n\n§5§n보조손 우선도§0§r\n보조 손에 블록을 가지고 있으면 보고 있는 블록을 배치하는 대신에 보조 손의 블록을 배치할 것입니다.", + "constructionwand.description.durability.limited": "%d 블록 만큼", + "constructionwand.description.durability.unlimited": "영원히", + "constructionwand.description.key.sneak": "웅크리기", + "constructionwand.description.key.sneak_opt": "웅크리기+%s", + "constructionwand.description.core": "§5§n설치§0§r\n새 코어를 완드와 함께 조합창에 넣어 설치하세요. 코어 간에 전환하려면 %s 키를 누른 상태에서 완드로 빈 공간을 좌클릭하거나 옵션 화면을 사용하십시오.", + "constructionwand.description.core_angel": "엔젤 코어는 마주보고 있는 블록(또는 블록 행)의 반대쪽에 블록을 배치합니다. 최대 거리는 완드의 티어에 따라 다릅니다. 빈 공간을 우클릭하면 공중에 블록을 배치할 수 있습니다. 그렇게 하려면 보조 손에 배치하려는 블록이 있어야 합니다.", + "constructionwand.description.core_destruction": "파괴 코어는 당신 쪽의 (타일 엔티티가 없는)블록을 파괴합니다. 최대 블록 수는 완드의 티어에 따라 다릅니다. 파괴된 블록은 공허로 사라지며 실수를 했다면 실행 취소 기능을 사용할 수 있습니다.", + + "stat.constructionwand.use_wand": "완드로 배치한 블록 수" + } diff --git a/src/main/resources/assets/constructionwand/lang/pt_br.json b/src/main/resources/assets/constructionwand/lang/pt_br.json new file mode 100644 index 0000000..0b70530 --- /dev/null +++ b/src/main/resources/assets/constructionwand/lang/pt_br.json @@ -0,0 +1,70 @@ +{ + "item.constructionwand.stone_wand": "Varinha de pedra", + "item.constructionwand.iron_wand": "Varinha de ferro", + "item.constructionwand.diamond_wand": "diamondWand", + "item.constructionwand.infinity_wand": "Varinha infinita", + "item.constructionwand.core_angel": "Angel Wand Core", + "item.constructionwand.core_destruction": "Destruction Wand Core", + + "constructionwand.tooltip.blocks": "Max. %d blocos", + "constructionwand.tooltip.shift": "Pressione Shift]", + "constructionwand.tooltip.cores": "Núcleos de varinhas:", + "constructionwand.tooltip.core_tip": "Combine o núcleo com sua varinha em uma grade de criação", + + "constructionwand.option.cores": "", + "constructionwand.option.cores.constructionwand:default": "Núcleo de construção", + "constructionwand.option.cores.constructionwand:default.desc": "Estender seu prédio do lado de frente para você", + "constructionwand.option.cores.constructionwand:core_angel": "§6angelCore", + "constructionwand.option.cores.constructionwand:core_angel.desc": "Coloque atrás dos quarteirões e no meio do ar", + "constructionwand.option.cores.constructionwand:core_destruction": "§cNúcleo de destruição", + "constructionwand.option.cores.constructionwand:core_destruction.desc": "Destrói blocos do lado de frente para você", + + "constructionwand.option.lock": "Restrição: ", + "constructionwand.option.lock.horizontal": "§aEsquerda direita", + "constructionwand.option.lock.horizontal.desc": "Construa uma coluna horizontal em frente ao bloco original", + "constructionwand.option.lock.vertical": "§aCima baixo", + "constructionwand.option.lock.vertical.desc": "Construa uma coluna vertical em frente ao bloco original", + "constructionwand.option.lock.northsouth": "§6Norte Sul", + "constructionwand.option.lock.northsouth.desc": "Construa uma linha na direção N/s no topo do bloco original", + "constructionwand.option.lock.eastwest": "§6Leste Oeste", + "constructionwand.option.lock.eastwest.desc": "Construa uma linha na direção E/W no topo do bloco original", + "constructionwand.option.lock.nolock": "§cNenhum", + "constructionwand.option.lock.nolock.desc": "Estender de qualquer lado do bloco original", + + "constructionwand.option.direction": "Direção: ", + "constructionwand.option.direction.target": "§6Alvo", + "constructionwand.option.direction.target.desc": "Coloque blocos com a mesma direção que o bloco de destino", + "constructionwand.option.direction.player": "§aJogadora", + "constructionwand.option.direction.player.desc": "Coloque blocos de frente para o jogador", + + "constructionwand.option.replace": "Substituição: ", + "constructionwand.option.replace.yes": "§aSim", + "constructionwand.option.replace.yes.desc": "Substitua certos blocos como fluidos, neve e capim alto", + "constructionwand.option.replace.no": "§cNão", + "constructionwand.option.replace.no.desc": "Não substitua blocos", + + "constructionwand.option.match": "Coincidindo: ", + "constructionwand.option.match.exact": "§aExata", + "constructionwand.option.match.exact.desc": "Estender apenas blocos que são exatamente iguais", + "constructionwand.option.match.similar": "§6Semelhante", + "constructionwand.option.match.similar.desc": "Tratar blocos semelhantes (tipos de sujeira/grama) igualmente", + "constructionwand.option.match.any": "§cAlguma", + "constructionwand.option.match.any.desc": "Estender qualquer bloco", + + "constructionwand.option.random": "Aleatório: ", + "constructionwand.option.random.yes": "§aSim", + "constructionwand.option.random.yes.desc": "Coloque blocos aleatórios presentes em seu hotbar", + "constructionwand.option.random.no": "§cNão", + "constructionwand.option.random.no.desc": "Não randomize blocos colocados", + + "constructionwand.description.wand": "o %1$s pode colocar até %2$d bloqueios ao lado de um prédio de frente para você e dura %3$s.\n\nCalma %5$s e role para alterar a restrição de posicionamento (horizontal, vertical, norte/sul, leste/oeste, sem fechadura).\n\nAbra a tela de opção com %6$s§9+Clique com o botão direito do mouse§0.\n\n§5§nDESFAZER§0§r\nMantendo pressionada §9Esgueirar-se+§0%4$s Enquanto olha para um bloco, mostrará os últimos blocos que você colocou com uma borda verde ao redor deles. §9Esgueirar-se+§0%4$s§9+Certa clicando§0 Qualquer um deles desfazerá a operação, oferecendo todos os itens de volta.Se você usou o núcleo de destruição, ele restaurará os blocos.\n\n§5§nRECIPIENTES§0§r\nCaixas Shulker, pacotes e muitos contêineres de outros mods podem fornecer blocos de construção para a varinha.\n\n§5§nPrioridade imediata§0§r\nTer blocos em sua mão os colocará em vez do bloco que você está olhando.", + "constructionwand.description.durability.limited": "por %d blocos", + "constructionwand.description.durability.unlimited": "para todo sempre", + "constructionwand.description.key.sneak": "Esgueirar-se", + "constructionwand.description.key.sneak_opt": "Esgueirar-se+%s", + "constructionwand.description.core": "§5§nINSTALAÇÃO§0§r\nColoque seu novo núcleo junto com sua varinha em uma grade de criação para instalá -la.Para alternar entre núcleos, mantenha pressionado %s e o clique esquerdo, esvazie o espaço com sua varinha ou use a tela de opção.", + "constructionwand.description.core_angel": "O núcleo do anjo coloca um bloco no lado oposto do bloco (ou fileira de blocos) que você está enfrentando.A distância máxima depende da camada de varinha.Clique com o botão direito do mouse em espaço vazio para colocar um bloco no ar.Para fazer isso, você precisará ter o bloco que deseja colocar em sua mão.", + "constructionwand.description.core_destruction": "O núcleo de destruição destrói blocos (sem entidades de ladrilhos) do lado de frente para você.O número máximo de blocos depende da camada de varinha.Blocos destruídos desaparecem no vazio, você pode usar o recurso de desfazer se cometer um erro.", + + "stat.constructionwand.use_wand": "Blocos colocados usando varinha" + } \ No newline at end of file diff --git a/src/main/resources/assets/constructionwand/lang/ru_ru.json b/src/main/resources/assets/constructionwand/lang/ru_ru.json new file mode 100644 index 0000000..5e7ec8c --- /dev/null +++ b/src/main/resources/assets/constructionwand/lang/ru_ru.json @@ -0,0 +1,70 @@ +{ + "item.constructionwand.stone_wand": "Каменный жезл", + "item.constructionwand.iron_wand": "Железный жезл", + "item.constructionwand.diamond_wand": "Алмазный жезл", + "item.constructionwand.infinity_wand": "Бесконечный жезл", + "item.constructionwand.core_angel": "Ангельское ядро для жезла", + "item.constructionwand.core_destruction": "Ядро разрушения для жезла", + + "constructionwand.tooltip.blocks": "Максимум %d блоков", + "constructionwand.tooltip.shift": "Нажмите [SHIFT]", + "constructionwand.tooltip.cores": "Ядер жезла:", + "constructionwand.tooltip.core_tip": "Объедините ядро со своим жезлом в сетке создания.", + + "constructionwand.option.cores": "", + "constructionwand.option.cores.constructionwand:default": "Ядро строительства", + "constructionwand.option.cores.constructionwand:default.desc": "Расширяйте свои строения на стороне, обращённой к Вам.", + "constructionwand.option.cores.constructionwand:core_angel": "§6Ангельское ядро", + "constructionwand.option.cores.constructionwand:core_angel.desc": "Размещает за блоками и в воздухе.", + "constructionwand.option.cores.constructionwand:core_destruction": "§cЯдро разрушения", + "constructionwand.option.cores.constructionwand:core_destruction.desc": "Уничтожает блоки на стороне, обращённой к Вам.", + + "constructionwand.option.lock": "Ограничение: ", + "constructionwand.option.lock.horizontal": "§aВлево/Вправо", + "constructionwand.option.lock.horizontal.desc": "Строить горизонтальную колонну перед основным блоком.", + "constructionwand.option.lock.vertical": "§aВверх/Вниз", + "constructionwand.option.lock.vertical.desc": "Строить вертикальную колонну перед основным блоком.", + "constructionwand.option.lock.northsouth": "§6Север/Юг", + "constructionwand.option.lock.northsouth.desc": "Строить ряд в С/Ю направлении непосредственно за основным блоком.", + "constructionwand.option.lock.eastwest": "§6Восток/Запад", + "constructionwand.option.lock.eastwest.desc": "Строить ряд в В/З направлении непосредственно за основным блоком.", + "constructionwand.option.lock.nolock": "§cНичего", + "constructionwand.option.lock.nolock.desc": "Расширять с любой стороны основного блока.", + + "constructionwand.option.direction": "Направление: ", + "constructionwand.option.direction.target": "§6Цель", + "constructionwand.option.direction.target.desc": "Размещать блоки с таким же направлением как целевой блок.", + "constructionwand.option.direction.player": "§aИгрок", + "constructionwand.option.direction.player.desc": "Размещать блоки, обращённые к игроку.", + + "constructionwand.option.replace": "Замена: ", + "constructionwand.option.replace.yes": "§aДа", + "constructionwand.option.replace.yes.desc": "Заменять некоторые блоки как жидкости, снег и высокорослая трава.", + "constructionwand.option.replace.no": "§cНет", + "constructionwand.option.replace.no.desc": "Не заменять блоки.", + + "constructionwand.option.match": "Совпадение: ", + "constructionwand.option.match.exact": "§aТочное", + "constructionwand.option.match.exact.desc": "Расширять только абсолютно одинаковые блоки.", + "constructionwand.option.match.similar": "§6Похожее", + "constructionwand.option.match.similar.desc": "Подносить аналогичные блоки (пример: земля/трава) поровну.", + "constructionwand.option.match.any": "§cНикакое", + "constructionwand.option.match.any.desc": "Расширять любой блок.", + + "constructionwand.option.random": "Случайно: ", + "constructionwand.option.random.yes": "§aДа", + "constructionwand.option.random.yes.desc": "Размещать случайные блоки, имеющиеся в Вашей горячей панели.", + "constructionwand.option.random.no": "§cНет", + "constructionwand.option.random.no.desc": "Не располагать блоки в случайном порядке.", + + "constructionwand.description.wand": "%1$s может размещать до %2$d блоков сбоку от строения, обращённое к Вам и его хватит на %3$s блоков.\n\nУдерживайте %5$s и прокрутите колёсиком для изменения ограничения по размещении (Горизонтально, Вертикально, Север/Юг, Восток/Запад, Без ограничивания).\n\nОткройте экран настроек при помощи %6$s§9+щелчок правой кнопкой мыши§0.\n\n§5§nОТМЕНА§0§r\nУдерживайте §9Приседание+§0%4$s пока смотрите на блоки, установленные Вами, они будут выделены зелёным контуром. §9Приседание+§0%4$s§9+щелчок правой кнопкой мыши§0 на любой из них отменит операцию, вернув Вам все предметы обратно. Если использовать Ядро разрушения, то он вернёт блоки.\n\n§5§nКОНТЕЙНЕР§0§r\nШалкеровые ящики, мешки и множество контейнеров из других модов могут предоставлять строительные блоки в жезл.\n\n§5§nПРИОРИТЕТ ЛЕВОЙ РУКИ§0§r\nЕсли у Вас в левой руке находятся блоки, то они будут размещаться вместо блока, на который Вы смотрите.", + "constructionwand.description.durability.limited": "на %d блоков", + "constructionwand.description.durability.unlimited": "вечно", + "constructionwand.description.key.sneak": "Приседание", + "constructionwand.description.key.sneak_opt": "Приседание+%s", + "constructionwand.description.core": "§5§nУСТАНОВКА§0§r\nПоложите своё новое ядро вместе со своим жезлом в сетку создания для его установки. Для того, чтобы переключаться между ядрами, удерживайте %s и нажмите левую кнопку мыши по пустому пространству с жезлом в руке или используйте экран настроек.", + "constructionwand.description.core_angel": "Ангельское ядро размещает блоки на противоположной стороне блока (или ряда блоков), обращённые к Вам. Максимальное расстояние зависит от уровня жезла. Щелчок правой кнопкой мыши по пустому воздуху разместит блок в воздухе. Чтобы это сделать, Вам нужно иметь необходимые блоки в левой руке, чтобы разместить их.", + "constructionwand.description.core_destruction": "Ядро разрушения разрушает блоки (не функциональные блоки), обращённые к Вам. Максимально количество блоков зависит от уровня жезла. Разрушенные блоки исчезают в пустоту, можно использовать функцию отмены в случае допущенной ошибки.", + + "stat.constructionwand.use_wand": "Блоки, размещённые при помощи Жезла" +} diff --git a/src/main/resources/assets/constructionwand/lang/zh_cn.json b/src/main/resources/assets/constructionwand/lang/zh_cn.json new file mode 100644 index 0000000..013bf8a --- /dev/null +++ b/src/main/resources/assets/constructionwand/lang/zh_cn.json @@ -0,0 +1,70 @@ +{ + "item.constructionwand.stone_wand": "石制手杖", + "item.constructionwand.iron_wand": "铁制手杖", + "item.constructionwand.diamond_wand": "钻石手杖", + "item.constructionwand.infinity_wand": "无尽手杖", + "item.constructionwand.core_angel": "天使手杖核心", + "item.constructionwand.core_destruction": "破坏手杖核心", + + "constructionwand.tooltip.blocks": "最多放置%d个方块", + "constructionwand.tooltip.shift": "按 [SHIFT]", + "constructionwand.tooltip.cores": "手杖核心:", + "constructionwand.tooltip.core_tip": "将手杖核心与手杖组合在一起", + + "constructionwand.option.cores": "", + "constructionwand.option.cores.constructionwand:default": "建筑核心", + "constructionwand.option.cores.constructionwand:default.desc": "在面向你的一侧放置方块", + "constructionwand.option.cores.constructionwand:core_angel": "§6天使核心", + "constructionwand.option.cores.constructionwand:core_angel.desc": "在面向你的方块的背面放置方块,还可以悬空放置方块", + "constructionwand.option.cores.constructionwand:core_destruction": "§c毁灭核心", + "constructionwand.option.cores.constructionwand:core_destruction.desc": "破坏面向你一侧的方块", + + "constructionwand.option.lock": "锁定: ", + "constructionwand.option.lock.horizontal": "§a左 / 右", + "constructionwand.option.lock.horizontal.desc": "在起始方块的前面延伸一行水平方块", + "constructionwand.option.lock.vertical": "§a上 / 下", + "constructionwand.option.lock.vertical.desc": "在起始方块的前面延伸一列竖直方块", + "constructionwand.option.lock.northsouth": "§6南 / 北", + "constructionwand.option.lock.northsouth.desc": "在起始方块的上面,向南 / 北方向延伸一行", + "constructionwand.option.lock.eastwest": "§6东 / 西", + "constructionwand.option.lock.eastwest.desc": "在起始方块的上面,向东 / 西方向延伸一行", + "constructionwand.option.lock.nolock": "§c无", + "constructionwand.option.lock.nolock.desc": "从原始块的任意一面延伸", + + "constructionwand.option.direction": "方向: ", + "constructionwand.option.direction.target": "§6目标", + "constructionwand.option.direction.target.desc": "放置与的方块方向与目标方块的方向相同", + "constructionwand.option.direction.player": "§a玩家", + "constructionwand.option.direction.player.desc": "放置的方块面向玩家", + + "constructionwand.option.replace": "替换: ", + "constructionwand.option.replace.yes": "§a是", + "constructionwand.option.replace.yes.desc": "替换某些方块,如液体、雪、高草丛", + "constructionwand.option.replace.no": "§c否", + "constructionwand.option.replace.no.desc": "不替换方块", + + "constructionwand.option.match": "匹配: ", + "constructionwand.option.match.exact": "§a精确", + "constructionwand.option.match.exact.desc": "仅放置完全相同的方块", + "constructionwand.option.match.similar": "§6模糊", + "constructionwand.option.match.similar.desc": "相似的方块被认为是相同的(草方块 / 泥土类型)", + "constructionwand.option.match.any": "§c任意", + "constructionwand.option.match.any.desc": "放置任何方块", + + "constructionwand.option.random": "随机: ", + "constructionwand.option.random.yes": "§a是", + "constructionwand.option.random.yes.desc": "随机放置快捷栏中的方块", + "constructionwand.option.random.no": "§c否", + "constructionwand.option.random.no.desc": "不会随机放置方块", + + "constructionwand.description.wand": "%1$s可以在建筑物面向你的一侧放置最多%2$d个方块,持续时间为%3$s。\n\n按住%5$s并滚动以更改放置限制(水平、垂直、北/南、东/西、无锁定)。\n\n在选项配置GUI上打开%6$s§9+右键单击§0。\n\n§5§nUNDO§0§r\n在查看方块时向下折叠§9Sneak+§0%4$s将显示你放置的最后一个方块,并在其周围加上绿色边框。§9潜行+§0%4$s§9+右键单击其中任何一个方块将撤消操作,并将所有以此法放置的方块重返至玩家背包。如果你使用了破坏核心,它将恢复方块。\n\n§5§n容器§0§r\n潜影盒、收纳袋和许多其它模组存在于玩家背包内的容器都可以为建筑手杖提供构建所需的方块。\n\n§5§非即时优先级§0§r\n如果玩家在使用手杖时副手栏持有所需方块将被放置,而不是只是在你的手里放着。", + "constructionwand.description.durability.limited": "需要%d方块", + "constructionwand.description.durability.unlimited": "无限", + "constructionwand.description.key.sneak": "潜行", + "constructionwand.description.key.sneak_opt": "潜行+%s", + "constructionwand.description.core": "§5§n安装§0§r\n将新的手杖核心与你的手杖一起放入工作台中进行组装。如果你想要在核心功能之间切换,请按住%s并用手杖左键单击空地或使用手杖的选项配置GUI。", + "constructionwand.description.core_angel": "天使核心可将一个方块放置在你所面对的方块(或一排方块)的对面。最大距离取决于手杖材质。在空地上手持手杖并单击鼠标右键即可在空中放置方块。要做到这一点。你需要将想要被在空中放置的方块放在你的副手栏中。", + "constructionwand.description.core_destruction": "毁灭核心会破坏面向你一侧的方块(破坏时被破坏的方块不可存在实体)。最大破坏方块数取决于手杖材质。被使用毁灭核心破坏的方块会消失。如果你只是不小心使用了毁灭核心。可以使用“撤消”功能以撤回被破坏并消失的物品返回原处。", + + "stat.constructionwand.use_wand": "使用建筑手杖所放置的方块" +} From 18d9af32d8bc6e5f693f58af76e9360c2c805bc1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 24 Mar 2023 23:33:28 +0100 Subject: [PATCH 08/12] fix: 1-block previews on consecutive placements --- .../constructionwand/client/RenderBlockPreview.java | 12 ++++++++---- .../java/thetadev/constructionwand/wand/WandJob.java | 4 ++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java b/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java index d381c60..2b668bd 100644 --- a/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java +++ b/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java @@ -21,7 +21,7 @@ import java.util.Set; public class RenderBlockPreview { - public WandJob wandJob; + private WandJob wandJob; public Set undoBlocks; @SubscribeEvent @@ -38,9 +38,13 @@ public class RenderBlockPreview ItemStack wand = WandUtil.holdingWand(player); if(wand == null) return; - if(!(player.isSneaking() && ClientEvents.isOptKeyDown())) { - if(wandJob == null || !compareRTR(wandJob.rayTraceResult, rtr) || !(wandJob.wand.equals(wand))) { - wandJob = ItemWand.getWandJob(player, player.getEntityWorld(), rtr, wand); + if(!(player.isCrouching() && ClientEvents.isOptKeyDown())) { + // Use cached wandJob for previews of the same target pos/dir + // Exception: always update if blockCount < 2 to prevent 1-block previews when block updates + // from the last placement are lagging + if(wandJob == null || !compareRTR(wandJob.rayTraceResult, rtr) || !(wandJob.wand.equals(wand)) + || wandJob.blockCount() < 2) { + wandJob = ItemWand.getWandJob(player, player.level, rtr, wand); } blocks = wandJob.getBlockPositions(); } diff --git a/src/main/java/thetadev/constructionwand/wand/WandJob.java b/src/main/java/thetadev/constructionwand/wand/WandJob.java index b683d39..cc75bb2 100644 --- a/src/main/java/thetadev/constructionwand/wand/WandJob.java +++ b/src/main/java/thetadev/constructionwand/wand/WandJob.java @@ -86,6 +86,10 @@ public class WandJob return placeSnapshots.stream().map(ISnapshot::getPos).collect(Collectors.toSet()); } + public int blockCount() { + return placeSnapshots.size(); + } + public boolean doIt() { ArrayList executed = new ArrayList<>(); From 3b948612c719fdcb79a2e06580efb836c00420aa Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 1 Jun 2023 13:52:40 +0200 Subject: [PATCH 09/12] fix: #76 Logic Issue with Placement --- gradle.properties | 2 +- .../constructionwand/wand/undo/PlaceSnapshot.java | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 93053cb..60e1417 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,4 +14,4 @@ botania=1.16-398 jei_version=jei-1.16.1:7.0.1.10 version_major=2 -version_minor=5 \ No newline at end of file +version_minor=11 \ No newline at end of file diff --git a/src/main/java/thetadev/constructionwand/wand/undo/PlaceSnapshot.java b/src/main/java/thetadev/constructionwand/wand/undo/PlaceSnapshot.java index 63fae19..a01e851 100644 --- a/src/main/java/thetadev/constructionwand/wand/undo/PlaceSnapshot.java +++ b/src/main/java/thetadev/constructionwand/wand/undo/PlaceSnapshot.java @@ -1,8 +1,6 @@ package thetadev.constructionwand.wand.undo; -import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItemUseContext; @@ -100,7 +98,7 @@ public class PlaceSnapshot implements ISnapshot // Can block be placed? BlockState blockState = item.getBlock().getStateForPlacement(ctx); - if(blockState == null) return null; + if(blockState == null || !blockState.isValidPosition(world, pos)) return null; // Forbidden Tile Entity? if(!WandUtil.isTEAllowed(blockState)) return null; @@ -108,10 +106,6 @@ public class PlaceSnapshot implements ISnapshot // No entities colliding? if(WandUtil.entitiesCollidingWithBlock(world, blockState, pos)) return null; - // Adjust blockstate to neighbors - blockState = Block.getValidBlockForPosition(blockState, world, pos); - if(blockState.getBlock() == Blocks.AIR || !blockState.isValidPosition(world, pos)) return null; - // Copy block properties from supporting block if(targetMode && supportingBlock != null) { // Block properties to be copied (alignment/rotation properties) From bca1c8d4715a4d4394119885acfd0b5b90517b9b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 1 Jun 2023 17:46:53 +0200 Subject: [PATCH 10/12] fix: backport update --- .../thetadev/constructionwand/client/RenderBlockPreview.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java b/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java index 2b668bd..7a0878f 100644 --- a/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java +++ b/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java @@ -44,7 +44,7 @@ public class RenderBlockPreview // from the last placement are lagging if(wandJob == null || !compareRTR(wandJob.rayTraceResult, rtr) || !(wandJob.wand.equals(wand)) || wandJob.blockCount() < 2) { - wandJob = ItemWand.getWandJob(player, player.level, rtr, wand); + wandJob = ItemWand.getWandJob(player, player.getEntityWorld(), rtr, wand); } blocks = wandJob.getBlockPositions(); } From ffe6be051f074c880077c386820da8b4db8830ee Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 1 Jun 2023 18:04:40 +0200 Subject: [PATCH 11/12] fix: remove JEI integration --- build.gradle | 2 +- .../jei/ConstructionWandJeiPlugin.java | 67 ------------------- .../assets/constructionwand/lang/de_de.json | 9 --- .../assets/constructionwand/lang/en_us.json | 9 --- .../assets/constructionwand/lang/ko_kr.json | 11 +-- .../assets/constructionwand/lang/pt_br.json | 11 +-- .../assets/constructionwand/lang/ru_ru.json | 9 --- .../assets/constructionwand/lang/sv_se.json | 9 --- .../assets/constructionwand/lang/zh_cn.json | 9 --- 9 files changed, 3 insertions(+), 133 deletions(-) delete mode 100644 src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java diff --git a/build.gradle b/build.gradle index dc6deda..e506b3d 100644 --- a/build.gradle +++ b/build.gradle @@ -101,7 +101,7 @@ dependencies { version: "${project.mcversion}-${project.forgeversion}" ]) - compileOnly fg.deobf("mezz.jei:${jei_version}:api") + //compileOnly fg.deobf("mezz.jei:${jei_version}:api") runtimeOnly fg.deobf("mezz.jei:${jei_version}") compileOnly fg.deobf([ diff --git a/src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java b/src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java deleted file mode 100644 index 232373a..0000000 --- a/src/main/java/thetadev/constructionwand/integrations/jei/ConstructionWandJeiPlugin.java +++ /dev/null @@ -1,67 +0,0 @@ -package thetadev.constructionwand.integrations.jei; - -import mezz.jei.api.IModPlugin; -import mezz.jei.api.JeiPlugin; -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.registration.IRecipeRegistration; -import net.minecraft.client.util.InputMappings; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.util.ResourceLocation; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import thetadev.constructionwand.ConstructionWand; -import thetadev.constructionwand.basics.ConfigClient; -import thetadev.constructionwand.basics.ConfigServer; -import thetadev.constructionwand.items.ModItems; - -import javax.annotation.Nonnull; - -@JeiPlugin -public class ConstructionWandJeiPlugin implements IModPlugin -{ - private static final ResourceLocation pluginId = new ResourceLocation(ConstructionWand.MODID, ConstructionWand.MODID); - private static final String baseKey = ConstructionWand.MODID + ".description."; - private static final String baseKeyItem = "item." + ConstructionWand.MODID + "."; - - @Nonnull - @Override - public ResourceLocation getPluginUid() { - return pluginId; - } - - private ITextComponent keyComboComponent(boolean shiftOpt, ITextComponent optkeyComponent) { - String key = shiftOpt ? "sneak_opt" : "sneak"; - return new TranslationTextComponent(baseKey + "key." + key, optkeyComponent).mergeStyle(TextFormatting.BLUE); - } - - @Override - public void registerRecipes(IRecipeRegistration registration) { - ITextComponent optkeyComponent = new TranslationTextComponent(InputMappings.getInputByCode(ConfigClient.OPT_KEY.get(), -1).getTranslationKey()) - .mergeStyle(TextFormatting.BLUE); - ITextComponent wandModeComponent = keyComboComponent(ConfigClient.SHIFTOPT_MODE.get(), optkeyComponent); - ITextComponent wandGuiComponent = keyComboComponent(ConfigClient.SHIFTOPT_GUI.get(), optkeyComponent); - - for(Item wand : ModItems.WANDS) { - ConfigServer.WandProperties wandProperties = ConfigServer.getWandProperties(wand); - - String durabilityKey = wand == ModItems.WAND_INFINITY ? "unlimited" : "limited"; - ITextComponent durabilityComponent = new TranslationTextComponent(baseKey + "durability." + durabilityKey, wandProperties.getDurability()); - - registration.addIngredientInfo(new ItemStack(wand), VanillaTypes.ITEM, - new TranslationTextComponent(baseKey + "wand", - new TranslationTextComponent(baseKeyItem + wand.getRegistryName().getPath()), - wandProperties.getLimit(), durabilityComponent, - optkeyComponent, wandModeComponent, wandGuiComponent) - ); - } - - for(Item core : ModItems.CORES) { - registration.addIngredientInfo(new ItemStack(core), VanillaTypes.ITEM, - new TranslationTextComponent(baseKey + core.getRegistryName().getPath()), - new TranslationTextComponent(baseKey + "core", wandModeComponent) - ); - } - } -} diff --git a/src/main/resources/assets/constructionwand/lang/de_de.json b/src/main/resources/assets/constructionwand/lang/de_de.json index a4d2f8f..74865f3 100644 --- a/src/main/resources/assets/constructionwand/lang/de_de.json +++ b/src/main/resources/assets/constructionwand/lang/de_de.json @@ -57,14 +57,5 @@ "constructionwand.option.random.no": "§cAus", "constructionwand.option.random.no.desc": "Platziere Blöcke normal", - "constructionwand.description.wand": "Ein %1$s kann maximal %2$d Blöcke auf der dir zugewandten Seite eines Bauwerks platzieren und hält %3$s.\n\nHalte %5$s gedrückt und scrolle, um die Platzierung zu beschränken (Horizontal, Vertikal, Nord/Süd, Ost/West, Keine).\n\nÖffne den Optionsbildschirm mit %6$s§9+Rechtsklick§0.\n\n§5§nRÜCKGÄNGIG§0§r\nHalte §9Schleichen+§0%4$s während du einen Block fokussierst. Die letzten platzierten Blöcke werden mit einem grünen Rahmen markiert. §9Schleichen+§0%4$s§9+Rechtsklick§0 auf einen dieser Blöcke macht diese Operation rückgängig und gibt dir alle Items zurück. Wenn du den Kristall der Zerstörung benutzt hast, werden die zerstörten Blöcke wiederhergestellt.\n\n§5§nCONTAINER§0§r\nShulkerkisten, Bündel und viele Container von anderen Mods können Baumaterial für deinen Stab bereitstellen.\n\n§5§nLINKE-HAND-PRIORITÄT§0§r\nWenn du einen Block in der linken Hand hältst, wird der Stab diesen anstatt des Blocks, den du anschaust, platzieren.", - "constructionwand.description.durability.limited": "für %d Blöcke", - "constructionwand.description.durability.unlimited": "unendlich lang", - "constructionwand.description.key.sneak": "Schleichen", - "constructionwand.description.key.sneak_opt": "Schleichen+%s", - "constructionwand.description.core": "§5§nINSTALLATION§0§r\nLege deinen neuen Kristall zusammen mit dem Stab auf eine Werkbank, um ihn einzusetzen. Um zwischen den Kristallen zu wechseln, halte %s gedrückt und klicke mit der linken Maustaste ins Leere. Alternativ kannst du den Kristall auch im Optionsbildschirm auswählen.", - "constructionwand.description.core_angel": "Der Kristall der Engel platziert einen Block auf der gegenüberliegenden Seites des Blocks (oder der Blockreihe) den du anschaust. Die maximale Entfernung hängt vom Material des Stabes ab. Ein Rechtsklick ins Leere platziert einen Block mitten in der Luft. Hierfür musst du den Block, den du platzieren willst, in der linken Hand halten.", - "constructionwand.description.core_destruction": "Der Kristall der Zerstörung zerstört Blöcke (keine Tile Entities) auf der dir zugewandten Seite. Die maximale Anzahl Blöcke hängt vonm Material des Stabes ab. Zerstörte Blöcke verschwinden im Nichts, du kannst Fehler jedoch rückgängig machen.", - "stat.constructionwand.use_wand": "Blöcke mithilfe des Stabs platziert" } \ No newline at end of file diff --git a/src/main/resources/assets/constructionwand/lang/en_us.json b/src/main/resources/assets/constructionwand/lang/en_us.json index 619fc45..5331b7b 100644 --- a/src/main/resources/assets/constructionwand/lang/en_us.json +++ b/src/main/resources/assets/constructionwand/lang/en_us.json @@ -57,14 +57,5 @@ "constructionwand.option.random.no": "§cNo", "constructionwand.option.random.no.desc": "Don't randomize placed blocks", - "constructionwand.description.wand": "The %1$s can place up to %2$d blocks at the side of a building facing you and lasts %3$s.\n\nHold down %5$s and scroll to change placement restriction (Horizontal, Vertical, North/South, East/West, No lock).\n\nOpen the option screen with %6$s§9+Right click§0.\n\n§5§nUNDO§0§r\nHolding down §9Sneak+§0%4$s while looking at a blocks will show you the last blocks you placed with a green border around them. §9Sneak+§0%4$s§9+Right clicking§0 any of them will undo the operation, giving you all the items back. If you used the Destruction core, it will restore the blocks.\n\n§5§nCONTAINERS§0§r\nShulker boxes, bundles and many containers from other mods can provide building blocks for the wand.\n\n§5§nOFFHAND PRIORITY§0§r\nHaving blocks in your offhand will place them instead of the block you're looking at.", - "constructionwand.description.durability.limited": "for %d blocks", - "constructionwand.description.durability.unlimited": "forever", - "constructionwand.description.key.sneak": "Sneak", - "constructionwand.description.key.sneak_opt": "Sneak+%s", - "constructionwand.description.core": "§5§nINSTALLATION§0§r\nPut your new core together with your wand in a crafting grid to install it. To switch between cores, hold down %s and left click empty space with your wand or use the option screen.", - "constructionwand.description.core_angel": "The angel core places a block on the opposite side of the block (or row of blocks) you are facing. Maximum distance depends on wand tier. Right click empty space to place a block in midair. To do that, you'll need to have the block you want to place in your offhand.", - "constructionwand.description.core_destruction": "The destruction core destroys blocks (no tile entities) on the side facing you. Maximum number of blocks depends on wand tier. Destroyed blocks disappear into the void, you can use the undo feature if you've made a mistake.", - "stat.constructionwand.use_wand": "Blocks placed using Wand" } \ No newline at end of file diff --git a/src/main/resources/assets/constructionwand/lang/ko_kr.json b/src/main/resources/assets/constructionwand/lang/ko_kr.json index 47df0b2..1fc9ee2 100644 --- a/src/main/resources/assets/constructionwand/lang/ko_kr.json +++ b/src/main/resources/assets/constructionwand/lang/ko_kr.json @@ -56,15 +56,6 @@ "constructionwand.option.random.yes.desc": "핫바에 있는 블록 중 무작위적으로 배치합니다.", "constructionwand.option.random.no": "§c아니오", "constructionwand.option.random.no.desc": "배치할 블록을 무작위적으로 하지 않습니다.", - - "constructionwand.description.wand": "%1$s는 당신 쪽으로 최대 %2$d 블록까지 배치할 수 있고, %3$s 지속됩니다.\n\n%5$s을(를) 누르고 스크롤 하여 배치 제한을 바꾸세요 (수평, 수직, 북쪽/남쪽, 동쪽/서쪽, 제한 없음).\n\n%6$s§9+우클릭§0으로 옵션 스크린을 여세요.\n\n§5§n실행 취소§0§r\n블록을 보면서 §9웅크리기+§0%4$s를 누르고 있으면 마지막으로 배치했던 블록들이 녹색 테두리로 표시됩니다. 그 중 아무거나 §9S웅크리기+§0%4$s§9+우클릭§0 하면 그 작업을 실행 취소하고, 모든 아이템을 돌려줍니다. 파괴 코어를 사용했다면, 블록들을 복원합니다.\n\n§5§n컨테이너§0§r\n셜커 상자, 꾸러미, 그리고 다른 모드의 컨테이너들은 완드에 건설 블록을 제공할 수 있습니다.\n\n§5§n보조손 우선도§0§r\n보조 손에 블록을 가지고 있으면 보고 있는 블록을 배치하는 대신에 보조 손의 블록을 배치할 것입니다.", - "constructionwand.description.durability.limited": "%d 블록 만큼", - "constructionwand.description.durability.unlimited": "영원히", - "constructionwand.description.key.sneak": "웅크리기", - "constructionwand.description.key.sneak_opt": "웅크리기+%s", - "constructionwand.description.core": "§5§n설치§0§r\n새 코어를 완드와 함께 조합창에 넣어 설치하세요. 코어 간에 전환하려면 %s 키를 누른 상태에서 완드로 빈 공간을 좌클릭하거나 옵션 화면을 사용하십시오.", - "constructionwand.description.core_angel": "엔젤 코어는 마주보고 있는 블록(또는 블록 행)의 반대쪽에 블록을 배치합니다. 최대 거리는 완드의 티어에 따라 다릅니다. 빈 공간을 우클릭하면 공중에 블록을 배치할 수 있습니다. 그렇게 하려면 보조 손에 배치하려는 블록이 있어야 합니다.", - "constructionwand.description.core_destruction": "파괴 코어는 당신 쪽의 (타일 엔티티가 없는)블록을 파괴합니다. 최대 블록 수는 완드의 티어에 따라 다릅니다. 파괴된 블록은 공허로 사라지며 실수를 했다면 실행 취소 기능을 사용할 수 있습니다.", - + "stat.constructionwand.use_wand": "완드로 배치한 블록 수" } diff --git a/src/main/resources/assets/constructionwand/lang/pt_br.json b/src/main/resources/assets/constructionwand/lang/pt_br.json index 0b70530..7939754 100644 --- a/src/main/resources/assets/constructionwand/lang/pt_br.json +++ b/src/main/resources/assets/constructionwand/lang/pt_br.json @@ -56,15 +56,6 @@ "constructionwand.option.random.yes.desc": "Coloque blocos aleatórios presentes em seu hotbar", "constructionwand.option.random.no": "§cNão", "constructionwand.option.random.no.desc": "Não randomize blocos colocados", - - "constructionwand.description.wand": "o %1$s pode colocar até %2$d bloqueios ao lado de um prédio de frente para você e dura %3$s.\n\nCalma %5$s e role para alterar a restrição de posicionamento (horizontal, vertical, norte/sul, leste/oeste, sem fechadura).\n\nAbra a tela de opção com %6$s§9+Clique com o botão direito do mouse§0.\n\n§5§nDESFAZER§0§r\nMantendo pressionada §9Esgueirar-se+§0%4$s Enquanto olha para um bloco, mostrará os últimos blocos que você colocou com uma borda verde ao redor deles. §9Esgueirar-se+§0%4$s§9+Certa clicando§0 Qualquer um deles desfazerá a operação, oferecendo todos os itens de volta.Se você usou o núcleo de destruição, ele restaurará os blocos.\n\n§5§nRECIPIENTES§0§r\nCaixas Shulker, pacotes e muitos contêineres de outros mods podem fornecer blocos de construção para a varinha.\n\n§5§nPrioridade imediata§0§r\nTer blocos em sua mão os colocará em vez do bloco que você está olhando.", - "constructionwand.description.durability.limited": "por %d blocos", - "constructionwand.description.durability.unlimited": "para todo sempre", - "constructionwand.description.key.sneak": "Esgueirar-se", - "constructionwand.description.key.sneak_opt": "Esgueirar-se+%s", - "constructionwand.description.core": "§5§nINSTALAÇÃO§0§r\nColoque seu novo núcleo junto com sua varinha em uma grade de criação para instalá -la.Para alternar entre núcleos, mantenha pressionado %s e o clique esquerdo, esvazie o espaço com sua varinha ou use a tela de opção.", - "constructionwand.description.core_angel": "O núcleo do anjo coloca um bloco no lado oposto do bloco (ou fileira de blocos) que você está enfrentando.A distância máxima depende da camada de varinha.Clique com o botão direito do mouse em espaço vazio para colocar um bloco no ar.Para fazer isso, você precisará ter o bloco que deseja colocar em sua mão.", - "constructionwand.description.core_destruction": "O núcleo de destruição destrói blocos (sem entidades de ladrilhos) do lado de frente para você.O número máximo de blocos depende da camada de varinha.Blocos destruídos desaparecem no vazio, você pode usar o recurso de desfazer se cometer um erro.", - + "stat.constructionwand.use_wand": "Blocos colocados usando varinha" } \ No newline at end of file diff --git a/src/main/resources/assets/constructionwand/lang/ru_ru.json b/src/main/resources/assets/constructionwand/lang/ru_ru.json index 5e7ec8c..01c6aac 100644 --- a/src/main/resources/assets/constructionwand/lang/ru_ru.json +++ b/src/main/resources/assets/constructionwand/lang/ru_ru.json @@ -57,14 +57,5 @@ "constructionwand.option.random.no": "§cНет", "constructionwand.option.random.no.desc": "Не располагать блоки в случайном порядке.", - "constructionwand.description.wand": "%1$s может размещать до %2$d блоков сбоку от строения, обращённое к Вам и его хватит на %3$s блоков.\n\nУдерживайте %5$s и прокрутите колёсиком для изменения ограничения по размещении (Горизонтально, Вертикально, Север/Юг, Восток/Запад, Без ограничивания).\n\nОткройте экран настроек при помощи %6$s§9+щелчок правой кнопкой мыши§0.\n\n§5§nОТМЕНА§0§r\nУдерживайте §9Приседание+§0%4$s пока смотрите на блоки, установленные Вами, они будут выделены зелёным контуром. §9Приседание+§0%4$s§9+щелчок правой кнопкой мыши§0 на любой из них отменит операцию, вернув Вам все предметы обратно. Если использовать Ядро разрушения, то он вернёт блоки.\n\n§5§nКОНТЕЙНЕР§0§r\nШалкеровые ящики, мешки и множество контейнеров из других модов могут предоставлять строительные блоки в жезл.\n\n§5§nПРИОРИТЕТ ЛЕВОЙ РУКИ§0§r\nЕсли у Вас в левой руке находятся блоки, то они будут размещаться вместо блока, на который Вы смотрите.", - "constructionwand.description.durability.limited": "на %d блоков", - "constructionwand.description.durability.unlimited": "вечно", - "constructionwand.description.key.sneak": "Приседание", - "constructionwand.description.key.sneak_opt": "Приседание+%s", - "constructionwand.description.core": "§5§nУСТАНОВКА§0§r\nПоложите своё новое ядро вместе со своим жезлом в сетку создания для его установки. Для того, чтобы переключаться между ядрами, удерживайте %s и нажмите левую кнопку мыши по пустому пространству с жезлом в руке или используйте экран настроек.", - "constructionwand.description.core_angel": "Ангельское ядро размещает блоки на противоположной стороне блока (или ряда блоков), обращённые к Вам. Максимальное расстояние зависит от уровня жезла. Щелчок правой кнопкой мыши по пустому воздуху разместит блок в воздухе. Чтобы это сделать, Вам нужно иметь необходимые блоки в левой руке, чтобы разместить их.", - "constructionwand.description.core_destruction": "Ядро разрушения разрушает блоки (не функциональные блоки), обращённые к Вам. Максимально количество блоков зависит от уровня жезла. Разрушенные блоки исчезают в пустоту, можно использовать функцию отмены в случае допущенной ошибки.", - "stat.constructionwand.use_wand": "Блоки, размещённые при помощи Жезла" } diff --git a/src/main/resources/assets/constructionwand/lang/sv_se.json b/src/main/resources/assets/constructionwand/lang/sv_se.json index 23eb3bf..bab195b 100644 --- a/src/main/resources/assets/constructionwand/lang/sv_se.json +++ b/src/main/resources/assets/constructionwand/lang/sv_se.json @@ -57,14 +57,5 @@ "constructionwand.option.random.no": "§cNej", "constructionwand.option.random.no.desc": "Slumpa inte block som ska placeras ut", - "constructionwand.description.wand": "En %1$s kan placera upp till %2$d block på sidan av en byggnad som är riktad mot dig och räcker %3$s.\n\nHåll ned %5$s och rulla med mushjulet för att ändra placeringsbegränsningen (horisontal, vertikal, nord/syd, öst/väst, ingen låsning).\n\nÖppna alternativmenyn med %6$s§9+Högerklick§0.\n\n§5§nÅNGRA§0§r\nNär du håller ned §9Smyga+§0%4$s medan du tittar på ett block kommer du se de senaste blocken du placerade omgivna av en grön ram. §9Smyg+§0%4$s§9+högerklicka§0 på något av dem för att ångra handlingen och få tillbaka alla föremål. Om du har använt rivningskärnan kommer blocken att återställas.\n\n§5§nBEHÅLLARE§0§r\nShulkerlådor, påsar och många behållare från andra moddar kan tillhandahålla byggblock för staven.\n\n§5§nPRIO FÖR SEKUNDÄR HAND§0§r\nBlocken i din sekundära hand placeras i stället för blocket du tittar på.", - "constructionwand.description.durability.limited": "för %d block", - "constructionwand.description.durability.unlimited": "för alltid", - "constructionwand.description.key.sneak": "Smyg", - "constructionwand.description.key.sneak_opt": "Smyg+%s", - "constructionwand.description.core": "§5§nINSTALLATION§0§r\nLägg din nya kärna tillsammans med din stav i ett tillverkningsrutnät för att installera den. Håll ned %s och vänsterklicka i luften med din stav eller använd alternativmenyn för att byta kärna.", - "constructionwand.description.core_angel": "Änglakärnan placerar ett block på den motsatta sidan av blocket (eller blockraden) som är riktad mot dig. Det maximala avståndet beror på stavens nivå. Högerklicka i luften för att placera ett block i luften. För att göra detta behöver du hålla blocket du vill placera i din sekundära hand.", - "constructionwand.description.core_destruction": "Rivningskärnan förstör block (inte blockentiteter) på sidan som är riktad mot dig. Det maximala antalet block beror på stavens nivå. Förstörda block försvinner helt och hållet, men du kan använda ångrafunktionen om du har gjort ett misstag.", - "stat.constructionwand.use_wand": "Block placerade med stavar" } diff --git a/src/main/resources/assets/constructionwand/lang/zh_cn.json b/src/main/resources/assets/constructionwand/lang/zh_cn.json index 013bf8a..3d63f42 100644 --- a/src/main/resources/assets/constructionwand/lang/zh_cn.json +++ b/src/main/resources/assets/constructionwand/lang/zh_cn.json @@ -57,14 +57,5 @@ "constructionwand.option.random.no": "§c否", "constructionwand.option.random.no.desc": "不会随机放置方块", - "constructionwand.description.wand": "%1$s可以在建筑物面向你的一侧放置最多%2$d个方块,持续时间为%3$s。\n\n按住%5$s并滚动以更改放置限制(水平、垂直、北/南、东/西、无锁定)。\n\n在选项配置GUI上打开%6$s§9+右键单击§0。\n\n§5§nUNDO§0§r\n在查看方块时向下折叠§9Sneak+§0%4$s将显示你放置的最后一个方块,并在其周围加上绿色边框。§9潜行+§0%4$s§9+右键单击其中任何一个方块将撤消操作,并将所有以此法放置的方块重返至玩家背包。如果你使用了破坏核心,它将恢复方块。\n\n§5§n容器§0§r\n潜影盒、收纳袋和许多其它模组存在于玩家背包内的容器都可以为建筑手杖提供构建所需的方块。\n\n§5§非即时优先级§0§r\n如果玩家在使用手杖时副手栏持有所需方块将被放置,而不是只是在你的手里放着。", - "constructionwand.description.durability.limited": "需要%d方块", - "constructionwand.description.durability.unlimited": "无限", - "constructionwand.description.key.sneak": "潜行", - "constructionwand.description.key.sneak_opt": "潜行+%s", - "constructionwand.description.core": "§5§n安装§0§r\n将新的手杖核心与你的手杖一起放入工作台中进行组装。如果你想要在核心功能之间切换,请按住%s并用手杖左键单击空地或使用手杖的选项配置GUI。", - "constructionwand.description.core_angel": "天使核心可将一个方块放置在你所面对的方块(或一排方块)的对面。最大距离取决于手杖材质。在空地上手持手杖并单击鼠标右键即可在空中放置方块。要做到这一点。你需要将想要被在空中放置的方块放在你的副手栏中。", - "constructionwand.description.core_destruction": "毁灭核心会破坏面向你一侧的方块(破坏时被破坏的方块不可存在实体)。最大破坏方块数取决于手杖材质。被使用毁灭核心破坏的方块会消失。如果你只是不小心使用了毁灭核心。可以使用“撤消”功能以撤回被破坏并消失的物品返回原处。", - "stat.constructionwand.use_wand": "使用建筑手杖所放置的方块" } From 8bd89a10e2b4d6bf10647a94fb4067e4f974dea7 Mon Sep 17 00:00:00 2001 From: RuyaSavascisi Date: Tue, 16 Jul 2024 09:27:21 +0300 Subject: [PATCH 12/12] tr_tr.json Turkish Localization for the mod --- .../assets/constructionwand/lang/tr_tr.json | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/main/resources/assets/constructionwand/lang/tr_tr.json diff --git a/src/main/resources/assets/constructionwand/lang/tr_tr.json b/src/main/resources/assets/constructionwand/lang/tr_tr.json new file mode 100644 index 0000000..05f5044 --- /dev/null +++ b/src/main/resources/assets/constructionwand/lang/tr_tr.json @@ -0,0 +1,70 @@ +{ + "item.constructionwand.stone_wand": "Taş Asa", + "item.constructionwand.iron_wand": "Demir Asa", + "item.constructionwand.diamond_wand": "Elmas Asa", + "item.constructionwand.infinity_wand": "Sonsuzluk Asası", + "item.constructionwand.core_angel": "Melek Asa Çekirdeği", + "item.constructionwand.core_destruction": "Yıkım Asa Çekirdeği", + + "constructionwand.tooltip.blocks": "Maks. %d blok", + "constructionwand.tooltip.shift": "[SHIFT] bas", + "constructionwand.tooltip.cores": "Asa çekirdekleri:", + "constructionwand.tooltip.core_tip": "Çekirdeği asanızla birlikte üretim ızgarasında birleştirin", + + "constructionwand.option.cores": "", + "constructionwand.option.cores.constructionwand:default": "İnşa Çekirdeği", + "constructionwand.option.cores.constructionwand:default.desc": "Yapınızın size bakan tarafını uzatır", + "constructionwand.option.cores.constructionwand:core_angel": "§6Melek Çekirdeği", + "constructionwand.option.cores.constructionwand:core_angel.desc": "Blokların arkasına ve havaya yerleştirir", + "constructionwand.option.cores.constructionwand:core_destruction": "§cYıkım Çekirdeği", + "constructionwand.option.cores.constructionwand:core_destruction.desc": "Size bakan taraftaki blokları yok eder", + + "constructionwand.option.lock": "Sınırlama: ", + "constructionwand.option.lock.horizontal": "§aSol/Sağ", + "constructionwand.option.lock.horizontal.desc": "Orijinal bloğun önüne yatay bir sütun oluşturur", + "constructionwand.option.lock.vertical": "§aYukarı/Aşağı", + "constructionwand.option.lock.vertical.desc": "Orijinal bloğun önünde dikey bir sütun oluşturur", + "constructionwand.option.lock.northsouth": "§6Kuzey/Güney", + "constructionwand.option.lock.northsouth.desc": "Orijinal bloğun üstüne K/G yönünde bir sıra oluşturun", + "constructionwand.option.lock.eastwest": "§6Doğu/Batı", + "constructionwand.option.lock.eastwest.desc": "Orijinal bloğun üstüne D/B yönünde bir sıra oluşturur", + "constructionwand.option.lock.nolock": "§cYok", + "constructionwand.option.lock.nolock.desc": "Orijinal bloğun herhangi bir tarafından uzatır", + + "constructionwand.option.direction": "Yön: ", + "constructionwand.option.direction.target": "§6Hedef", + "constructionwand.option.direction.target.desc": "Blokları hedef blokla aynı yönde yerleştirir", + "constructionwand.option.direction.player": "§aOyuncu", + "constructionwand.option.direction.player.desc": "Blokları oyuncuya bakacak şekilde yerleştirir", + + "constructionwand.option.replace": "Değiştirme: ", + "constructionwand.option.replace.yes": "§aEvet", + "constructionwand.option.replace.yes.desc": "Sıvılar, kar ve uzun otlar gibi belirli blokları değiştirir", + "constructionwand.option.replace.no": "§cHayır", + "constructionwand.option.replace.no.desc": "Blokları değiştirmez", + + "constructionwand.option.match": "Eşleşen: ", + "constructionwand.option.match.exact": "§aAynı", + "constructionwand.option.match.exact.desc": "Yalnızca tamamen aynı olan blokları uzatır", + "constructionwand.option.match.similar": "§6Benzer", + "constructionwand.option.match.similar.desc": "Benzer bloklara (toprak/çimen türleri) eşit davranır", + "constructionwand.option.match.any": "§cHerhangi", + "constructionwand.option.match.any.desc": "Herhangi bir bloğu uzatır", + + "constructionwand.option.random": "Rastgele: ", + "constructionwand.option.random.yes": "§aEvet", + "constructionwand.option.random.yes.desc": "Hotbar'ınızdan rastgele bloklar yerleştirir", + "constructionwand.option.random.no": "§cHayır", + "constructionwand.option.random.no.desc": "Yerleştirilen blokları rastgeleleştirmez", + + "constructionwand.description.wand": "%1$s, bir yapının size bakan tarafına en fazla %2$d blok yerleştirebilir ve %3$s dayanıklılığı vardır.\n\n%5$s tuşunu basılı tutun ve yerleştirme sınırlamasını değiştirmek için kaydırın (Yatay, Dikey, Kuzey/Güney, Doğu/Batı, Kilitsiz).\n\n%6$s§9+Sağ tıklama ile seçenek ekranını açın§0.\n\n§5§nGERİ ALMA§0§r\nBir bloğa bakarken §9Eğil+§0%4$s tuşunu basılı tuttuğunuzda, yerleştirdiğiniz son bloklar, çevresinde yeşil bir çerçeveyle gösterilecektir. §9Eğil+§0%4$s§9+Bunlardan herhangi birine sağ tıklama§0 işlemi geri alacak ve tüm öğeleri size geri verecektir. Yıkım çekirdeğini kullandıysanız blokları geri koyacaktır.\n\n§5§nKONTEYNERLER§0§r\nShulker kutuları, paketler ve diğer modlardan birçok konteyner, asa için yapı taşları sağlar.\n\n§5§nBOŞTAKİ EL ÖNCELİĞݧ0§r\nBoştaki elinizde blok olduğunda, baktığınız blok yerine boştaki elinizdekini yerleştirirsiniz.", + "constructionwand.description.durability.limited": "%d blok için", + "constructionwand.description.durability.unlimited": "sonsuza kadar", + "constructionwand.description.key.sneak": "Eğil", + "constructionwand.description.key.sneak_opt": "Eğil+%s", + "constructionwand.description.core": "§5§nKURULUM§0§r\nTakmak için yeni çekirdeğinizi asanızla birlikte bir üretim ızgarasına koyun. Çekirdekler arasında geçiş yapmak için %s tuşunu basılı tutun ve asanızla boş alana sol tıklayın veya seçenek ekranını kullanın", + "constructionwand.description.core_angel": "Melek çekirdeği, karşı karşıya olduğunuz bloğun (veya blok sırasının) karşı tarafına bir blok yerleştirir. Maksimum mesafe asa seviyesine bağlıdır. Havada bir blok yerleştirmek için boş alana sağ tıklayın. Bunu yapmak için, yerleştirmek istediğiniz bloğu boştaki elinize almalısınız.", + "constructionwand.description.core_destruction": "Yıkım çekirdeği, size bakan taraftaki blokları (tile entities haricinde) yok eder. Maksimum blok sayısı asa seviyesine bağlıdır. Yok edilen bloklar boşluğa kaybolur, hata yaptıysanız geri alma özelliğini kullanabilirsiniz.", + + "stat.constructionwand.use_wand": "Asa kullanılarak yerleştirilen bloklar" +} \ No newline at end of file