Compare commits

..

No commits in common. "3788c2b8da5e45e87525f6213fdf46b4d8c50cf5" and "bb48292c6f31854c2fa337fb9ae6a7b939b8abe5" have entirely different histories.

12 changed files with 33 additions and 213 deletions

View file

@ -1,8 +1,8 @@
# Construction Wand # Construction Wand
With a Construction Wand you can place multiple blocks (up to 1024) at once, extending your build on the side you're 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 facing. Sneak+Right click to activate angel mode which allows you to place a block at the opposite side of the block
block you are facing, conjure blocks in mid air or destroy lots of blocks very fast. facing you. If you concentrate enough, you can even conjure a block in mid air!
![](images/wands.png) ![](images/wands.png)
@ -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/crafting5.png)
![](https://raw.githubusercontent.com/Theta-Dev/ConstructionWand/1.16.2/images/crafting6.png) ![](https://raw.githubusercontent.com/Theta-Dev/ConstructionWand/1.16.2/images/crafting6.png)
## Keybindings ## OPTKEY
To change a wand's core and options or undo your placement you need to hold down the wand option key 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 (refered as OPTKEY). By default, this is CTRL, but it can be changed in the client config file. To prevent unwanted
@ -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 **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). (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 If the direction lock is switched off, the wand will extend the entire face of the building it's pointed at.
has no effect if the angel core is enabled. This option has no effect in Angel mode.
**Direction:** If set to "Player" the wand places blocks in the same direction as if they were placed by yourself. **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: Target mode places the blocks in the same direction as their supporting block. See the picture below:
@ -92,14 +92,13 @@ are exactly the same as the selected block.<br>
~~Shamelessly stolen~~ Inspired by the Trowel from Quark. ~~Shamelessly stolen~~ Inspired by the Trowel from Quark.
## Undo ## Undo
Holding down SHIFT+CTRL while looking at a blocks will show you the last blocks you placed with a green border
Holding down Sneak+OPTKEY while looking at a block will show you the last blocks you placed with a green border around around them. SHIFT+CTRL+Right clickking any of them will undo the operation, giving you all the items back.
them. Sneak+OPTKEY+Right clicking any of them will undo the operation, giving you all the items back. If you used the If you used the Destruction core, it will restore the blocks.
Destruction core, it will restore the blocks.
## Additional features ## Additional features
- If you have shulker boxes (or bundles in MC 1.17+) in your inventory filled with blocks, the wand can pull them out
- Shulker boxes, bundles (MC 1.17+) and many containers from other mods can provide building blocks for the wand and place them
- Botania compatibility: The Black Hole Talisman can supply blocks just like shulker boxes can. Having a Rod of the - 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. Lands / Rod of the Depths in your inventory will provide you with infinite dirt/cobble at the cost of Mana.
@ -110,10 +109,14 @@ Destruction core, it will restore the blocks.
- **1.16+ only:** The Infinity Wand won't burn in lava just like netherite gear. - **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
under `src/main/resources/assets/constructionwand/lang/`.
## TileEntity Blacklist ## TileEntity Blacklist
Some modded TileEntitys can cause issues when placed using a wand. They may turn into invisible and 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. unremovable ghost blocks, become unbreakable or cause other unwanted effects.
@ -124,11 +127,3 @@ If you find some of them you can tell me by creating
an issue, commenting on Curse or editing the default blacklist yourself 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) (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. 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/`.

View file

@ -89,10 +89,6 @@ repositories {
maven { maven {
url = "https://maven.theillusivec4.top/" url = "https://maven.theillusivec4.top/"
} }
maven {
name = "JEI Maven"
url "https://dvs1.progwml6.com/files/maven"
}
} }
dependencies { dependencies {
@ -102,17 +98,12 @@ dependencies {
version: "${project.mcversion}-${project.forgeversion}" version: "${project.mcversion}-${project.forgeversion}"
]) ])
compileOnly fg.deobf("mezz.jei:${jei_version}:api")
runtimeOnly fg.deobf("mezz.jei:${jei_version}")
/*
compileOnly fg.deobf([ compileOnly fg.deobf([
group: "vazkii.botania", group: "vazkii.botania",
name: "Botania", name: "Botania",
version: "${project.botania}", version: "${project.botania}",
classifier: "api" classifier: "api"
]) ])
*/
} }
jar { jar {

View file

@ -1,18 +1,11 @@
org.gradle.jvmargs=-Xmx3G org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false org.gradle.daemon=false
author=thetadev author=thetadev
modid=constructionwand modid=constructionwand
mcversion=1.17.1 mcversion=1.17.1
forgeversion=37.1.0 forgeversion=37.0.73
mcp_channel=official mcp_channel=official
mcp_mappings=1.17.1 mcp_mappings=1.17.1
botania=1.16.2-405
# Source: https://maven.blamejared.com/vazkii/botania/Botania/
# botania=1.16.2-405
# Source: https://dvs1.progwml6.com/files/maven/mezz/jei/
jei_version=jei-1.17.1:8.3.0.39
version_major=2 version_major=2
version_minor=5 version_minor=4

View file

@ -64,7 +64,7 @@ public class ConfigServer
else durability = null; else durability = null;
builder.comment("Wand block limit"); builder.comment("Wand block limit");
limit = builder.defineInRange("limit", defLimit, 1, Integer.MAX_VALUE); limit = builder.defineInRange("limit", defLimit, 1, Integer.MAX_VALUE);
builder.comment("Max placement distance with angel core (0 to disable angel core)"); builder.comment("Max placement distance with angel mode (0 to disable angel core)");
angel = builder.defineInRange("angel", defAngel, 0, Integer.MAX_VALUE); angel = builder.defineInRange("angel", defAngel, 0, Integer.MAX_VALUE);
builder.comment("Wand destruction block limit (0 to disable destruction core)"); builder.comment("Wand destruction block limit (0 to disable destruction core)");
destruction = builder.defineInRange("destruction", defDestruction, 0, Integer.MAX_VALUE); 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); MAX_RANGE = BUILDER.defineInRange("MaxRange", 100, 0, Integer.MAX_VALUE);
BUILDER.comment("Number of operations that can be undone"); BUILDER.comment("Number of operations that can be undone");
UNDO_HISTORY = BUILDER.defineInRange("UndoHistory", 3, 0, Integer.MAX_VALUE); UNDO_HISTORY = BUILDER.defineInRange("UndoHistory", 3, 0, Integer.MAX_VALUE);
BUILDER.comment("Place blocks below you while falling > 10 blocks with angel core (Can be used to save you from drops/the void)"); BUILDER.comment("Place blocks below you while falling > 10 blocks with angel mode (Can be used to save you from drops/the void)");
ANGEL_FALLING = BUILDER.define("AngelFalling", false); ANGEL_FALLING = BUILDER.define("AngelFalling", false);
BUILDER.comment("Blocks to treat equally when in Similar mode. Enter block IDs seperated by ;"); 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); SIMILAR_BLOCKS = BUILDER.defineList("SimilarBlocks", Arrays.asList(SIMILAR_BLOCKS_DEFAULT), obj -> true);

View file

@ -1,67 +0,0 @@
package thetadev.constructionwand.integrations.jei;
import com.mojang.blaze3d.platform.InputConstants;
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.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.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 Component keyComboComponent(boolean shiftOpt, Component optkeyComponent) {
String key = shiftOpt ? "sneak_opt" : "sneak";
return new TranslatableComponent(baseKey + "key." + key, optkeyComponent).withStyle(ChatFormatting.BLUE);
}
@Override
public void registerRecipes(IRecipeRegistration registration) {
Component optkeyComponent = new TranslatableComponent(InputConstants.getKey(ConfigClient.OPT_KEY.get(), -1).getName())
.withStyle(ChatFormatting.BLUE);
Component wandModeComponent = keyComboComponent(ConfigClient.SHIFTOPT_MODE.get(), optkeyComponent);
Component 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";
Component durabilityComponent = new TranslatableComponent(baseKey + "durability." + durabilityKey, wandProperties.getDurability());
registration.addIngredientInfo(new ItemStack(wand), VanillaTypes.ITEM,
new TranslatableComponent(baseKey + "wand",
new TranslatableComponent(baseKeyItem + wand.getRegistryName().getPath()),
wandProperties.getLimit(), durabilityComponent,
optkeyComponent, wandModeComponent, wandGuiComponent)
);
}
for(Item core : ModItems.CORES) {
registration.addIngredientInfo(new ItemStack(core), VanillaTypes.ITEM,
new TranslatableComponent(baseKey + core.getRegistryName().getPath()),
new TranslatableComponent(baseKey + "core", wandModeComponent)
);
}
}
}

View file

@ -41,7 +41,6 @@ public class ModItems
// Collections // Collections
public static final Item[] WANDS = {WAND_STONE, WAND_IRON, WAND_DIAMOND, WAND_INFINITY}; 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<Item> ALL_ITEMS = new HashSet<>(); public static final HashSet<Item> ALL_ITEMS = new HashSet<>();

View file

@ -94,19 +94,15 @@ public class WandJob
if(wand.isEmpty() || wandItem.remainingDurability(wand) == 0) break; if(wand.isEmpty() || wandItem.remainingDurability(wand) == 0) break;
if(snapshot.execute(world, player, rayTraceResult)) { if(snapshot.execute(world, player, rayTraceResult)) {
if(player.isCreative()) executed.add(snapshot);
else {
// If the item cant be taken, undo the placement // If the item cant be taken, undo the placement
if(wandSupplier.takeItemStack(snapshot.getRequiredItems()) == 0) { if(wandSupplier.takeItemStack(snapshot.getRequiredItems()) == 0) executed.add(snapshot);
executed.add(snapshot);
wand.hurt(1, player.getRandom(), (ServerPlayer) player);
}
else { else {
ConstructionWand.LOGGER.info("Item could not be taken. Remove block: " + ConstructionWand.LOGGER.info("Item could not be taken. Remove block: " +
snapshot.getBlockState().getBlock().toString()); snapshot.getBlockState().getBlock().toString());
snapshot.forceRestore(world); snapshot.forceRestore(world);
} }
}
wand.hurt(1, player.getRandom(), (ServerPlayer) player);
player.awardStat(ModStats.USE_WAND); player.awardStat(ModStats.USE_WAND);
} }
} }

View file

@ -11,9 +11,9 @@ authors="ThetaDev"
description=''' description='''
Construction Wands make building easier! Construction Wands make building easier!
With a Construction Wand you can place multiple blocks (up to 1024) at once, extending your build on the side you're With a Construction Wand you can place multiple blocks (up to 1024) at once, extending you build on the side you're facing.
facing. If that's not enough: you can upgrade your wand with additional cores, allowing you to place a block Sneak+Right click to activate angel mode which allows you to place a block at the opposite side of the block facing you.
behind the block you are facing, conjure blocks in mid air or destroy lots of blocks very fast. If you concentrate enough, you can even conjure a block in mid air!
This is my first minecraft mod. May the odds be ever in your favor. This is my first minecraft mod. May the odds be ever in your favor.
''' '''

View file

@ -57,14 +57,5 @@
"constructionwand.option.random.no": "§cAus", "constructionwand.option.random.no": "§cAus",
"constructionwand.option.random.no.desc": "Platziere Blöcke normal", "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" "stat.constructionwand.use_wand": "Blöcke mithilfe des Stabs platziert"
} }

View file

@ -57,14 +57,5 @@
"constructionwand.option.random.no": "§cNo", "constructionwand.option.random.no": "§cNo",
"constructionwand.option.random.no.desc": "Don't randomize placed blocks", "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" "stat.constructionwand.use_wand": "Blocks placed using Wand"
} }

View file

@ -1,70 +0,0 @@
{
"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",
"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"
}

View file

@ -1,6 +1,7 @@
{ {
"pack": { "pack": {
"description": "ConstructionWand resources", "description": "ConstructionWand resources",
"pack_format": 7 "pack_format": 5,
"_comment": "A pack_format of 5 requires json lang files and some texture changes from 1.15. Note: we require v5 pack meta for all mods."
} }
} }