mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-15 14:07:38 +00:00
Compare commits
11 Commits
v1.19.4-1.
...
v1.20.1-1.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8f1bf4341c | ||
![]() |
9a48b53a83 | ||
![]() |
9519448e43 | ||
![]() |
915b6f9d81 | ||
![]() |
a98f3b2a4c | ||
![]() |
ebaf49508f | ||
![]() |
c45fc94752 | ||
![]() |
fd1f6dda32 | ||
![]() |
5d6389dc50 | ||
![]() |
1ece2aa23b | ||
![]() |
ff1e5f6823 |
@@ -48,7 +48,6 @@ License: MPL-2.0
|
||||
|
||||
Files:
|
||||
doc/logo.png
|
||||
doc/logo-darkmode.png
|
||||
projects/common/src/main/resources/assets/computercraft/models/*
|
||||
projects/common/src/main/resources/assets/computercraft/textures/*
|
||||
projects/common/src/main/resources/pack.mcmeta
|
||||
|
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
# Contributing to CC: Tweaked
|
||||
As with many open source projects, CC: Tweaked thrives on contributions from other people! This document (hopefully)
|
||||
provides an introduction as to how to get started with helping out.
|
||||
provides an introduction as to how to get started in helping out.
|
||||
|
||||
If you've any other questions, [just ask the community][community] or [open an issue][new-issue].
|
||||
|
||||
@@ -28,7 +28,7 @@ automatically with GitHub, so please don't submit PRs adding/changing translatio
|
||||
## Setting up a development environment
|
||||
In order to develop CC: Tweaked, you'll need to download the source code and then run it.
|
||||
|
||||
- Make sure you've got the following software installed:
|
||||
- Make sure you've got the following software instealled:
|
||||
- Java Development Kit (JDK) installed. This can be downloaded from [Adoptium].
|
||||
- [Git](https://git-scm.com/).
|
||||
- If you want to work on documentation, [NodeJS][node].
|
||||
@@ -51,10 +51,10 @@ If you want to run CC:T in a normal Minecraft instance, run `./gradlew assemble`
|
||||
## Developing CC: Tweaked
|
||||
Before making any major changes to CC: Tweaked, I'd recommend you have a read of the [the architecture
|
||||
document][architecture] first. While it's not a comprehensive document, it gives a good hint of where you should start
|
||||
looking to make your changes. As always, if you're not sure, [do ask the community][community]!
|
||||
looking to make your changes. As always, if you're not sure [do ask the community][community]!
|
||||
|
||||
### Testing
|
||||
When making larger changes, it may be useful to write a test to make sure your code works as expected.
|
||||
When making larger changes, it's may be useful to write a test to make sure your code works as expected.
|
||||
|
||||
CC: Tweaked has several test suites, each designed to test something different:
|
||||
|
||||
@@ -91,11 +91,11 @@ file.
|
||||
|
||||
Documentation is built using [illuaminate] which, while not currently documented (somewhat ironic), is largely the same
|
||||
as [ldoc][ldoc]. Documentation comments are written in Markdown, though note that we do not support many GitHub-specific
|
||||
markdown features. If you can, do check what the documentation looks like locally!
|
||||
markdown features - if you can, do check what the documentation looks like locally!
|
||||
|
||||
When writing long-form documentation (such as the guides in [doc/guides](doc/guides)), I find it useful to tell a
|
||||
narrative. Think of what you want the user to learn or achieve, then start introducing a simple concept, and then talk
|
||||
about how you can build on that until you've covered everything!
|
||||
narrative. Think of what you want the user to learn or achieve, then start introducing a simple concept and then talk
|
||||
about how you can build on that, until you've covered everything!
|
||||
|
||||
[new-issue]: https://github.com/cc-tweaked/CC-Tweaked/issues/new/choose "Create a new issue"
|
||||
[community]: README.md#community "Get in touch with the community."
|
||||
|
22
README.md
22
README.md
@@ -4,12 +4,7 @@ SPDX-FileCopyrightText: 2017 The CC: Tweaked Developers
|
||||
SPDX-License-Identifier: MPL-2.0
|
||||
-->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./doc/logo-darkmode.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="./doc/logo.png">
|
||||
<img alt="CC: Tweaked" src="./doc/logo.png">
|
||||
</picture>
|
||||
|
||||
# 
|
||||
[](https://github.com/cc-tweaked/CC-Tweaked/actions "Current build status")
|
||||
[][CurseForge]
|
||||
[][Modrinth]
|
||||
@@ -49,7 +44,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
// Vanilla (i.e. for multi-loader systems)
|
||||
compileOnly("cc.tweaked:cc-tweaked-$mcVersion-common-api:$cctVersion")
|
||||
compileOnly("cc.tweaked:cc-tweaked-$mcVersion-common-api")
|
||||
|
||||
// Forge Gradle
|
||||
compileOnly("cc.tweaked:cc-tweaked-$mcVersion-core-api:$cctVersion")
|
||||
@@ -62,19 +57,6 @@ dependencies {
|
||||
}
|
||||
```
|
||||
|
||||
When using ForgeGradle, you may also need to add the following:
|
||||
|
||||
```groovy
|
||||
minecraft {
|
||||
runs {
|
||||
configureEach {
|
||||
property 'mixin.env.remapRefMap', 'true'
|
||||
property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You should also be careful to only use classes within the `dan200.computercraft.api` package. Non-API classes are
|
||||
subject to change at any point. If you depend on functionality outside the API, file an issue, and we can look into
|
||||
exposing more features.
|
||||
|
@@ -56,14 +56,13 @@ repositories {
|
||||
if (fg != null) forRepositories(fg.repository)
|
||||
|
||||
filter {
|
||||
includeGroup("org.squiddev")
|
||||
includeGroup("cc.tweaked")
|
||||
includeModule("org.squiddev", "Cobalt")
|
||||
// Things we mirror
|
||||
includeGroup("dev.architectury")
|
||||
includeGroup("dev.emi")
|
||||
includeGroup("maven.modrinth")
|
||||
includeGroup("me.shedaniel.cloth")
|
||||
includeGroup("me.shedaniel")
|
||||
includeGroup("me.shedaniel.cloth")
|
||||
includeGroup("mezz.jei")
|
||||
includeModule("com.terraformersmc", "modmenu")
|
||||
}
|
||||
|
@@ -4,7 +4,6 @@
|
||||
|
||||
package cc.tweaked.gradle
|
||||
|
||||
import net.minecraftforge.gradle.common.util.RunConfig
|
||||
import org.gradle.api.GradleException
|
||||
import org.gradle.api.file.FileSystemOperations
|
||||
import org.gradle.api.invocation.Gradle
|
||||
@@ -54,25 +53,6 @@ abstract class ClientJavaExec : JavaExec() {
|
||||
@get:OutputFile
|
||||
val testResults = project.layout.buildDirectory.file("test-results/$name.xml")
|
||||
|
||||
private fun setTestProperties() {
|
||||
if (!clientDebug) systemProperty("cctest.client", "")
|
||||
if (renderdoc) environment("LD_PRELOAD", "/usr/lib/librenderdoc.so")
|
||||
systemProperty("cctest.gametest-report", testResults.get().asFile.absoluteFile)
|
||||
workingDir(project.buildDir.resolve("gametest").resolve(name))
|
||||
}
|
||||
|
||||
init {
|
||||
setTestProperties()
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this task to run a given [RunConfig].
|
||||
*/
|
||||
fun setRunConfig(config: RunConfig) {
|
||||
(this as JavaExec).setRunConfig(config)
|
||||
setTestProperties() // setRunConfig may clobber some properties, ensure everything is set.
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy configuration from a task with the given name.
|
||||
*/
|
||||
@@ -84,7 +64,11 @@ abstract class ClientJavaExec : JavaExec() {
|
||||
fun copyFrom(task: JavaExec) {
|
||||
for (dep in task.dependsOn) dependsOn(dep)
|
||||
task.copyToFull(this)
|
||||
setTestProperties() // copyToFull may clobber some properties, ensure everything is set.
|
||||
|
||||
if (!clientDebug) systemProperty("cctest.client", "")
|
||||
if (renderdoc) environment("LD_PRELOAD", "/usr/lib/librenderdoc.so")
|
||||
systemProperty("cctest.gametest-report", testResults.get().asFile.absoluteFile)
|
||||
workingDir(project.buildDir.resolve("gametest").resolve(name))
|
||||
}
|
||||
|
||||
/**
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
@@ -10,7 +10,7 @@ kotlin.jvm.target.validation.mode=error
|
||||
|
||||
# Mod properties
|
||||
isUnstable=false
|
||||
modVersion=1.107.0
|
||||
modVersion=1.106.1
|
||||
|
||||
# Minecraft properties: We want to configure this here so we can read it in settings.gradle
|
||||
mcVersion=1.19.4
|
||||
mcVersion=1.20.1
|
||||
|
@@ -7,20 +7,20 @@
|
||||
# Minecraft
|
||||
# MC version is specified in gradle.properties, as we need that in settings.gradle.
|
||||
# Remember to update corresponding versions in fabric.mod.json/mods.toml
|
||||
fabric-api = "0.86.1+1.19.4"
|
||||
fabric-api = "0.83.1+1.20.1"
|
||||
fabric-loader = "0.14.21"
|
||||
forge = "45.0.42"
|
||||
forge = "47.1.0"
|
||||
forgeSpi = "6.0.0"
|
||||
mixin = "0.8.5"
|
||||
parchment = "2023.06.26"
|
||||
parchmentMc = "1.19.4"
|
||||
parchment = "2023.03.12"
|
||||
parchmentMc = "1.19.3"
|
||||
|
||||
# Normal dependencies
|
||||
asm = "9.3"
|
||||
autoService = "1.0.1"
|
||||
checkerFramework = "3.32.0"
|
||||
cobalt = "0.7.1"
|
||||
cobalt-next = "0.7.2" # Not a real version, used to constrain the version we accept.
|
||||
cobalt = "0.7.0"
|
||||
cobalt-next = "0.7.1" # Not a real version, used to constrain the version we accept.
|
||||
fastutil = "8.5.9"
|
||||
guava = "31.1-jre"
|
||||
jetbrainsAnnotations = "24.0.1"
|
||||
@@ -33,7 +33,6 @@ nightConfig = "3.6.5"
|
||||
slf4j = "1.7.36"
|
||||
|
||||
# Minecraft mods
|
||||
emi = "1.0.8+1.19.4"
|
||||
iris = "1.5.2+1.19.4"
|
||||
jei = "13.1.0.11"
|
||||
modmenu = "6.1.0-rc.1"
|
||||
@@ -63,7 +62,7 @@ librarian = "1.+"
|
||||
minotaur = "2.+"
|
||||
mixinGradle = "0.7.+"
|
||||
nullAway = "0.9.9"
|
||||
quiltflower = "1.10.0"
|
||||
quiltflower = "1.8.0"
|
||||
spotless = "6.17.0"
|
||||
taskTree = "2.1.1"
|
||||
vanillaGradle = "0.2.1-SNAPSHOT"
|
||||
@@ -93,7 +92,6 @@ slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
|
||||
# Minecraft mods
|
||||
fabric-api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric-api" }
|
||||
fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric-loader" }
|
||||
emi = { module = "dev.emi:emi-xplat-mojmap", version.ref = "emi" }
|
||||
iris = { module = "maven.modrinth:iris", version.ref = "iris" }
|
||||
jei-api = { module = "mezz.jei:jei-1.19.4-common-api", version.ref = "jei" }
|
||||
jei-fabric = { module = "mezz.jei:jei-1.19.4-fabric", version.ref = "jei" }
|
||||
@@ -152,10 +150,10 @@ kotlin = ["kotlin-stdlib", "kotlin-coroutines"]
|
||||
# Minecraft
|
||||
externalMods-common = ["jei-api", "nightConfig-core", "nightConfig-toml"]
|
||||
externalMods-forge-compile = ["oculus", "jei-api"]
|
||||
externalMods-forge-runtime = ["jei-forge"]
|
||||
externalMods-forge-runtime = []
|
||||
externalMods-fabric = ["nightConfig-core", "nightConfig-toml"]
|
||||
externalMods-fabric-compile = ["iris", "jei-api", "rei-api", "rei-builtin"]
|
||||
externalMods-fabric-runtime = ["jei-fabric", "modmenu"]
|
||||
externalMods-fabric-runtime = []
|
||||
|
||||
# Testing
|
||||
test = ["junit-jupiter-api", "junit-jupiter-params", "hamcrest", "jqwik-api"]
|
||||
|
@@ -11,13 +11,10 @@ import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import dan200.computercraft.api.turtle.TurtleSide;
|
||||
import dan200.computercraft.api.turtle.TurtleUpgradeSerialiser;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Provides models for a {@link ITurtleUpgrade}.
|
||||
@@ -53,24 +50,9 @@ public interface TurtleUpgradeModeller<T extends ITurtleUpgrade> {
|
||||
return getModel(upgrade, (ITurtleAccess) null, side);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a list of models that this turtle modeller depends on.
|
||||
* <p>
|
||||
* Models included in this list will be loaded and baked alongside item and block models, and so may be referenced
|
||||
* by {@link TransformedModel#of(ResourceLocation)}. You do not need to override this method if you will load models
|
||||
* by other means.
|
||||
*
|
||||
* @return A list of models that this modeller depends on.
|
||||
* @see UnbakedModel#getDependencies()
|
||||
*/
|
||||
default Collection<ResourceLocation> getDependencies() {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
/**
|
||||
* A basic {@link TurtleUpgradeModeller} which renders using the upgrade's {@linkplain ITurtleUpgrade#getUpgradeItem(CompoundTag)}
|
||||
* upgrade item}.
|
||||
* A basic {@link TurtleUpgradeModeller} which renders using the upgrade's {@linkplain ITurtleUpgrade#getCraftingItem()
|
||||
* crafting item}.
|
||||
* <p>
|
||||
* This uses appropriate transformations for "flat" items, namely those extending the {@literal minecraft:item/generated}
|
||||
* model type. It will not appear correct for 3D models with additional depth, such as blocks.
|
||||
@@ -80,7 +62,7 @@ public interface TurtleUpgradeModeller<T extends ITurtleUpgrade> {
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
static <T extends ITurtleUpgrade> TurtleUpgradeModeller<T> flatItem() {
|
||||
return (TurtleUpgradeModeller<T>) TurtleUpgradeModellers.UPGRADE_ITEM;
|
||||
return (TurtleUpgradeModeller<T>) TurtleUpgradeModellers.FLAT_ITEM;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,8 +74,7 @@ public interface TurtleUpgradeModeller<T extends ITurtleUpgrade> {
|
||||
* @return The constructed modeller.
|
||||
*/
|
||||
static <T extends ITurtleUpgrade> TurtleUpgradeModeller<T> sided(ModelResourceLocation left, ModelResourceLocation right) {
|
||||
// TODO(1.21.0): Remove this.
|
||||
return sided((ResourceLocation) left, right);
|
||||
return (upgrade, turtle, side) -> TransformedModel.of(side == TurtleSide.LEFT ? left : right);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -105,16 +86,6 @@ public interface TurtleUpgradeModeller<T extends ITurtleUpgrade> {
|
||||
* @return The constructed modeller.
|
||||
*/
|
||||
static <T extends ITurtleUpgrade> TurtleUpgradeModeller<T> sided(ResourceLocation left, ResourceLocation right) {
|
||||
return new TurtleUpgradeModeller<>() {
|
||||
@Override
|
||||
public TransformedModel getModel(T upgrade, @Nullable ITurtleAccess turtle, TurtleSide side) {
|
||||
return TransformedModel.of(side == TurtleSide.LEFT ? left : right);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<ResourceLocation> getDependencies() {
|
||||
return List.of(left, right);
|
||||
}
|
||||
};
|
||||
return (upgrade, turtle, side) -> TransformedModel.of(side == TurtleSide.LEFT ? left : right);
|
||||
}
|
||||
}
|
||||
|
@@ -6,20 +6,13 @@ package dan200.computercraft.api.client.turtle;
|
||||
|
||||
import com.mojang.math.Transformation;
|
||||
import dan200.computercraft.api.client.TransformedModel;
|
||||
import dan200.computercraft.api.turtle.ITurtleAccess;
|
||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import dan200.computercraft.api.turtle.TurtleSide;
|
||||
import dan200.computercraft.impl.client.ClientPlatformHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.joml.Matrix4f;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
class TurtleUpgradeModellers {
|
||||
private static final Transformation leftTransform = getMatrixFor(-0.4065f);
|
||||
private static final Transformation rightTransform = getMatrixFor(0.4065f);
|
||||
private static final Transformation leftTransform = getMatrixFor(-0.40625f);
|
||||
private static final Transformation rightTransform = getMatrixFor(0.40625f);
|
||||
|
||||
private static Transformation getMatrixFor(float offset) {
|
||||
var matrix = new Matrix4f();
|
||||
@@ -33,23 +26,6 @@ class TurtleUpgradeModellers {
|
||||
return new Transformation(matrix);
|
||||
}
|
||||
|
||||
static final TurtleUpgradeModeller<ITurtleUpgrade> UPGRADE_ITEM = new UpgradeItemModeller();
|
||||
|
||||
private static class UpgradeItemModeller implements TurtleUpgradeModeller<ITurtleUpgrade> {
|
||||
@Override
|
||||
public TransformedModel getModel(ITurtleUpgrade upgrade, @Nullable ITurtleAccess turtle, TurtleSide side) {
|
||||
return getModel(turtle == null ? upgrade.getCraftingItem() : upgrade.getUpgradeItem(turtle.getUpgradeNBTData(side)), side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TransformedModel getModel(ITurtleUpgrade upgrade, CompoundTag data, TurtleSide side) {
|
||||
return getModel(upgrade.getUpgradeItem(data), side);
|
||||
}
|
||||
|
||||
private TransformedModel getModel(ItemStack stack, TurtleSide side) {
|
||||
var model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getItemModel(stack);
|
||||
if (stack.hasFoil()) model = ClientPlatformHelper.get().createdFoiledModel(model);
|
||||
return new TransformedModel(model, side == TurtleSide.LEFT ? leftTransform : rightTransform);
|
||||
}
|
||||
}
|
||||
static final TurtleUpgradeModeller<ITurtleUpgrade> FLAT_ITEM = (upgrade, turtle, side) ->
|
||||
TransformedModel.of(upgrade.getCraftingItem(), side == TurtleSide.LEFT ? leftTransform : rightTransform);
|
||||
}
|
||||
|
@@ -5,7 +5,6 @@
|
||||
package dan200.computercraft.impl.client;
|
||||
|
||||
import dan200.computercraft.impl.Services;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.client.resources.model.ModelManager;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
@@ -25,15 +24,6 @@ public interface ClientPlatformHelper {
|
||||
*/
|
||||
BakedModel getModel(ModelManager manager, ResourceLocation location);
|
||||
|
||||
/**
|
||||
* Wrap this model in a version which renders a foil/enchantment glint.
|
||||
*
|
||||
* @param model The model to wrap.
|
||||
* @return The wrapped model.
|
||||
* @see RenderType#glint()
|
||||
*/
|
||||
BakedModel createdFoiledModel(BakedModel model);
|
||||
|
||||
static ClientPlatformHelper get() {
|
||||
var instance = Instance.INSTANCE;
|
||||
return instance == null ? Services.raise(ClientPlatformHelper.class, Instance.ERROR) : instance;
|
||||
|
@@ -4,7 +4,6 @@
|
||||
|
||||
package dan200.computercraft.api.pocket;
|
||||
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.upgrades.UpgradeBase;
|
||||
import dan200.computercraft.api.upgrades.UpgradeSerialiser;
|
||||
import dan200.computercraft.impl.ComputerCraftAPIService;
|
||||
@@ -30,14 +29,6 @@ import java.util.function.Function;
|
||||
* @see PocketUpgradeDataProvider
|
||||
*/
|
||||
public interface PocketUpgradeSerialiser<T extends IPocketUpgrade> extends UpgradeSerialiser<T> {
|
||||
/**
|
||||
* The ID for the associated registry.
|
||||
*
|
||||
* @deprecated Use {@link #registryId()} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
ResourceKey<Registry<PocketUpgradeSerialiser<?>>> REGISTRY_ID = ResourceKey.createRegistryKey(new ResourceLocation(ComputerCraftAPI.MOD_ID, "pocket_upgrade_serialiser"));
|
||||
|
||||
/**
|
||||
* The ID for the associated registry.
|
||||
*
|
||||
|
@@ -16,7 +16,6 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.Container;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -71,29 +70,6 @@ public interface ITurtleAccess {
|
||||
*/
|
||||
boolean teleportTo(Level world, BlockPos pos);
|
||||
|
||||
/**
|
||||
* Returns a vector containing the floating point co-ordinates at which the turtle is rendered.
|
||||
* This will shift when the turtle is moving.
|
||||
*
|
||||
* @param f The subframe fraction.
|
||||
* @return A vector containing the floating point co-ordinates at which the turtle resides.
|
||||
* @see #getVisualYaw(float)
|
||||
* @deprecated Will be removed in 1.20.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
Vec3 getVisualPosition(float f);
|
||||
|
||||
/**
|
||||
* Returns the yaw the turtle is facing when it is rendered.
|
||||
*
|
||||
* @param f The subframe fraction.
|
||||
* @return The yaw the turtle is facing.
|
||||
* @see #getVisualPosition(float)
|
||||
* @deprecated Will be removed in 1.20.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
float getVisualYaw(float f);
|
||||
|
||||
/**
|
||||
* Returns the world direction the turtle is currently facing.
|
||||
*
|
||||
|
@@ -35,7 +35,6 @@ public enum TurtleToolDurability implements StringRepresentable {
|
||||
/**
|
||||
* The codec which may be used for serialising/deserialising {@link TurtleToolDurability}s.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static final StringRepresentable.EnumCodec<TurtleToolDurability> CODEC = StringRepresentable.fromEnum(TurtleToolDurability::values);
|
||||
|
||||
TurtleToolDurability(String serialisedName) {
|
||||
|
@@ -4,7 +4,6 @@
|
||||
|
||||
package dan200.computercraft.api.turtle;
|
||||
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.upgrades.UpgradeBase;
|
||||
import dan200.computercraft.api.upgrades.UpgradeSerialiser;
|
||||
import dan200.computercraft.impl.ComputerCraftAPIService;
|
||||
@@ -65,14 +64,6 @@ import java.util.function.Function;
|
||||
* @see dan200.computercraft.api.client.turtle.TurtleUpgradeModeller
|
||||
*/
|
||||
public interface TurtleUpgradeSerialiser<T extends ITurtleUpgrade> extends UpgradeSerialiser<T> {
|
||||
/**
|
||||
* The ID for the associated registry.
|
||||
*
|
||||
* @deprecated Use {@link #registryId()} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
ResourceKey<Registry<TurtleUpgradeSerialiser<?>>> REGISTRY_ID = ResourceKey.createRegistryKey(new ResourceLocation(ComputerCraftAPI.MOD_ID, "turtle_upgrade_serialiser"));
|
||||
|
||||
/**
|
||||
* The ID for the associated registry.
|
||||
*
|
||||
|
@@ -23,7 +23,11 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
@@ -163,21 +167,5 @@ public abstract class UpgradeDataProvider<T extends UpgradeBase, R extends Upgra
|
||||
public void add(Consumer<Upgrade<R>> add) {
|
||||
add.accept(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new {@link Upgrade} which requires the given mod to be present.
|
||||
* <p>
|
||||
* This uses mod-loader-specific hooks (Forge's crafting conditions and Fabric's resource conditions). If using
|
||||
* this in a multi-loader setup, you must generate resources separately for the two loaders.
|
||||
*
|
||||
* @param modId The id of the mod.
|
||||
* @return A new upgrade instance.
|
||||
*/
|
||||
public Upgrade<R> requireMod(String modId) {
|
||||
return new Upgrade<>(id, serialiser, json -> {
|
||||
PlatformHelper.get().addRequiredModCondition(json, modId);
|
||||
serialise.accept(json);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -4,8 +4,6 @@
|
||||
|
||||
package dan200.computercraft.impl;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import dan200.computercraft.api.upgrades.UpgradeDataProvider;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
@@ -65,15 +63,6 @@ public interface PlatformHelper {
|
||||
return item.getTag();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a resource condition which requires a mod to be loaded. This should be used by data providers such as
|
||||
* {@link UpgradeDataProvider}.
|
||||
*
|
||||
* @param object The JSON object we're generating.
|
||||
* @param modId The mod ID that we require.
|
||||
*/
|
||||
void addRequiredModCondition(JsonObject object, String modId);
|
||||
|
||||
final class Instance {
|
||||
static final @Nullable PlatformHelper INSTANCE;
|
||||
static final @Nullable Throwable ERROR;
|
||||
|
@@ -26,7 +26,6 @@ dependencies {
|
||||
clientImplementation(clientClasses(project(":common-api")))
|
||||
|
||||
compileOnly(libs.bundles.externalMods.common)
|
||||
clientCompileOnly(variantOf(libs.emi) { classifier("api") })
|
||||
|
||||
compileOnly(libs.mixin)
|
||||
annotationProcessorEverywhere(libs.autoService)
|
||||
|
@@ -13,7 +13,6 @@ import dan200.computercraft.client.render.RenderTypes;
|
||||
import dan200.computercraft.client.render.TurtleBlockEntityRenderer;
|
||||
import dan200.computercraft.client.render.monitor.MonitorBlockEntityRenderer;
|
||||
import dan200.computercraft.client.turtle.TurtleModemModeller;
|
||||
import dan200.computercraft.client.turtle.TurtleUpgradeModellers;
|
||||
import dan200.computercraft.core.util.Colour;
|
||||
import dan200.computercraft.shared.ModRegistry;
|
||||
import dan200.computercraft.shared.common.IColouredItem;
|
||||
@@ -108,6 +107,24 @@ public final class ClientRegistry {
|
||||
}
|
||||
|
||||
private static final String[] EXTRA_MODELS = new String[]{
|
||||
// Turtle upgrades
|
||||
"block/turtle_modem_normal_off_left",
|
||||
"block/turtle_modem_normal_on_left",
|
||||
"block/turtle_modem_normal_off_right",
|
||||
"block/turtle_modem_normal_on_right",
|
||||
|
||||
"block/turtle_modem_advanced_off_left",
|
||||
"block/turtle_modem_advanced_on_left",
|
||||
"block/turtle_modem_advanced_off_right",
|
||||
"block/turtle_modem_advanced_on_right",
|
||||
|
||||
"block/turtle_crafting_table_left",
|
||||
"block/turtle_crafting_table_right",
|
||||
|
||||
"block/turtle_speaker_left",
|
||||
"block/turtle_speaker_right",
|
||||
|
||||
// Turtle block renderer
|
||||
"block/turtle_colour",
|
||||
"block/turtle_elf_overlay",
|
||||
"block/turtle_rainbow_overlay",
|
||||
@@ -116,7 +133,6 @@ public final class ClientRegistry {
|
||||
|
||||
public static void registerExtraModels(Consumer<ResourceLocation> register) {
|
||||
for (var model : EXTRA_MODELS) register.accept(new ResourceLocation(ComputerCraftAPI.MOD_ID, model));
|
||||
TurtleUpgradeModellers.getDependencies().forEach(register);
|
||||
}
|
||||
|
||||
public static void registerItemColours(BiConsumer<ItemColor, ItemLike> register) {
|
||||
|
@@ -4,7 +4,6 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.client.gui.widgets.ComputerSidebar;
|
||||
import dan200.computercraft.client.gui.widgets.DynamicImageButton;
|
||||
import dan200.computercraft.client.gui.widgets.TerminalWidget;
|
||||
@@ -19,6 +18,7 @@ import dan200.computercraft.shared.config.Config;
|
||||
import dan200.computercraft.shared.network.server.UploadFileMessage;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.Util;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
@@ -124,10 +124,10 @@ public abstract class AbstractComputerScreen<T extends AbstractComputerMenu> ext
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack stack, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(stack);
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
renderTooltip(stack, mouseX, mouseY);
|
||||
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(graphics);
|
||||
super.render(graphics, mouseX, mouseY, partialTicks);
|
||||
renderTooltip(graphics, mouseX, mouseY);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -147,7 +147,7 @@ public abstract class AbstractComputerScreen<T extends AbstractComputerMenu> ext
|
||||
|
||||
|
||||
@Override
|
||||
protected void renderLabels(PoseStack transform, int mouseX, int mouseY) {
|
||||
protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) {
|
||||
// Skip rendering labels.
|
||||
}
|
||||
|
||||
|
@@ -4,11 +4,11 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.client.gui.widgets.ComputerSidebar;
|
||||
import dan200.computercraft.client.gui.widgets.TerminalWidget;
|
||||
import dan200.computercraft.client.render.ComputerBorderRenderer;
|
||||
import dan200.computercraft.shared.computer.inventory.AbstractComputerMenu;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
|
||||
@@ -36,13 +36,14 @@ public final class ComputerScreen<T extends AbstractComputerMenu> extends Abstra
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderBg(PoseStack stack, float partialTicks, int mouseX, int mouseY) {
|
||||
public void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) {
|
||||
// Draw a border around the terminal
|
||||
var terminal = getTerminal();
|
||||
var texture = ComputerBorderRenderer.getTexture(family);
|
||||
ComputerBorderRenderer.render(
|
||||
stack.last().pose(), ComputerBorderRenderer.getTexture(family), terminal.getX(), terminal.getY(),
|
||||
graphics.pose().last().pose(), texture, terminal.getX(), terminal.getY(),
|
||||
FULL_BRIGHT_LIGHTMAP, terminal.getWidth(), terminal.getHeight()
|
||||
);
|
||||
ComputerSidebar.renderBackground(stack, leftPos, topPos + sidebarYOffset);
|
||||
ComputerSidebar.renderBackground(graphics, texture, leftPos, topPos + sidebarYOffset);
|
||||
}
|
||||
}
|
||||
|
@@ -4,9 +4,8 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.shared.peripheral.diskdrive.DiskDriveMenu;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -23,16 +22,14 @@ public class DiskDriveScreen extends AbstractContainerScreen<DiskDriveMenu> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderBg(PoseStack transform, float partialTicks, int mouseX, int mouseY) {
|
||||
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
RenderSystem.setShaderTexture(0, BACKGROUND);
|
||||
blit(transform, leftPos, topPos, 0, 0, imageWidth, imageHeight);
|
||||
protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) {
|
||||
graphics.blit(BACKGROUND, leftPos, topPos, 0, 0, imageWidth, imageHeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack transform, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(transform);
|
||||
super.render(transform, mouseX, mouseY, partialTicks);
|
||||
renderTooltip(transform, mouseX, mouseY);
|
||||
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(graphics);
|
||||
super.render(graphics, mouseX, mouseY, partialTicks);
|
||||
renderTooltip(graphics, mouseX, mouseY);
|
||||
}
|
||||
}
|
||||
|
@@ -4,10 +4,8 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiComponent;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.components.toasts.Toast;
|
||||
import net.minecraft.client.gui.components.toasts.ToastComponent;
|
||||
import net.minecraft.network.chat.Component;
|
||||
@@ -73,55 +71,52 @@ public class ItemToast implements Toast {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Visibility render(PoseStack transform, ToastComponent component, long time) {
|
||||
public Visibility render(GuiGraphics graphics, ToastComponent component, long time) {
|
||||
if (isNew) {
|
||||
|
||||
firstDisplay = time;
|
||||
isNew = false;
|
||||
}
|
||||
|
||||
RenderSystem.setShaderTexture(0, TEXTURE);
|
||||
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
|
||||
if (width == 160 && message.size() <= 1) {
|
||||
GuiComponent.blit(transform, 0, 0, 0, 64, width, height());
|
||||
graphics.blit(TEXTURE, 0, 0, 0, 64, width, height());
|
||||
} else {
|
||||
|
||||
var height = height();
|
||||
|
||||
var bottom = Math.min(4, height - 28);
|
||||
renderBackgroundRow(transform, component, width, 0, 0, 28);
|
||||
renderBackgroundRow(graphics, width, 0, 0, 28);
|
||||
|
||||
for (var i = 28; i < height - bottom; i += 10) {
|
||||
renderBackgroundRow(transform, component, width, 16, i, Math.min(16, height - i - bottom));
|
||||
renderBackgroundRow(graphics, width, 16, i, Math.min(16, height - i - bottom));
|
||||
}
|
||||
|
||||
renderBackgroundRow(transform, component, width, 32 - bottom, height - bottom, bottom);
|
||||
renderBackgroundRow(graphics, width, 32 - bottom, height - bottom, bottom);
|
||||
}
|
||||
|
||||
var textX = MARGIN;
|
||||
if (!stack.isEmpty()) {
|
||||
textX += MARGIN + IMAGE_SIZE;
|
||||
component.getMinecraft().getItemRenderer().renderAndDecorateFakeItem(transform, stack, MARGIN, MARGIN + height() / 2 - IMAGE_SIZE);
|
||||
graphics.renderFakeItem(stack, MARGIN, MARGIN + height() / 2 - IMAGE_SIZE);
|
||||
}
|
||||
|
||||
component.getMinecraft().font.draw(transform, title, textX, MARGIN, 0xff500050);
|
||||
graphics.drawString(component.getMinecraft().font, title, textX, MARGIN, 0xff500050, false);
|
||||
for (var i = 0; i < message.size(); ++i) {
|
||||
component.getMinecraft().font.draw(transform, message.get(i), textX, (float) (LINE_SPACING + (i + 1) * LINE_SPACING), 0xff000000);
|
||||
graphics.drawString(component.getMinecraft().font, message.get(i), textX, LINE_SPACING + (i + 1) * LINE_SPACING, 0xff000000, false);
|
||||
}
|
||||
|
||||
return time - firstDisplay < DISPLAY_TIME ? Visibility.SHOW : Visibility.HIDE;
|
||||
}
|
||||
|
||||
private static void renderBackgroundRow(PoseStack transform, ToastComponent component, int x, int u, int y, int height) {
|
||||
private static void renderBackgroundRow(GuiGraphics graphics, int x, int u, int y, int height) {
|
||||
var leftOffset = 5;
|
||||
var rightOffset = Math.min(60, x - leftOffset);
|
||||
|
||||
GuiComponent.blit(transform, 0, y, 0, 32 + u, leftOffset, height);
|
||||
graphics.blit(TEXTURE, 0, y, 0, 32 + u, leftOffset, height);
|
||||
for (var k = leftOffset; k < x - rightOffset; k += 64) {
|
||||
GuiComponent.blit(transform, k, y, 32, 32 + u, Math.min(64, x - k - rightOffset), height);
|
||||
graphics.blit(TEXTURE, k, y, 32, 32 + u, Math.min(64, x - k - rightOffset), height);
|
||||
}
|
||||
|
||||
GuiComponent.blit(transform, x - rightOffset, y, 160 - rightOffset, 32 + u, rightOffset, height);
|
||||
graphics.blit(TEXTURE, x - rightOffset, y, 160 - rightOffset, 32 + u, rightOffset, height);
|
||||
}
|
||||
}
|
||||
|
@@ -4,11 +4,11 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.client.gui.widgets.TerminalWidget;
|
||||
import dan200.computercraft.core.terminal.Terminal;
|
||||
import dan200.computercraft.shared.computer.inventory.AbstractComputerMenu;
|
||||
import net.minecraft.client.KeyMapping;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.client.gui.screens.inventory.MenuAccess;
|
||||
import net.minecraft.network.chat.Component;
|
||||
@@ -42,7 +42,6 @@ public class NoTermComputerScreen<T extends AbstractComputerMenu> extends Screen
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
passEvents = true; // Pass mouse vents through to the game's mouse handler.
|
||||
// First ensure we're still grabbing the mouse, so the user can look around. Then reset bits of state that
|
||||
// grabbing unsets.
|
||||
minecraft.mouseHandler.grabMouse();
|
||||
@@ -91,15 +90,15 @@ public class NoTermComputerScreen<T extends AbstractComputerMenu> extends Screen
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack transform, int mouseX, int mouseY, float partialTicks) {
|
||||
super.render(transform, mouseX, mouseY, partialTicks);
|
||||
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
super.render(graphics, mouseX, mouseY, partialTicks);
|
||||
|
||||
var font = minecraft.font;
|
||||
var lines = font.split(Component.translatable("gui.computercraft.pocket_computer_overlay"), (int) (width * 0.8));
|
||||
var y = 10.0f;
|
||||
var y = 10;
|
||||
for (var line : lines) {
|
||||
font.drawShadow(transform, line, (float) ((width / 2) - (minecraft.font.width(line) / 2)), y, 0xFFFFFF);
|
||||
y += 9.0f;
|
||||
graphics.drawString(font, line, (width / 2) - (minecraft.font.width(line) / 2), y, 0xFFFFFF, true);
|
||||
y += 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -4,9 +4,8 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.components.Button;
|
||||
import net.minecraft.client.gui.components.MultiLineLabel;
|
||||
@@ -86,20 +85,19 @@ public final class OptionScreen extends Screen {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack transform, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(transform);
|
||||
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(graphics);
|
||||
|
||||
// Render the actual texture.
|
||||
RenderSystem.setShaderTexture(0, BACKGROUND);
|
||||
blit(transform, x, y, 0, 0, innerWidth, PADDING);
|
||||
blit(transform,
|
||||
graphics.blit(BACKGROUND, x, y, 0, 0, innerWidth, PADDING);
|
||||
graphics.blit(BACKGROUND,
|
||||
x, y + PADDING, 0, PADDING, innerWidth, innerHeight - PADDING * 2,
|
||||
innerWidth, PADDING
|
||||
);
|
||||
blit(transform, x, y + innerHeight - PADDING, 0, 256 - PADDING, innerWidth, PADDING);
|
||||
graphics.blit(BACKGROUND, x, y + innerHeight - PADDING, 0, 256 - PADDING, innerWidth, PADDING);
|
||||
|
||||
assertNonNull(messageRenderer).renderLeftAlignedNoShadow(transform, x + PADDING, y + PADDING, FONT_HEIGHT, 0x404040);
|
||||
super.render(transform, mouseX, mouseY, partialTicks);
|
||||
assertNonNull(messageRenderer).renderLeftAlignedNoShadow(graphics, x + PADDING, y + PADDING, FONT_HEIGHT, 0x404040);
|
||||
super.render(graphics, mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -4,9 +4,8 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.shared.peripheral.printer.PrinterMenu;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -23,18 +22,16 @@ public class PrinterScreen extends AbstractContainerScreen<PrinterMenu> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderBg(PoseStack transform, float partialTicks, int mouseX, int mouseY) {
|
||||
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
RenderSystem.setShaderTexture(0, BACKGROUND);
|
||||
blit(transform, leftPos, topPos, 0, 0, imageWidth, imageHeight);
|
||||
protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) {
|
||||
graphics.blit(BACKGROUND, leftPos, topPos, 0, 0, imageWidth, imageHeight);
|
||||
|
||||
if (getMenu().isPrinting()) blit(transform, leftPos + 34, topPos + 21, 176, 0, 25, 45);
|
||||
if (getMenu().isPrinting()) graphics.blit(BACKGROUND, leftPos + 34, topPos + 21, 176, 0, 25, 45);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack stack, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(stack);
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
renderTooltip(stack, mouseX, mouseY);
|
||||
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
renderBackground(graphics);
|
||||
super.render(graphics, mouseX, mouseY, partialTicks);
|
||||
renderTooltip(graphics, mouseX, mouseY);
|
||||
}
|
||||
}
|
||||
|
@@ -4,12 +4,11 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.Tesselator;
|
||||
import dan200.computercraft.core.terminal.TextBuffer;
|
||||
import dan200.computercraft.shared.common.HeldItemMenu;
|
||||
import dan200.computercraft.shared.media.items.PrintoutItem;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.network.chat.Component;
|
||||
@@ -83,30 +82,27 @@ public class PrintoutScreen extends AbstractContainerScreen<HeldItemMenu> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderBg(PoseStack transform, float partialTicks, int mouseX, int mouseY) {
|
||||
protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) {
|
||||
// Draw the printout
|
||||
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
RenderSystem.enableDepthTest();
|
||||
|
||||
var renderer = MultiBufferSource.immediate(Tesselator.getInstance().getBuilder());
|
||||
drawBorder(transform, renderer, leftPos, topPos, 0, page, pages, book, FULL_BRIGHT_LIGHTMAP);
|
||||
drawText(transform, renderer, leftPos + X_TEXT_MARGIN, topPos + Y_TEXT_MARGIN, PrintoutItem.LINES_PER_PAGE * page, FULL_BRIGHT_LIGHTMAP, text, colours);
|
||||
drawBorder(graphics.pose(), renderer, leftPos, topPos, 0, page, pages, book, FULL_BRIGHT_LIGHTMAP);
|
||||
drawText(graphics.pose(), renderer, leftPos + X_TEXT_MARGIN, topPos + Y_TEXT_MARGIN, PrintoutItem.LINES_PER_PAGE * page, FULL_BRIGHT_LIGHTMAP, text, colours);
|
||||
renderer.endBatch();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack stack, int mouseX, int mouseY, float partialTicks) {
|
||||
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
// We must take the background further back in order to not overlap with our printed pages.
|
||||
stack.pushPose();
|
||||
stack.translate(0, 0, -1);
|
||||
renderBackground(stack);
|
||||
stack.popPose();
|
||||
graphics.pose().pushPose();
|
||||
graphics.pose().translate(0, 0, -1);
|
||||
renderBackground(graphics);
|
||||
graphics.pose().popPose();
|
||||
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
super.render(graphics, mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderLabels(PoseStack transform, int mouseX, int mouseY) {
|
||||
protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) {
|
||||
// Skip rendering labels.
|
||||
}
|
||||
}
|
||||
|
@@ -4,8 +4,6 @@
|
||||
|
||||
package dan200.computercraft.client.gui;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.client.gui.widgets.ComputerSidebar;
|
||||
import dan200.computercraft.client.gui.widgets.TerminalWidget;
|
||||
@@ -13,6 +11,7 @@ import dan200.computercraft.client.render.ComputerBorderRenderer;
|
||||
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
||||
import dan200.computercraft.shared.computer.inventory.AbstractComputerMenu;
|
||||
import dan200.computercraft.shared.turtle.inventory.TurtleMenu;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
@@ -44,23 +43,22 @@ public class TurtleScreen extends AbstractComputerScreen<TurtleMenu> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderBg(PoseStack transform, float partialTicks, int mouseX, int mouseY) {
|
||||
protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) {
|
||||
var advanced = family == ComputerFamily.ADVANCED;
|
||||
RenderSystem.setShaderTexture(0, advanced ? BACKGROUND_ADVANCED : BACKGROUND_NORMAL);
|
||||
blit(transform, leftPos + AbstractComputerMenu.SIDEBAR_WIDTH, topPos, 0, 0, 0, TEX_WIDTH, TEX_HEIGHT, FULL_TEX_SIZE, FULL_TEX_SIZE);
|
||||
var texture = advanced ? BACKGROUND_ADVANCED : BACKGROUND_NORMAL;
|
||||
graphics.blit(texture, leftPos + AbstractComputerMenu.SIDEBAR_WIDTH, topPos, 0, 0, 0, TEX_WIDTH, TEX_HEIGHT, FULL_TEX_SIZE, FULL_TEX_SIZE);
|
||||
|
||||
// Render selected slot
|
||||
var slot = getMenu().getSelectedSlot();
|
||||
if (slot >= 0) {
|
||||
var slotX = slot % 4;
|
||||
var slotY = slot / 4;
|
||||
blit(transform,
|
||||
graphics.blit(texture,
|
||||
leftPos + TURTLE_START_X - 2 + slotX * 18, topPos + PLAYER_START_Y - 2 + slotY * 18, 0,
|
||||
0, 217, 24, 24, FULL_TEX_SIZE, FULL_TEX_SIZE
|
||||
);
|
||||
}
|
||||
|
||||
RenderSystem.setShaderTexture(0, advanced ? ComputerBorderRenderer.BACKGROUND_ADVANCED : ComputerBorderRenderer.BACKGROUND_NORMAL);
|
||||
ComputerSidebar.renderBackground(transform, leftPos, topPos + sidebarYOffset);
|
||||
ComputerSidebar.renderBackground(graphics, ComputerBorderRenderer.getTexture(family), leftPos, topPos + sidebarYOffset);
|
||||
}
|
||||
}
|
||||
|
@@ -4,14 +4,13 @@
|
||||
|
||||
package dan200.computercraft.client.gui.widgets;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.client.gui.widgets.DynamicImageButton.HintedMessage;
|
||||
import dan200.computercraft.client.render.ComputerBorderRenderer;
|
||||
import dan200.computercraft.shared.computer.core.InputHandler;
|
||||
import dan200.computercraft.shared.computer.inventory.AbstractComputerMenu;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
@@ -68,19 +67,19 @@ public final class ComputerSidebar {
|
||||
));
|
||||
}
|
||||
|
||||
public static void renderBackground(PoseStack transform, int x, int y) {
|
||||
Screen.blit(transform,
|
||||
public static void renderBackground(GuiGraphics graphics, ResourceLocation texture, int x, int y) {
|
||||
graphics.blit(texture,
|
||||
x, y, 0, 102, AbstractComputerMenu.SIDEBAR_WIDTH, FULL_BORDER,
|
||||
ComputerBorderRenderer.TEX_SIZE, ComputerBorderRenderer.TEX_SIZE
|
||||
);
|
||||
|
||||
Screen.blit(transform,
|
||||
graphics.blit(texture,
|
||||
x, y + FULL_BORDER, AbstractComputerMenu.SIDEBAR_WIDTH, HEIGHT - FULL_BORDER * 2,
|
||||
0, 107, AbstractComputerMenu.SIDEBAR_WIDTH, 4,
|
||||
ComputerBorderRenderer.TEX_SIZE, ComputerBorderRenderer.TEX_SIZE
|
||||
);
|
||||
|
||||
Screen.blit(transform,
|
||||
graphics.blit(texture,
|
||||
x, y + HEIGHT - FULL_BORDER, 0, 111, AbstractComputerMenu.SIDEBAR_WIDTH, FULL_BORDER,
|
||||
ComputerBorderRenderer.TEX_SIZE, ComputerBorderRenderer.TEX_SIZE
|
||||
);
|
||||
|
@@ -5,8 +5,8 @@
|
||||
package dan200.computercraft.client.gui.widgets;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.components.Button;
|
||||
import net.minecraft.client.gui.components.Tooltip;
|
||||
import net.minecraft.network.chat.Component;
|
||||
@@ -57,23 +57,25 @@ public class DynamicImageButton extends Button {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWidget(PoseStack stack, int mouseX, int mouseY, float partialTicks) {
|
||||
RenderSystem.setShaderTexture(0, texture);
|
||||
RenderSystem.disableDepthTest();
|
||||
public void renderWidget(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.enableDepthTest();
|
||||
|
||||
var yTex = yTexStart;
|
||||
if (isHoveredOrFocused()) yTex += yDiffTex;
|
||||
|
||||
blit(stack, getX(), getY(), xTexStart.getAsInt(), yTex, width, height, textureWidth, textureHeight);
|
||||
RenderSystem.enableDepthTest();
|
||||
graphics.blit(texture, getX(), getY(), xTexStart.getAsInt(), yTex, width, height, textureWidth, textureHeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack stack, int mouseX, int mouseY, float partialTicks) {
|
||||
var message = this.message.get();
|
||||
setMessage(message.message());
|
||||
setTooltip(message.tooltip());
|
||||
super.render(stack, mouseX, mouseY, partialTicks);
|
||||
public Component getMessage() {
|
||||
return message.get().message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
setTooltip(message.get().tooltip());
|
||||
super.render(graphics, mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
public record HintedMessage(Component message, Tooltip tooltip) {
|
||||
|
@@ -4,7 +4,6 @@
|
||||
|
||||
package dan200.computercraft.client.gui.widgets;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.Tesselator;
|
||||
import dan200.computercraft.client.render.RenderTypes;
|
||||
import dan200.computercraft.client.render.text.FixedWidthFontRenderer;
|
||||
@@ -12,6 +11,7 @@ import dan200.computercraft.core.terminal.Terminal;
|
||||
import dan200.computercraft.shared.computer.core.InputHandler;
|
||||
import net.minecraft.SharedConstants;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.narration.NarratedElementType;
|
||||
import net.minecraft.client.gui.narration.NarrationElementOutput;
|
||||
@@ -274,11 +274,11 @@ public class TerminalWidget extends AbstractWidget {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWidget(PoseStack transform, int mouseX, int mouseY, float partialTicks) {
|
||||
public void renderWidget(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
|
||||
if (!visible) return;
|
||||
|
||||
var bufferSource = MultiBufferSource.immediate(Tesselator.getInstance().getBuilder());
|
||||
var emitter = FixedWidthFontRenderer.toVertexConsumer(transform, bufferSource.getBuffer(RenderTypes.TERMINAL));
|
||||
var emitter = FixedWidthFontRenderer.toVertexConsumer(graphics.pose(), bufferSource.getBuffer(RenderTypes.TERMINAL));
|
||||
|
||||
FixedWidthFontRenderer.drawTerminal(
|
||||
emitter,
|
||||
|
@@ -1,44 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
//
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package dan200.computercraft.client.integration.emi;
|
||||
|
||||
import dan200.computercraft.api.turtle.TurtleSide;
|
||||
import dan200.computercraft.shared.ModRegistry;
|
||||
import dan200.computercraft.shared.pocket.items.PocketComputerItem;
|
||||
import dan200.computercraft.shared.turtle.items.TurtleItem;
|
||||
import dev.emi.emi.api.EmiEntrypoint;
|
||||
import dev.emi.emi.api.EmiPlugin;
|
||||
import dev.emi.emi.api.EmiRegistry;
|
||||
import dev.emi.emi.api.stack.Comparison;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
import java.util.function.BiPredicate;
|
||||
|
||||
@EmiEntrypoint
|
||||
public class EMIComputerCraft implements EmiPlugin {
|
||||
@Override
|
||||
public void register(EmiRegistry registry) {
|
||||
registry.setDefaultComparison(ModRegistry.Items.TURTLE_NORMAL.get(), turtleComparison);
|
||||
registry.setDefaultComparison(ModRegistry.Items.TURTLE_ADVANCED.get(), turtleComparison);
|
||||
|
||||
registry.setDefaultComparison(ModRegistry.Items.POCKET_COMPUTER_NORMAL.get(), pocketComparison);
|
||||
registry.setDefaultComparison(ModRegistry.Items.POCKET_COMPUTER_ADVANCED.get(), pocketComparison);
|
||||
}
|
||||
|
||||
private static final Comparison turtleComparison = compareStacks((left, right) ->
|
||||
left.getItem() instanceof TurtleItem turtle
|
||||
&& turtle.getUpgrade(left, TurtleSide.LEFT) == turtle.getUpgrade(right, TurtleSide.LEFT)
|
||||
&& turtle.getUpgrade(left, TurtleSide.RIGHT) == turtle.getUpgrade(right, TurtleSide.RIGHT));
|
||||
|
||||
private static final Comparison pocketComparison = compareStacks((left, right) ->
|
||||
left.getItem() instanceof PocketComputerItem && PocketComputerItem.getUpgrade(left) == PocketComputerItem.getUpgrade(right));
|
||||
|
||||
private static Comparison compareStacks(BiPredicate<ItemStack, ItemStack> test) {
|
||||
return Comparison.of((left, right) -> {
|
||||
ItemStack leftStack = left.getItemStack(), rightStack = right.getItemStack();
|
||||
return leftStack.getItem() == rightStack.getItem() && test.test(leftStack, rightStack);
|
||||
});
|
||||
}
|
||||
}
|
@@ -26,14 +26,13 @@ import java.util.List;
|
||||
* <p>
|
||||
* This is typically used with a {@link BakedModel} subclass - see the loader-specific projects.
|
||||
*/
|
||||
public class ModelTransformer {
|
||||
private static final int[] INVERSE_ORDER = new int[]{ 3, 2, 1, 0 };
|
||||
|
||||
private static final int STRIDE = DefaultVertexFormat.BLOCK.getIntegerSize();
|
||||
public final class ModelTransformer {
|
||||
public static final int[] ORDER = new int[]{ 3, 2, 1, 0 };
|
||||
public static final int STRIDE = DefaultVertexFormat.BLOCK.getIntegerSize();
|
||||
private static final int POS_OFFSET = findOffset(DefaultVertexFormat.BLOCK, DefaultVertexFormat.ELEMENT_POSITION);
|
||||
|
||||
protected final Matrix4f transformation;
|
||||
protected final boolean invert;
|
||||
private final Matrix4f transformation;
|
||||
private final boolean invert;
|
||||
private @Nullable TransformedQuads cache;
|
||||
|
||||
public ModelTransformer(Transformation transformation) {
|
||||
@@ -61,7 +60,7 @@ public class ModelTransformer {
|
||||
for (var i = 0; i < 4; i++) {
|
||||
var inStart = STRIDE * i;
|
||||
// Reverse the order of the quads if we're inverting
|
||||
var outStart = getVertexOffset(i, invert);
|
||||
var outStart = STRIDE * (invert ? ORDER[i] : i);
|
||||
System.arraycopy(inputData, inStart, outputData, outStart, STRIDE);
|
||||
|
||||
// Apply the matrix to our position
|
||||
@@ -85,10 +84,6 @@ public class ModelTransformer {
|
||||
return new BakedQuad(outputData, quad.getTintIndex(), direction, quad.getSprite(), quad.isShade());
|
||||
}
|
||||
|
||||
public static int getVertexOffset(int vertex, boolean invert) {
|
||||
return (invert ? ModelTransformer.INVERSE_ORDER[vertex] : vertex) * ModelTransformer.STRIDE;
|
||||
}
|
||||
|
||||
private record TransformedQuads(List<BakedQuad> original, List<BakedQuad> transformed) {
|
||||
}
|
||||
|
||||
|
@@ -52,7 +52,7 @@ public abstract class AbstractClientNetworkContext implements ClientNetworkConte
|
||||
var player = Minecraft.getInstance().player;
|
||||
if (player == null) return;
|
||||
|
||||
var te = player.level.getBlockEntity(pos);
|
||||
var te = player.level().getBlockEntity(pos);
|
||||
if (!(te instanceof MonitorBlockEntity monitor)) return;
|
||||
|
||||
monitor.read(terminal);
|
||||
|
@@ -4,13 +4,8 @@
|
||||
|
||||
package dan200.computercraft.client.platform;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dan200.computercraft.shared.network.NetworkMessage;
|
||||
import dan200.computercraft.shared.network.server.ServerNetworkContext;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public interface ClientPlatformHelper extends dan200.computercraft.impl.client.ClientPlatformHelper {
|
||||
static ClientPlatformHelper get() {
|
||||
@@ -23,16 +18,4 @@ public interface ClientPlatformHelper extends dan200.computercraft.impl.client.C
|
||||
* @param message The message to send.
|
||||
*/
|
||||
void sendToServer(NetworkMessage<ServerNetworkContext> message);
|
||||
|
||||
/**
|
||||
* Render a {@link BakedModel}, using any loader-specific hooks.
|
||||
*
|
||||
* @param transform The current matrix transformation to apply.
|
||||
* @param buffers The current pool of render buffers.
|
||||
* @param model The model to draw.
|
||||
* @param lightmapCoord The current packed lightmap coordinate.
|
||||
* @param overlayLight The current overlay light.
|
||||
* @param tints Block colour tints to apply to the model.
|
||||
*/
|
||||
void renderBakedModel(PoseStack transform, MultiBufferSource buffers, BakedModel model, int lightmapCoord, int overlayLight, @Nullable int[] tints);
|
||||
}
|
||||
|
@@ -18,9 +18,9 @@ import org.joml.Matrix4f;
|
||||
* {@linkplain PocketItemRenderer in-hand pocket computers}.
|
||||
*/
|
||||
public class ComputerBorderRenderer {
|
||||
public static final ResourceLocation BACKGROUND_NORMAL = new ResourceLocation(ComputerCraftAPI.MOD_ID, "textures/gui/corners_normal.png");
|
||||
public static final ResourceLocation BACKGROUND_ADVANCED = new ResourceLocation(ComputerCraftAPI.MOD_ID, "textures/gui/corners_advanced.png");
|
||||
public static final ResourceLocation BACKGROUND_COMMAND = new ResourceLocation(ComputerCraftAPI.MOD_ID, "textures/gui/corners_command.png");
|
||||
private static final ResourceLocation BACKGROUND_NORMAL = new ResourceLocation(ComputerCraftAPI.MOD_ID, "textures/gui/corners_normal.png");
|
||||
private static final ResourceLocation BACKGROUND_ADVANCED = new ResourceLocation(ComputerCraftAPI.MOD_ID, "textures/gui/corners_advanced.png");
|
||||
private static final ResourceLocation BACKGROUND_COMMAND = new ResourceLocation(ComputerCraftAPI.MOD_ID, "textures/gui/corners_command.png");
|
||||
public static final ResourceLocation BACKGROUND_COLOUR = new ResourceLocation(ComputerCraftAPI.MOD_ID, "textures/gui/corners_colour.png");
|
||||
|
||||
/**
|
||||
|
@@ -1,103 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
//
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package dan200.computercraft.client.render;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import dan200.computercraft.client.model.turtle.ModelTransformer;
|
||||
import dan200.computercraft.client.platform.ClientPlatformHelper;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.renderer.entity.ItemRenderer;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.joml.Vector4f;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Utilities for rendering {@link BakedModel}s and {@link BakedQuad}s.
|
||||
*/
|
||||
public final class ModelRenderer {
|
||||
private ModelRenderer() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a list of {@linkplain BakedQuad quads} to a buffer.
|
||||
* <p>
|
||||
* This is not intended to be used directly, but instead by {@link ClientPlatformHelper#renderBakedModel(PoseStack, MultiBufferSource, BakedModel, int, int, int[])}. The
|
||||
* implementation here is pretty similar to {@link ItemRenderer#renderQuadList(PoseStack, VertexConsumer, List, ItemStack, int, int)},
|
||||
* but supports inverted quads (i.e. those with a negative scale).
|
||||
*
|
||||
* @param transform The current matrix transformation to apply.
|
||||
* @param buffer The buffer to draw to.
|
||||
* @param quads The quads to draw.
|
||||
* @param lightmapCoord The current packed lightmap coordinate.
|
||||
* @param overlayLight The current overlay light.
|
||||
* @param tints Block colour tints to apply to the model.
|
||||
*/
|
||||
public static void renderQuads(PoseStack transform, VertexConsumer buffer, List<BakedQuad> quads, int lightmapCoord, int overlayLight, @Nullable int[] tints) {
|
||||
var matrix = transform.last();
|
||||
var inverted = matrix.pose().determinant() < 0;
|
||||
|
||||
for (var bakedquad : quads) {
|
||||
var tint = -1;
|
||||
if (tints != null && bakedquad.isTinted()) {
|
||||
var idx = bakedquad.getTintIndex();
|
||||
if (idx >= 0 && idx < tints.length) tint = tints[bakedquad.getTintIndex()];
|
||||
}
|
||||
|
||||
var r = (float) (tint >> 16 & 255) / 255.0F;
|
||||
var g = (float) (tint >> 8 & 255) / 255.0F;
|
||||
var b = (float) (tint & 255) / 255.0F;
|
||||
putBulkQuad(buffer, matrix, bakedquad, r, g, b, lightmapCoord, overlayLight, inverted);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of {@link VertexConsumer#putBulkData(PoseStack.Pose, BakedQuad, float, float, float, int, int)} which
|
||||
* will reverse vertex order when the matrix is inverted.
|
||||
*
|
||||
* @param buffer The buffer to draw to.
|
||||
* @param pose The current matrix stack.
|
||||
* @param quad The quad to draw.
|
||||
* @param red The red tint of this quad.
|
||||
* @param green The green tint of this quad.
|
||||
* @param blue The blue tint of this quad.
|
||||
* @param lightmapCoord The lightmap coordinate
|
||||
* @param overlayLight The overlay light.
|
||||
* @param invert Whether to reverse the order of this quad.
|
||||
*/
|
||||
private static void putBulkQuad(VertexConsumer buffer, PoseStack.Pose pose, BakedQuad quad, float red, float green, float blue, int lightmapCoord, int overlayLight, boolean invert) {
|
||||
var matrix = pose.pose();
|
||||
// It's a little dubious to transform using this matrix rather than the normal matrix. This mirrors the logic in
|
||||
// Direction.rotate (so not out of nowhere!), but is a little suspicious.
|
||||
var dirNormal = quad.getDirection().getNormal();
|
||||
var vector = new Vector4f();
|
||||
|
||||
matrix.transform(dirNormal.getX(), dirNormal.getY(), dirNormal.getZ(), 0.0f, vector).normalize();
|
||||
float normalX = vector.x(), normalY = vector.y(), normalZ = vector.z();
|
||||
|
||||
var vertices = quad.getVertices();
|
||||
for (var vertex = 0; vertex < 4; vertex++) {
|
||||
var i = ModelTransformer.getVertexOffset(vertex, invert);
|
||||
|
||||
var x = Float.intBitsToFloat(vertices[i]);
|
||||
var y = Float.intBitsToFloat(vertices[i + 1]);
|
||||
var z = Float.intBitsToFloat(vertices[i + 2]);
|
||||
|
||||
matrix.transform(x, y, z, 1, vector);
|
||||
|
||||
var u = Float.intBitsToFloat(vertices[i + 4]);
|
||||
var v = Float.intBitsToFloat(vertices[i + 5]);
|
||||
buffer.vertex(
|
||||
vector.x(), vector.y(), vector.z(),
|
||||
red, green, blue, 1.0F, u, v, overlayLight, lightmapCoord,
|
||||
normalX, normalY, normalZ
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
@@ -5,28 +5,36 @@
|
||||
package dan200.computercraft.client.render;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.mojang.math.Axis;
|
||||
import com.mojang.math.Transformation;
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.turtle.TurtleSide;
|
||||
import dan200.computercraft.client.model.turtle.ModelTransformer;
|
||||
import dan200.computercraft.client.platform.ClientPlatformHelper;
|
||||
import dan200.computercraft.client.turtle.TurtleUpgradeModellers;
|
||||
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
||||
import dan200.computercraft.shared.turtle.blocks.TurtleBlockEntity;
|
||||
import dan200.computercraft.shared.util.DirectionUtil;
|
||||
import dan200.computercraft.shared.util.Holiday;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Font;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.Sheets;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import org.joml.Vector4f;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
public class TurtleBlockEntityRenderer implements BlockEntityRenderer<TurtleBlockEntity> {
|
||||
private static final ModelResourceLocation NORMAL_TURTLE_MODEL = new ModelResourceLocation(ComputerCraftAPI.MOD_ID, "turtle_normal", "inventory");
|
||||
@@ -34,6 +42,8 @@ public class TurtleBlockEntityRenderer implements BlockEntityRenderer<TurtleBloc
|
||||
private static final ResourceLocation COLOUR_TURTLE_MODEL = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_colour");
|
||||
private static final ResourceLocation ELF_OVERLAY_MODEL = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_elf_overlay");
|
||||
|
||||
private final RandomSource random = RandomSource.create(0);
|
||||
|
||||
private final BlockEntityRenderDispatcher renderer;
|
||||
private final Font font;
|
||||
|
||||
@@ -99,22 +109,23 @@ public class TurtleBlockEntityRenderer implements BlockEntityRenderer<TurtleBloc
|
||||
var family = turtle.getFamily();
|
||||
var overlay = turtle.getOverlay();
|
||||
|
||||
renderModel(transform, buffers, lightmapCoord, overlayLight, getTurtleModel(family, colour != -1), colour == -1 ? null : new int[]{ colour });
|
||||
var buffer = buffers.getBuffer(Sheets.translucentCullBlockSheet());
|
||||
renderModel(transform, buffer, lightmapCoord, overlayLight, getTurtleModel(family, colour != -1), colour == -1 ? null : new int[]{ colour });
|
||||
|
||||
// Render the overlay
|
||||
var overlayModel = getTurtleOverlayModel(overlay, Holiday.getCurrent() == Holiday.CHRISTMAS);
|
||||
if (overlayModel != null) {
|
||||
renderModel(transform, buffers, lightmapCoord, overlayLight, overlayModel, null);
|
||||
renderModel(transform, buffer, lightmapCoord, overlayLight, overlayModel, null);
|
||||
}
|
||||
|
||||
// Render the upgrades
|
||||
renderUpgrade(transform, buffers, lightmapCoord, overlayLight, turtle, TurtleSide.LEFT, partialTicks);
|
||||
renderUpgrade(transform, buffers, lightmapCoord, overlayLight, turtle, TurtleSide.RIGHT, partialTicks);
|
||||
renderUpgrade(transform, buffer, lightmapCoord, overlayLight, turtle, TurtleSide.LEFT, partialTicks);
|
||||
renderUpgrade(transform, buffer, lightmapCoord, overlayLight, turtle, TurtleSide.RIGHT, partialTicks);
|
||||
|
||||
transform.popPose();
|
||||
}
|
||||
|
||||
private void renderUpgrade(PoseStack transform, MultiBufferSource buffers, int lightmapCoord, int overlayLight, TurtleBlockEntity turtle, TurtleSide side, float f) {
|
||||
private void renderUpgrade(PoseStack transform, VertexConsumer renderer, int lightmapCoord, int overlayLight, TurtleBlockEntity turtle, TurtleSide side, float f) {
|
||||
var upgrade = turtle.getUpgrade(side);
|
||||
if (upgrade == null) return;
|
||||
transform.pushPose();
|
||||
@@ -125,15 +136,16 @@ public class TurtleBlockEntityRenderer implements BlockEntityRenderer<TurtleBloc
|
||||
transform.translate(0.0f, -0.5f, -0.5f);
|
||||
|
||||
var model = TurtleUpgradeModellers.getModel(upgrade, turtle.getAccess(), side);
|
||||
applyTransformation(transform, model.getMatrix());
|
||||
renderModel(transform, buffers, lightmapCoord, overlayLight, model.getModel(), null);
|
||||
pushPoseFromTransformation(transform, model.getMatrix());
|
||||
renderModel(transform, renderer, lightmapCoord, overlayLight, model.getModel(), null);
|
||||
transform.popPose();
|
||||
|
||||
transform.popPose();
|
||||
}
|
||||
|
||||
private void renderModel(PoseStack transform, MultiBufferSource buffers, int lightmapCoord, int overlayLight, ResourceLocation modelLocation, @Nullable int[] tints) {
|
||||
private void renderModel(PoseStack transform, VertexConsumer renderer, int lightmapCoord, int overlayLight, ResourceLocation modelLocation, @Nullable int[] tints) {
|
||||
var modelManager = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getModelManager();
|
||||
renderModel(transform, buffers, lightmapCoord, overlayLight, ClientPlatformHelper.get().getModel(modelManager, modelLocation), tints);
|
||||
renderModel(transform, renderer, lightmapCoord, overlayLight, ClientPlatformHelper.get().getModel(modelManager, modelLocation), tints);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -147,11 +159,80 @@ public class TurtleBlockEntityRenderer implements BlockEntityRenderer<TurtleBloc
|
||||
* @param tints Tints for the quads, as an array of RGB values.
|
||||
* @see net.minecraft.client.renderer.block.ModelBlockRenderer#renderModel
|
||||
*/
|
||||
private void renderModel(PoseStack transform, MultiBufferSource renderer, int lightmapCoord, int overlayLight, BakedModel model, @Nullable int[] tints) {
|
||||
ClientPlatformHelper.get().renderBakedModel(transform, renderer, model, lightmapCoord, overlayLight, tints);
|
||||
private void renderModel(PoseStack transform, VertexConsumer renderer, int lightmapCoord, int overlayLight, BakedModel model, @Nullable int[] tints) {
|
||||
for (var facing : DirectionUtil.FACINGS) {
|
||||
random.setSeed(42);
|
||||
renderQuads(transform, renderer, lightmapCoord, overlayLight, model.getQuads(null, facing, random), tints);
|
||||
}
|
||||
|
||||
random.setSeed(42);
|
||||
renderQuads(transform, renderer, lightmapCoord, overlayLight, model.getQuads(null, null, random), tints);
|
||||
}
|
||||
|
||||
private static void applyTransformation(PoseStack stack, Transformation transformation) {
|
||||
private static void renderQuads(PoseStack transform, VertexConsumer buffer, int lightmapCoord, int overlayLight, List<BakedQuad> quads, @Nullable int[] tints) {
|
||||
var matrix = transform.last();
|
||||
var inverted = matrix.pose().determinant() < 0;
|
||||
|
||||
for (var bakedquad : quads) {
|
||||
var tint = -1;
|
||||
if (tints != null && bakedquad.isTinted()) {
|
||||
var idx = bakedquad.getTintIndex();
|
||||
if (idx >= 0 && idx < tints.length) tint = tints[bakedquad.getTintIndex()];
|
||||
}
|
||||
|
||||
var r = (float) (tint >> 16 & 255) / 255.0F;
|
||||
var g = (float) (tint >> 8 & 255) / 255.0F;
|
||||
var b = (float) (tint & 255) / 255.0F;
|
||||
if (inverted) {
|
||||
putBulkQuadInvert(buffer, matrix, bakedquad, r, g, b, lightmapCoord, overlayLight);
|
||||
} else {
|
||||
buffer.putBulkData(matrix, bakedquad, r, g, b, lightmapCoord, overlayLight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of {@link VertexConsumer#putBulkData(PoseStack.Pose, BakedQuad, float, float, float, int, int)} for
|
||||
* when the matrix is inverted.
|
||||
*
|
||||
* @param buffer The buffer to draw to.
|
||||
* @param pose The current matrix stack.
|
||||
* @param quad The quad to draw.
|
||||
* @param red The red tint of this quad.
|
||||
* @param green The green tint of this quad.
|
||||
* @param blue The blue tint of this quad.
|
||||
* @param lightmapCoord The lightmap coordinate
|
||||
* @param overlayLight The overlay light.
|
||||
*/
|
||||
private static void putBulkQuadInvert(VertexConsumer buffer, PoseStack.Pose pose, BakedQuad quad, float red, float green, float blue, int lightmapCoord, int overlayLight) {
|
||||
var matrix = pose.pose();
|
||||
// It's a little dubious to transform using this matrix rather than the normal matrix. This mirrors the logic in
|
||||
// Direction.rotate (so not out of nowhere!), but is a little suspicious.
|
||||
var dirNormal = quad.getDirection().getNormal();
|
||||
var normal = matrix.transform(new Vector4f(dirNormal.getX(), dirNormal.getY(), dirNormal.getZ(), 0.0f)).normalize();
|
||||
|
||||
var vertices = quad.getVertices();
|
||||
for (var vertex : ModelTransformer.ORDER) {
|
||||
var i = vertex * ModelTransformer.STRIDE;
|
||||
|
||||
var x = Float.intBitsToFloat(vertices[i]);
|
||||
var y = Float.intBitsToFloat(vertices[i + 1]);
|
||||
var z = Float.intBitsToFloat(vertices[i + 2]);
|
||||
var transformed = matrix.transform(new Vector4f(x, y, z, 1));
|
||||
|
||||
var u = Float.intBitsToFloat(vertices[i + 4]);
|
||||
var v = Float.intBitsToFloat(vertices[i + 5]);
|
||||
buffer.vertex(
|
||||
transformed.x(), transformed.y(), transformed.z(),
|
||||
red, green, blue, 1.0F, u, v, overlayLight, lightmapCoord,
|
||||
normal.x(), normal.y(), normal.z()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private static void pushPoseFromTransformation(PoseStack stack, Transformation transformation) {
|
||||
stack.pushPose();
|
||||
|
||||
var trans = transformation.getTranslation();
|
||||
stack.translate(trans.x(), trans.y(), trans.z());
|
||||
|
||||
|
@@ -7,10 +7,7 @@ package dan200.computercraft.client.render.monitor;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.mojang.blaze3d.platform.MemoryTracker;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.Tesselator;
|
||||
import com.mojang.blaze3d.vertex.VertexBuffer;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.mojang.blaze3d.vertex.*;
|
||||
import com.mojang.math.Axis;
|
||||
import dan200.computercraft.client.FrameInfo;
|
||||
import dan200.computercraft.client.integration.ShaderMod;
|
||||
@@ -170,7 +167,7 @@ public class MonitorBlockEntityRenderer implements BlockEntityRenderer<MonitorBl
|
||||
tboVertex(buffer, matrix, -xMargin, pixelHeight + yMargin);
|
||||
tboVertex(buffer, matrix, pixelWidth + xMargin, -yMargin);
|
||||
tboVertex(buffer, matrix, pixelWidth + xMargin, pixelHeight + yMargin);
|
||||
RenderTypes.MONITOR_TBO.end(buffer, 0, 0, 0);
|
||||
RenderTypes.MONITOR_TBO.end(buffer, VertexSorting.DISTANCE_TO_ORIGIN);
|
||||
}
|
||||
case VBO -> {
|
||||
var backgroundBuffer = assertNonNull(renderState.backgroundBuffer);
|
||||
|
@@ -25,6 +25,7 @@ public class DirectVertexBuffer extends VertexBuffer {
|
||||
private int actualIndexCount;
|
||||
|
||||
public DirectVertexBuffer() {
|
||||
super(Usage.STATIC);
|
||||
if (DirectBuffers.HAS_DSA) {
|
||||
RenderSystem.glDeleteBuffers(vertexBufferId);
|
||||
if (DirectBuffers.ON_LINUX) BufferUploader.reset(); // See comment on DirectBuffers.deleteBuffer.
|
||||
|
@@ -13,9 +13,6 @@ import dan200.computercraft.shared.turtle.upgrades.TurtleModem;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A {@link TurtleUpgradeModeller} for modems, providing different models depending on if the modem is on/off.
|
||||
*/
|
||||
@@ -51,9 +48,4 @@ public class TurtleModemModeller implements TurtleUpgradeModeller<TurtleModem> {
|
||||
? TransformedModel.of(active ? leftOnModel : leftOffModel)
|
||||
: TransformedModel.of(active ? rightOnModel : rightOffModel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<ResourceLocation> getDependencies() {
|
||||
return List.of(leftOffModel, rightOffModel, leftOnModel, rightOnModel);
|
||||
}
|
||||
}
|
||||
|
@@ -15,12 +15,10 @@ import dan200.computercraft.impl.TurtleUpgrades;
|
||||
import dan200.computercraft.impl.UpgradeManager;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* A registry of {@link TurtleUpgradeModeller}s.
|
||||
@@ -73,8 +71,4 @@ public final class TurtleUpgradeModellers {
|
||||
var modeller = turtleModels.get(wrapper.serialiser());
|
||||
return modeller == null ? NULL_TURTLE_MODELLER : modeller;
|
||||
}
|
||||
|
||||
public static Stream<ResourceLocation> getDependencies() {
|
||||
return turtleModels.values().stream().flatMap(x -> x.getDependencies().stream());
|
||||
}
|
||||
}
|
||||
|
@@ -6,7 +6,6 @@ package dan200.computercraft.data;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.ComputerCraftTags;
|
||||
import dan200.computercraft.api.pocket.PocketUpgradeDataProvider;
|
||||
import dan200.computercraft.api.turtle.TurtleUpgradeDataProvider;
|
||||
import dan200.computercraft.api.upgrades.UpgradeBase;
|
||||
@@ -21,7 +20,6 @@ import dan200.computercraft.shared.platform.RegistryWrappers;
|
||||
import net.minecraft.data.CachedOutput;
|
||||
import net.minecraft.data.DataProvider;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
|
||||
@@ -99,12 +97,6 @@ public final class LanguageProvider implements DataProvider {
|
||||
add(ModRegistry.Items.POCKET_COMPUTER_ADVANCED.get(), "Advanced Pocket Computer");
|
||||
add(ModRegistry.Items.POCKET_COMPUTER_ADVANCED.get().getDescriptionId() + ".upgraded", "Advanced %s Pocket Computer");
|
||||
|
||||
// Tags (for EMI)
|
||||
add(ComputerCraftTags.Items.COMPUTER, "Computers");
|
||||
add(ComputerCraftTags.Items.TURTLE, "Turtles");
|
||||
add(ComputerCraftTags.Items.WIRED_MODEM, "Wired modems");
|
||||
add(ComputerCraftTags.Items.MONITOR, "Monitors");
|
||||
|
||||
// Turtle/pocket upgrades
|
||||
add("upgrade.minecraft.diamond_sword.adjective", "Melee");
|
||||
add("upgrade.minecraft.diamond_shovel.adjective", "Digging");
|
||||
@@ -158,6 +150,9 @@ public final class LanguageProvider implements DataProvider {
|
||||
add("commands.computercraft.track.dump.desc", "Dump the latest results of computer tracking.");
|
||||
add("commands.computercraft.track.dump.no_timings", "No timings available");
|
||||
add("commands.computercraft.track.dump.computer", "Computer");
|
||||
add("commands.computercraft.reload.synopsis", "Reload the ComputerCraft config file");
|
||||
add("commands.computercraft.reload.desc", "Reload the ComputerCraft config file");
|
||||
add("commands.computercraft.reload.done", "Reloaded config");
|
||||
add("commands.computercraft.queue.synopsis", "Send a computer_command event to a command computer");
|
||||
add("commands.computercraft.queue.desc", "Send a computer_command event to a command computer, passing through the additional arguments. This is mostly designed for map makers, acting as a more computer-friendly version of /trigger. Any player can run the command, which would most likely be done through a text component's click event.");
|
||||
|
||||
@@ -219,7 +214,6 @@ public final class LanguageProvider implements DataProvider {
|
||||
addConfigEntry(ConfigSpec.defaultComputerSettings, "Default Computer settings");
|
||||
addConfigEntry(ConfigSpec.logComputerErrors, "Log computer errors");
|
||||
addConfigEntry(ConfigSpec.commandRequireCreative, "Command computers require creative");
|
||||
addConfigEntry(ConfigSpec.disabledGenericMethods, "Disabled generic methods");
|
||||
|
||||
addConfigGroup(ConfigSpec.serverSpec, "execution", "Execution");
|
||||
addConfigEntry(ConfigSpec.computerThreads, "Computer threads");
|
||||
@@ -283,8 +277,8 @@ public final class LanguageProvider implements DataProvider {
|
||||
turtleUpgrades.getGeneratedUpgrades().stream().map(UpgradeBase::getUnlocalisedAdjective),
|
||||
pocketUpgrades.getGeneratedUpgrades().stream().map(UpgradeBase::getUnlocalisedAdjective),
|
||||
Metric.metrics().values().stream().map(x -> AggregatedMetric.TRANSLATION_PREFIX + x.name() + ".name"),
|
||||
ConfigSpec.serverSpec.entries().map(ConfigFile.Entry::translationKey),
|
||||
ConfigSpec.clientSpec.entries().map(ConfigFile.Entry::translationKey)
|
||||
getConfigEntries(ConfigSpec.serverSpec).map(ConfigFile.Entry::translationKey),
|
||||
getConfigEntries(ConfigSpec.clientSpec).map(ConfigFile.Entry::translationKey)
|
||||
).flatMap(x -> x);
|
||||
}
|
||||
|
||||
@@ -304,10 +298,6 @@ public final class LanguageProvider implements DataProvider {
|
||||
add(AggregatedMetric.TRANSLATION_PREFIX + metric.name() + ".name", text);
|
||||
}
|
||||
|
||||
private void add(TagKey<Item> tag, String text) {
|
||||
add("tag.item." + tag.location().getNamespace() + "." + tag.location().getPath(), text);
|
||||
}
|
||||
|
||||
private void addConfigGroup(ConfigFile spec, String path, String text) {
|
||||
var entry = spec.getEntry(path);
|
||||
if (!(entry instanceof ConfigFile.Group)) throw new IllegalArgumentException("Cannot find group " + path);
|
||||
@@ -318,4 +308,16 @@ public final class LanguageProvider implements DataProvider {
|
||||
add(value.translationKey(), text);
|
||||
add(value.translationKey() + ".tooltip", value.comment());
|
||||
}
|
||||
|
||||
private static Stream<ConfigFile.Entry> getConfigEntries(ConfigFile spec) {
|
||||
return spec.entries().flatMap(LanguageProvider::getConfigEntries);
|
||||
}
|
||||
|
||||
private static Stream<ConfigFile.Entry> getConfigEntries(ConfigFile.Entry entry) {
|
||||
if (entry instanceof ConfigFile.Value<?>) return Stream.of(entry);
|
||||
if (entry instanceof ConfigFile.Group group) {
|
||||
return Stream.concat(Stream.of(entry), group.children().flatMap(LanguageProvider::getConfigEntries));
|
||||
}
|
||||
throw new IllegalStateException("Invalid config entry " + entry);
|
||||
}
|
||||
}
|
||||
|
@@ -23,7 +23,7 @@ import net.minecraft.world.level.storage.loot.entries.LootItem;
|
||||
import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer;
|
||||
import net.minecraft.world.level.storage.loot.functions.CopyNameFunction;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
|
||||
import net.minecraft.world.level.storage.loot.predicates.AlternativeLootItemCondition;
|
||||
import net.minecraft.world.level.storage.loot.predicates.AnyOfCondition;
|
||||
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition;
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition;
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
|
||||
@@ -79,7 +79,7 @@ class LootTableProvider {
|
||||
}
|
||||
|
||||
private static void registerGeneric(BiConsumer<ResourceLocation, LootTable.Builder> add) {
|
||||
add.accept(CommonHooks.LOOT_TREASURE_DISK, LootTable.lootTable());
|
||||
add.accept(CommonHooks.TREASURE_DISK_LOOT, LootTable.lootTable());
|
||||
}
|
||||
|
||||
private static void selfDrop(BiConsumer<ResourceLocation, LootTable.Builder> add, Supplier<? extends Block> wrapper) {
|
||||
@@ -98,7 +98,7 @@ class LootTableProvider {
|
||||
blockDrop(
|
||||
add, block,
|
||||
DynamicLoot.dynamicEntry(new ResourceLocation(ComputerCraftAPI.MOD_ID, "computer")),
|
||||
AlternativeLootItemCondition.alternative(
|
||||
AnyOfCondition.anyOf(
|
||||
BlockNamedEntityLootCondition.BUILDER,
|
||||
HasComputerIdLootCondition.BUILDER,
|
||||
PlayerCreativeLootCondition.BUILDER.invert()
|
||||
|
@@ -88,6 +88,8 @@ class TagProvider {
|
||||
ModRegistry.Items.MONITOR_ADVANCED.get()
|
||||
);
|
||||
|
||||
tags.tag(ItemTags.BOOKSHELF_BOOKS).add(ModRegistry.Items.PRINTED_BOOK.get());
|
||||
|
||||
tags.tag(ComputerCraftTags.Items.TURTLE_CAN_PLACE)
|
||||
.add(Items.GLASS_BOTTLE)
|
||||
.addTag(ItemTags.BOATS);
|
||||
|
@@ -6,12 +6,10 @@ package dan200.computercraft.impl;
|
||||
|
||||
import dan200.computercraft.api.lua.GenericSource;
|
||||
import dan200.computercraft.core.asm.GenericMethod;
|
||||
import dan200.computercraft.shared.config.ConfigSpec;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* The global registry for {@link GenericSource}s.
|
||||
@@ -31,11 +29,6 @@ public final class GenericSources {
|
||||
}
|
||||
|
||||
public static Collection<GenericMethod> getAllMethods() {
|
||||
var disabledMethods = Set.copyOf(ConfigSpec.disabledGenericMethods.get());
|
||||
return sources.stream()
|
||||
.filter(x -> !disabledMethods.contains(x.id()))
|
||||
.flatMap(GenericMethod::getMethods)
|
||||
.filter(x -> !disabledMethods.contains(x.id()))
|
||||
.toList();
|
||||
return sources.stream().flatMap(GenericMethod::getMethods).toList();
|
||||
}
|
||||
}
|
||||
|
@@ -28,8 +28,6 @@ import net.minecraft.world.level.storage.loot.entries.LootTableReference;
|
||||
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
@@ -75,9 +73,9 @@ public final class CommonHooks {
|
||||
MonitorWatcher.onWatch(chunk, player);
|
||||
}
|
||||
|
||||
public static final ResourceLocation LOOT_TREASURE_DISK = new ResourceLocation(ComputerCraftAPI.MOD_ID, "treasure_disk");
|
||||
public static final ResourceLocation TREASURE_DISK_LOOT = new ResourceLocation(ComputerCraftAPI.MOD_ID, "treasure_disk");
|
||||
|
||||
private static final Set<ResourceLocation> TABLES = new HashSet<>(Arrays.asList(
|
||||
private static final Set<ResourceLocation> TREASURE_DISK_LOOT_TABLES = Set.of(
|
||||
BuiltInLootTables.SIMPLE_DUNGEON,
|
||||
BuiltInLootTables.ABANDONED_MINESHAFT,
|
||||
BuiltInLootTables.STRONGHOLD_CORRIDOR,
|
||||
@@ -88,14 +86,15 @@ public final class CommonHooks {
|
||||
BuiltInLootTables.IGLOO_CHEST,
|
||||
BuiltInLootTables.WOODLAND_MANSION,
|
||||
BuiltInLootTables.VILLAGE_CARTOGRAPHER
|
||||
));
|
||||
|
||||
);
|
||||
|
||||
public static @Nullable LootPool.Builder getExtraLootPool(ResourceLocation lootTable) {
|
||||
if (!lootTable.getNamespace().equals("minecraft") || !TABLES.contains(lootTable)) return null;
|
||||
if (!lootTable.getNamespace().equals("minecraft") || !TREASURE_DISK_LOOT_TABLES.contains(lootTable)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return LootPool.lootPool()
|
||||
.add(LootTableReference.lootTableReference(LOOT_TREASURE_DISK))
|
||||
.add(LootTableReference.lootTableReference(TREASURE_DISK_LOOT))
|
||||
.setRolls(ConstantValue.exactly(1));
|
||||
}
|
||||
|
||||
|
@@ -94,7 +94,7 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Material;
|
||||
import net.minecraft.world.level.material.MapColor;
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType;
|
||||
|
||||
import java.util.function.BiFunction;
|
||||
@@ -113,7 +113,7 @@ public final class ModRegistry {
|
||||
static final RegistrationHelper<Block> REGISTRY = PlatformHelper.get().createRegistrationHelper(Registries.BLOCK);
|
||||
|
||||
private static BlockBehaviour.Properties properties() {
|
||||
return BlockBehaviour.Properties.of(Material.STONE).strength(2);
|
||||
return BlockBehaviour.Properties.of().strength(2);
|
||||
}
|
||||
|
||||
private static BlockBehaviour.Properties computerProperties() {
|
||||
@@ -123,17 +123,17 @@ public final class ModRegistry {
|
||||
}
|
||||
|
||||
private static BlockBehaviour.Properties turtleProperties() {
|
||||
return BlockBehaviour.Properties.of(Material.STONE).strength(2.5f);
|
||||
return BlockBehaviour.Properties.of().strength(2.5f);
|
||||
}
|
||||
|
||||
private static BlockBehaviour.Properties modemProperties() {
|
||||
return BlockBehaviour.Properties.of(Material.STONE).strength(1.5f);
|
||||
return BlockBehaviour.Properties.of().strength(1.5f);
|
||||
}
|
||||
|
||||
public static final RegistryEntry<ComputerBlock<ComputerBlockEntity>> COMPUTER_NORMAL = REGISTRY.register("computer_normal",
|
||||
() -> new ComputerBlock<>(computerProperties(), ComputerFamily.NORMAL, BlockEntities.COMPUTER_NORMAL));
|
||||
() -> new ComputerBlock<>(computerProperties().mapColor(MapColor.STONE), ComputerFamily.NORMAL, BlockEntities.COMPUTER_NORMAL));
|
||||
public static final RegistryEntry<ComputerBlock<ComputerBlockEntity>> COMPUTER_ADVANCED = REGISTRY.register("computer_advanced",
|
||||
() -> new ComputerBlock<>(computerProperties(), ComputerFamily.ADVANCED, BlockEntities.COMPUTER_ADVANCED));
|
||||
() -> new ComputerBlock<>(computerProperties().mapColor(MapColor.GOLD), ComputerFamily.ADVANCED, BlockEntities.COMPUTER_ADVANCED));
|
||||
|
||||
public static final RegistryEntry<ComputerBlock<CommandComputerBlockEntity>> COMPUTER_COMMAND = REGISTRY.register("computer_command", () -> new ComputerBlock<>(
|
||||
computerProperties().strength(-1, 6000000.0F),
|
||||
@@ -141,27 +141,27 @@ public final class ModRegistry {
|
||||
));
|
||||
|
||||
public static final RegistryEntry<TurtleBlock> TURTLE_NORMAL = REGISTRY.register("turtle_normal",
|
||||
() -> new TurtleBlock(turtleProperties(), ComputerFamily.NORMAL, BlockEntities.TURTLE_NORMAL));
|
||||
() -> new TurtleBlock(turtleProperties().mapColor(MapColor.STONE), ComputerFamily.NORMAL, BlockEntities.TURTLE_NORMAL));
|
||||
public static final RegistryEntry<TurtleBlock> TURTLE_ADVANCED = REGISTRY.register("turtle_advanced",
|
||||
() -> new TurtleBlock(turtleProperties(), ComputerFamily.ADVANCED, BlockEntities.TURTLE_ADVANCED));
|
||||
() -> new TurtleBlock(turtleProperties().mapColor(MapColor.GOLD), ComputerFamily.ADVANCED, BlockEntities.TURTLE_ADVANCED));
|
||||
|
||||
public static final RegistryEntry<SpeakerBlock> SPEAKER = REGISTRY.register("speaker", () -> new SpeakerBlock(properties()));
|
||||
public static final RegistryEntry<DiskDriveBlock> DISK_DRIVE = REGISTRY.register("disk_drive", () -> new DiskDriveBlock(properties()));
|
||||
public static final RegistryEntry<PrinterBlock> PRINTER = REGISTRY.register("printer", () -> new PrinterBlock(properties()));
|
||||
public static final RegistryEntry<SpeakerBlock> SPEAKER = REGISTRY.register("speaker", () -> new SpeakerBlock(properties().mapColor(MapColor.STONE)));
|
||||
public static final RegistryEntry<DiskDriveBlock> DISK_DRIVE = REGISTRY.register("disk_drive", () -> new DiskDriveBlock(properties().mapColor(MapColor.STONE)));
|
||||
public static final RegistryEntry<PrinterBlock> PRINTER = REGISTRY.register("printer", () -> new PrinterBlock(properties().mapColor(MapColor.STONE)));
|
||||
|
||||
public static final RegistryEntry<MonitorBlock> MONITOR_NORMAL = REGISTRY.register("monitor_normal",
|
||||
() -> new MonitorBlock(properties(), BlockEntities.MONITOR_NORMAL));
|
||||
() -> new MonitorBlock(properties().mapColor(MapColor.STONE), BlockEntities.MONITOR_NORMAL));
|
||||
public static final RegistryEntry<MonitorBlock> MONITOR_ADVANCED = REGISTRY.register("monitor_advanced",
|
||||
() -> new MonitorBlock(properties(), BlockEntities.MONITOR_ADVANCED));
|
||||
() -> new MonitorBlock(properties().mapColor(MapColor.GOLD), BlockEntities.MONITOR_ADVANCED));
|
||||
|
||||
public static final RegistryEntry<WirelessModemBlock> WIRELESS_MODEM_NORMAL = REGISTRY.register("wireless_modem_normal",
|
||||
() -> new WirelessModemBlock(properties(), BlockEntities.WIRELESS_MODEM_NORMAL));
|
||||
() -> new WirelessModemBlock(properties().mapColor(MapColor.STONE), BlockEntities.WIRELESS_MODEM_NORMAL));
|
||||
public static final RegistryEntry<WirelessModemBlock> WIRELESS_MODEM_ADVANCED = REGISTRY.register("wireless_modem_advanced",
|
||||
() -> new WirelessModemBlock(properties(), BlockEntities.WIRELESS_MODEM_ADVANCED));
|
||||
() -> new WirelessModemBlock(properties().mapColor(MapColor.GOLD), BlockEntities.WIRELESS_MODEM_ADVANCED));
|
||||
|
||||
public static final RegistryEntry<WiredModemFullBlock> WIRED_MODEM_FULL = REGISTRY.register("wired_modem_full",
|
||||
() -> new WiredModemFullBlock(modemProperties()));
|
||||
public static final RegistryEntry<CableBlock> CABLE = REGISTRY.register("cable", () -> new CableBlock(modemProperties()));
|
||||
() -> new WiredModemFullBlock(modemProperties().mapColor(MapColor.STONE)));
|
||||
public static final RegistryEntry<CableBlock> CABLE = REGISTRY.register("cable", () -> new CableBlock(modemProperties().mapColor(MapColor.STONE)));
|
||||
}
|
||||
|
||||
public static class BlockEntities {
|
||||
@@ -366,50 +366,11 @@ public final class ModRegistry {
|
||||
public static final RegistryEntry<ImpostorShapelessRecipe.Serializer> IMPOSTOR_SHAPELESS = REGISTRY.register("impostor_shapeless", ImpostorShapelessRecipe.Serializer::new);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register any objects which don't have to be done on the main thread.
|
||||
*/
|
||||
public static void register() {
|
||||
Blocks.REGISTRY.register();
|
||||
BlockEntities.REGISTRY.register();
|
||||
Items.REGISTRY.register();
|
||||
TurtleSerialisers.REGISTRY.register();
|
||||
PocketUpgradeSerialisers.REGISTRY.register();
|
||||
Menus.REGISTRY.register();
|
||||
ArgumentTypes.REGISTRY.register();
|
||||
LootItemConditionTypes.REGISTRY.register();
|
||||
RecipeSerializers.REGISTRY.register();
|
||||
static class CreativeTabs {
|
||||
static final RegistrationHelper<CreativeModeTab> REGISTRY = PlatformHelper.get().createRegistrationHelper(Registries.CREATIVE_MODE_TAB);
|
||||
|
||||
// Register bundled power providers
|
||||
ComputerCraftAPI.registerBundledRedstoneProvider(new DefaultBundledRedstoneProvider());
|
||||
ComputerCraftAPI.registerRefuelHandler(new FurnaceRefuelHandler());
|
||||
ComputerCraftAPI.registerMediaProvider(stack -> {
|
||||
var item = stack.getItem();
|
||||
if (item instanceof IMedia media) return media;
|
||||
if (item instanceof RecordItem) return RecordMedia.INSTANCE;
|
||||
return null;
|
||||
});
|
||||
|
||||
VanillaDetailRegistries.ITEM_STACK.addProvider(ItemDetails::fill);
|
||||
VanillaDetailRegistries.BLOCK_IN_WORLD.addProvider(BlockDetails::fill);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register any objects which must be done on the main thread.
|
||||
*/
|
||||
public static void registerMainThread() {
|
||||
CauldronInteraction.WATER.put(ModRegistry.Items.TURTLE_NORMAL.get(), TurtleItem.CAULDRON_INTERACTION);
|
||||
CauldronInteraction.WATER.put(ModRegistry.Items.TURTLE_ADVANCED.get(), TurtleItem.CAULDRON_INTERACTION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure a {@link CreativeModeTab.Builder} to contain all of ComputerCraft's items.
|
||||
*
|
||||
* @param builder The builder to configure.
|
||||
* @return The same building, for calling {@link CreativeModeTab.Builder#build()} on.
|
||||
*/
|
||||
public static CreativeModeTab.Builder registerCreativeTab(CreativeModeTab.Builder builder) {
|
||||
return builder
|
||||
@SuppressWarnings("unused")
|
||||
private static final RegistryEntry<CreativeModeTab> TAB = REGISTRY.register("tab", () -> PlatformHelper.get().newCreativeModeTab()
|
||||
.icon(() -> new ItemStack(Items.COMPUTER_NORMAL.get()))
|
||||
.title(Component.translatable("itemGroup.computercraft"))
|
||||
.displayItems((context, out) -> {
|
||||
@@ -441,7 +402,45 @@ public final class ModRegistry {
|
||||
for (var colour = 0; colour < 16; colour++) {
|
||||
out.accept(DiskItem.createFromIDAndColour(-1, null, Colour.VALUES[colour].getHex()));
|
||||
}
|
||||
});
|
||||
})
|
||||
.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Register any objects which don't have to be done on the main thread.
|
||||
*/
|
||||
public static void register() {
|
||||
Blocks.REGISTRY.register();
|
||||
BlockEntities.REGISTRY.register();
|
||||
Items.REGISTRY.register();
|
||||
TurtleSerialisers.REGISTRY.register();
|
||||
PocketUpgradeSerialisers.REGISTRY.register();
|
||||
Menus.REGISTRY.register();
|
||||
ArgumentTypes.REGISTRY.register();
|
||||
LootItemConditionTypes.REGISTRY.register();
|
||||
RecipeSerializers.REGISTRY.register();
|
||||
CreativeTabs.REGISTRY.register();
|
||||
|
||||
// Register bundled power providers
|
||||
ComputerCraftAPI.registerBundledRedstoneProvider(new DefaultBundledRedstoneProvider());
|
||||
ComputerCraftAPI.registerRefuelHandler(new FurnaceRefuelHandler());
|
||||
ComputerCraftAPI.registerMediaProvider(stack -> {
|
||||
var item = stack.getItem();
|
||||
if (item instanceof IMedia media) return media;
|
||||
if (item instanceof RecordItem) return RecordMedia.INSTANCE;
|
||||
return null;
|
||||
});
|
||||
|
||||
VanillaDetailRegistries.ITEM_STACK.addProvider(ItemDetails::fill);
|
||||
VanillaDetailRegistries.BLOCK_IN_WORLD.addProvider(BlockDetails::fill);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register any objects which must be done on the main thread.
|
||||
*/
|
||||
public static void registerMainThread() {
|
||||
CauldronInteraction.WATER.put(ModRegistry.Items.TURTLE_NORMAL.get(), TurtleItem.CAULDRON_INTERACTION);
|
||||
CauldronInteraction.WATER.put(ModRegistry.Items.TURTLE_ADVANCED.get(), TurtleItem.CAULDRON_INTERACTION);
|
||||
}
|
||||
|
||||
private static void addTurtle(CreativeModeTab.Output out, TurtleItem turtle) {
|
||||
|
@@ -127,7 +127,9 @@ public final class CommandComputerCraft {
|
||||
if (computer.isOn()) shutdown++;
|
||||
computer.shutdown();
|
||||
}
|
||||
context.getSource().sendSuccess(Component.translatable("commands.computercraft.shutdown.done", shutdown, computers.size()), false);
|
||||
|
||||
var didShutdown = shutdown;
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.computercraft.shutdown.done", didShutdown, computers.size()), false);
|
||||
return shutdown;
|
||||
}))
|
||||
|
||||
@@ -141,7 +143,9 @@ public final class CommandComputerCraft {
|
||||
if (!computer.isOn()) on++;
|
||||
computer.turnOn();
|
||||
}
|
||||
context.getSource().sendSuccess(Component.translatable("commands.computercraft.turn_on.done", on, computers.size()), false);
|
||||
|
||||
var didOn = on;
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.computercraft.turn_on.done", didOn, computers.size()), false);
|
||||
return on;
|
||||
}))
|
||||
|
||||
@@ -219,7 +223,7 @@ public final class CommandComputerCraft {
|
||||
getMetricsInstance(context.getSource()).start();
|
||||
|
||||
var stopCommand = "/computercraft track stop";
|
||||
context.getSource().sendSuccess(Component.translatable(
|
||||
context.getSource().sendSuccess(() -> Component.translatable(
|
||||
"commands.computercraft.track.start.stop",
|
||||
link(text(stopCommand), stopCommand, Component.translatable("commands.computercraft.track.stop.action"))
|
||||
), false);
|
||||
|
@@ -44,12 +44,12 @@ public class ArgumentUtils {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static <A extends ArgumentType<?>, T extends ArgumentTypeInfo.Template<A>> void serializeToNetwork(FriendlyByteBuf buffer, ArgumentTypeInfo<A, T> type, ArgumentTypeInfo.Template<A> template) {
|
||||
buffer.writeId(RegistryWrappers.COMMAND_ARGUMENT_TYPES, type);
|
||||
RegistryWrappers.writeId(buffer, RegistryWrappers.COMMAND_ARGUMENT_TYPES, type);
|
||||
type.serializeToNetwork((T) template, buffer);
|
||||
}
|
||||
|
||||
public static ArgumentTypeInfo.Template<?> deserialize(FriendlyByteBuf buffer) {
|
||||
var type = buffer.readById(RegistryWrappers.COMMAND_ARGUMENT_TYPES);
|
||||
var type = RegistryWrappers.readId(buffer, RegistryWrappers.COMMAND_ARGUMENT_TYPES);
|
||||
Objects.requireNonNull(type, "Unknown argument type");
|
||||
return type.deserializeFromNetwork(buffer);
|
||||
}
|
||||
|
@@ -153,14 +153,14 @@ public final class HelpingArgumentBuilder extends LiteralArgumentBuilder<Command
|
||||
|
||||
@Override
|
||||
public int run(CommandContext<CommandSourceStack> context) {
|
||||
context.getSource().sendSuccess(getHelp(context, assertNonNull(node), id, command), false);
|
||||
context.getSource().sendSuccess(() -> getHelp(context, assertNonNull(node), id, command), false);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private static Command<CommandSourceStack> helpForChild(CommandNode<CommandSourceStack> node, String id, String command) {
|
||||
return context -> {
|
||||
context.getSource().sendSuccess(getHelp(context, node, id + "." + node.getName().replace('-', '_'), command + " " + node.getName()), false);
|
||||
context.getSource().sendSuccess(() -> getHelp(context, node, id + "." + node.getName().replace('-', '_'), command + " " + node.getName()), false);
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
|
@@ -37,6 +37,6 @@ public class ServerTableFormatter implements TableFormatter {
|
||||
|
||||
@Override
|
||||
public void writeLine(String label, Component component) {
|
||||
source.sendSuccess(component, false);
|
||||
source.sendSuccess(() -> component, false);
|
||||
}
|
||||
}
|
||||
|
@@ -32,7 +32,7 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import net.minecraft.world.level.storage.loot.LootParams;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
@@ -138,13 +138,12 @@ public abstract class AbstractComputerBlock<T extends AbstractComputerBlockEntit
|
||||
|
||||
var tile = world.getBlockEntity(pos);
|
||||
if (tile instanceof AbstractComputerBlockEntity computer) {
|
||||
var context = new LootContext.Builder(serverWorld)
|
||||
.withRandom(world.random)
|
||||
var context = new LootParams.Builder(serverWorld)
|
||||
.withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(pos))
|
||||
.withParameter(LootContextParams.TOOL, player.getMainHandItem())
|
||||
.withParameter(LootContextParams.THIS_ENTITY, player)
|
||||
.withParameter(LootContextParams.BLOCK_ENTITY, tile)
|
||||
.withDynamicDrop(DROP, (ctx, out) -> out.accept(getItem(computer)));
|
||||
.withDynamicDrop(DROP, out -> out.accept(getItem(computer)));
|
||||
for (var item : state.getDrops(context)) {
|
||||
popResource(world, pos, item);
|
||||
}
|
||||
|
@@ -199,11 +199,6 @@ public abstract class AbstractComputerBlockEntity extends BlockEntity implements
|
||||
return localSide;
|
||||
}
|
||||
|
||||
private void updateRedstoneInputs(ServerComputer computer) {
|
||||
var pos = getBlockPos();
|
||||
for (var dir : DirectionUtil.FACINGS) updateRedstoneInput(computer, dir, pos.relative(dir));
|
||||
}
|
||||
|
||||
private void updateRedstoneInput(ServerComputer computer, Direction dir, BlockPos targetPos) {
|
||||
var offsetSide = dir.getOpposite();
|
||||
var localDir = remapToLocalSide(dir);
|
||||
@@ -259,7 +254,8 @@ public abstract class AbstractComputerBlockEntity extends BlockEntity implements
|
||||
|
||||
// If the position is not any adjacent one, update all inputs. This is pretty terrible, but some redstone mods
|
||||
// handle this incorrectly.
|
||||
updateRedstoneInputs(computer);
|
||||
var pos = getBlockPos();
|
||||
for (var dir : DirectionUtil.FACINGS) updateRedstoneInput(computer, dir, pos.relative(dir));
|
||||
invalidSides = (1 << 6) - 1; // Mark all peripherals as dirty.
|
||||
}
|
||||
|
||||
@@ -268,10 +264,9 @@ public abstract class AbstractComputerBlockEntity extends BlockEntity implements
|
||||
*/
|
||||
public void updateOutput() {
|
||||
BlockEntityHelpers.updateBlock(this);
|
||||
for (var dir : DirectionUtil.FACINGS) RedstoneUtil.propagateRedstoneOutput(getLevel(), getBlockPos(), dir);
|
||||
|
||||
var computer = getServerComputer();
|
||||
if (computer != null) updateRedstoneInputs(computer);
|
||||
for (var dir : DirectionUtil.FACINGS) {
|
||||
RedstoneUtil.propagateRedstoneOutput(getLevel(), getBlockPos(), dir);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract ServerComputer createComputer(int id);
|
||||
|
@@ -54,6 +54,12 @@ public interface ConfigFile {
|
||||
* A group of config entries.
|
||||
*/
|
||||
non-sealed interface Group extends Entry {
|
||||
/**
|
||||
* Get all entries in this group.
|
||||
*
|
||||
* @return All child entries.
|
||||
*/
|
||||
Stream<Entry> children();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -35,7 +35,6 @@ public final class ConfigSpec {
|
||||
public static final ConfigFile.Value<Boolean> logComputerErrors;
|
||||
public static final ConfigFile.Value<Boolean> commandRequireCreative;
|
||||
public static final ConfigFile.Value<Integer> uploadMaxSize;
|
||||
public static final ConfigFile.Value<List<? extends String>> disabledGenericMethods;
|
||||
|
||||
public static final ConfigFile.Value<Integer> computerThreads;
|
||||
public static final ConfigFile.Value<Integer> maxMainGlobalTime;
|
||||
@@ -140,19 +139,6 @@ public final class ConfigSpec {
|
||||
Require players to be in creative mode and be opped in order to interact with
|
||||
command computers. This is the default behaviour for vanilla's Command blocks.""")
|
||||
.define("command_require_creative", Config.commandRequireCreative);
|
||||
|
||||
disabledGenericMethods = builder
|
||||
.comment("""
|
||||
A list of generic methods or method sources to disable. Generic methods are
|
||||
methods added to a block/block entity when there is no explicit peripheral
|
||||
provider. This includes inventory methods (i.e. inventory.getItemDetail,
|
||||
inventory.pushItems), and (if on Forge), the fluid_storage and energy_storage
|
||||
methods.
|
||||
Methods in this list can either be a whole group of methods (computercraft:inventory)
|
||||
or a single method (computercraft:inventory#pushItems).
|
||||
""")
|
||||
.worldRestart()
|
||||
.defineList("disabled_generic_methods", List.of(), x -> x instanceof String);
|
||||
}
|
||||
|
||||
{
|
||||
|
@@ -19,7 +19,7 @@ public record SpeakerPosition(@Nullable Level level, Vec3 position, @Nullable En
|
||||
}
|
||||
|
||||
public static SpeakerPosition of(Entity entity) {
|
||||
return new SpeakerPosition(entity.level, entity.getEyePosition(1), entity);
|
||||
return new SpeakerPosition(entity.level(), entity.getEyePosition(1), entity);
|
||||
}
|
||||
|
||||
public boolean withinDistance(SpeakerPosition other, double distanceSq) {
|
||||
|
@@ -33,6 +33,7 @@ import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import net.minecraft.world.inventory.CraftingContainer;
|
||||
import net.minecraft.world.inventory.MenuType;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.DyeColor;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -279,6 +280,13 @@ public interface PlatformHelper extends dan200.computercraft.impl.PlatformHelper
|
||||
*/
|
||||
int getBurnTime(ItemStack stack);
|
||||
|
||||
/**
|
||||
* Create a builder for a new creative tab.
|
||||
*
|
||||
* @return The creative tab builder.
|
||||
*/
|
||||
CreativeModeTab.Builder newCreativeModeTab();
|
||||
|
||||
/**
|
||||
* Get the "container" item to be returned after crafting. For instance, crafting with a lava bucket should return
|
||||
* an empty bucket.
|
||||
|
@@ -5,7 +5,6 @@
|
||||
package dan200.computercraft.shared.platform;
|
||||
|
||||
import net.minecraft.commands.synchronization.ArgumentTypeInfo;
|
||||
import net.minecraft.core.IdMap;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
@@ -37,7 +36,9 @@ public final class RegistryWrappers {
|
||||
public static final RegistryWrapper<RecipeSerializer<?>> RECIPE_SERIALIZERS = PlatformHelper.get().wrap(Registries.RECIPE_SERIALIZER);
|
||||
public static final RegistryWrapper<MenuType<?>> MENU = PlatformHelper.get().wrap(Registries.MENU);
|
||||
|
||||
public interface RegistryWrapper<T> extends IdMap<T> {
|
||||
public interface RegistryWrapper<T> extends Iterable<T> {
|
||||
int getId(T object);
|
||||
|
||||
ResourceLocation getKey(T object);
|
||||
|
||||
T get(ResourceLocation location);
|
||||
@@ -45,6 +46,8 @@ public final class RegistryWrappers {
|
||||
@Nullable
|
||||
T tryGet(ResourceLocation location);
|
||||
|
||||
T get(int id);
|
||||
|
||||
default Stream<T> stream() {
|
||||
return StreamSupport.stream(spliterator(), false);
|
||||
}
|
||||
@@ -53,6 +56,15 @@ public final class RegistryWrappers {
|
||||
private RegistryWrappers() {
|
||||
}
|
||||
|
||||
public static <K> void writeId(FriendlyByteBuf buf, RegistryWrapper<K> registry, K object) {
|
||||
buf.writeVarInt(registry.getId(object));
|
||||
}
|
||||
|
||||
public static <K> K readId(FriendlyByteBuf buf, RegistryWrapper<K> registry) {
|
||||
var id = buf.readVarInt();
|
||||
return registry.get(id);
|
||||
}
|
||||
|
||||
public static <K> void writeKey(FriendlyByteBuf buf, RegistryWrapper<K> registry, K object) {
|
||||
buf.writeResourceLocation(registry.getKey(object));
|
||||
}
|
||||
|
@@ -153,7 +153,7 @@ public class PocketServerComputer extends ServerComputer implements IPocketAcces
|
||||
super.tickServer();
|
||||
|
||||
// Find any players which have gone missing and remove them from the tracking list.
|
||||
tracking.removeIf(player -> !player.isAlive() || player.level != getLevel());
|
||||
tracking.removeIf(player -> !player.isAlive() || player.level() != getLevel());
|
||||
|
||||
// And now find any new players, add them to the tracking list, and broadcast state where appropriate.
|
||||
var sendState = hasOutputChanged() || lightChanged;
|
||||
|
@@ -48,7 +48,7 @@ public class PocketComputerMenuProvider implements MenuProvider {
|
||||
isTypingOnly ? ModRegistry.Menus.POCKET_COMPUTER_NO_TERM.get() : ModRegistry.Menus.POCKET_COMPUTER.get(), id, inventory,
|
||||
p -> {
|
||||
var stack = p.getItemInHand(hand);
|
||||
return stack.getItem() == item && PocketComputerItem.getServerComputer(assertNonNull(entity.level.getServer()), stack) == computer;
|
||||
return stack.getItem() == item && PocketComputerItem.getServerComputer(assertNonNull(entity.level().getServer()), stack) == computer;
|
||||
},
|
||||
computer, item.getFamily()
|
||||
);
|
||||
|
@@ -127,10 +127,11 @@ public class PocketComputerItem extends Item implements IComputerItem, IMedia, I
|
||||
|
||||
@ForgeOverride
|
||||
public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) {
|
||||
if (entity.level.isClientSide || entity.level.getServer() == null) return false;
|
||||
var level = entity.level();
|
||||
if (level.isClientSide || level.getServer() == null) return false;
|
||||
|
||||
var computer = getServerComputer(entity.level.getServer(), stack);
|
||||
if (computer != null && tick(stack, entity.level, entity, computer)) entity.setItem(stack.copy());
|
||||
var computer = getServerComputer(level.getServer(), stack);
|
||||
if (computer != null && tick(stack, entity.level(), entity, computer)) entity.setItem(stack.copy());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -37,7 +37,7 @@ public class PocketSpeakerPeripheral extends UpgradeSpeakerPeripheral {
|
||||
public void update() {
|
||||
var entity = access.getEntity();
|
||||
if (entity != null) {
|
||||
level = entity.level;
|
||||
level = entity.level();
|
||||
position = entity.position();
|
||||
}
|
||||
|
||||
|
@@ -317,7 +317,6 @@ public class TurtleBrain implements TurtleAccessInternal {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getVisualPosition(float f) {
|
||||
var offset = getRenderOffset(f);
|
||||
var pos = owner.getBlockPos();
|
||||
@@ -328,7 +327,6 @@ public class TurtleBrain implements TurtleAccessInternal {
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getVisualYaw(float f) {
|
||||
var yaw = getDirection().toYRot();
|
||||
switch (animation) {
|
||||
|
@@ -44,7 +44,7 @@ public class TurtleMoveCommand implements TurtleCommand {
|
||||
var state = oldWorld.getBlockState(newPosition);
|
||||
if (!oldWorld.isEmptyBlock(newPosition) &&
|
||||
!WorldUtil.isLiquidBlock(oldWorld, newPosition) &&
|
||||
!state.getMaterial().isReplaceable()) {
|
||||
!state.canBeReplaced()) {
|
||||
return TurtleCommandResult.failure("Movement obstructed");
|
||||
}
|
||||
|
||||
|
@@ -29,6 +29,7 @@ import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.SignBlockEntity;
|
||||
import net.minecraft.world.level.block.entity.SignText;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
@@ -74,7 +75,7 @@ public class TurtlePlaceCommand implements TurtleCommand {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean deploy(
|
||||
public static boolean deploy(
|
||||
ItemStack stack, ITurtleAccess turtle, TurtlePlayer turtlePlayer, Direction direction,
|
||||
@Nullable Object[] extraArguments, @Nullable ErrorMessage outErrorMessage
|
||||
) {
|
||||
@@ -140,22 +141,6 @@ public class TurtlePlaceCommand implements TurtleCommand {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate where a turtle would interact with a block.
|
||||
*
|
||||
* @param position The position of the block.
|
||||
* @param side The side the turtle is clicking on.
|
||||
* @return The hit result.
|
||||
*/
|
||||
public static BlockHitResult getHitResult(BlockPos position, Direction side) {
|
||||
var hitX = 0.5 + side.getStepX() * 0.5;
|
||||
var hitY = 0.5 + side.getStepY() * 0.5;
|
||||
var hitZ = 0.5 + side.getStepZ() * 0.5;
|
||||
if (Math.abs(hitY - 0.5) < 0.01) hitY = 0.45;
|
||||
|
||||
return new BlockHitResult(new Vec3(position.getX() + hitX, position.getY() + hitY, position.getZ() + hitZ), side, position, false);
|
||||
}
|
||||
|
||||
private static boolean deployOnBlock(
|
||||
ItemStack stack, ITurtleAccess turtle, TurtlePlayer turtlePlayer, BlockPos position, Direction side,
|
||||
@Nullable Object[] extraArguments, boolean adjacent, @Nullable ErrorMessage outErrorMessage
|
||||
@@ -165,8 +150,14 @@ public class TurtlePlaceCommand implements TurtleCommand {
|
||||
var playerPosition = position.relative(side);
|
||||
turtlePlayer.setPosition(turtle, playerPosition, playerDir);
|
||||
|
||||
// Calculate where the turtle would hit the block
|
||||
var hitX = 0.5f + side.getStepX() * 0.5f;
|
||||
var hitY = 0.5f + side.getStepY() * 0.5f;
|
||||
var hitZ = 0.5f + side.getStepZ() * 0.5f;
|
||||
if (Math.abs(hitY - 0.5f) < 0.01f) hitY = 0.45f;
|
||||
|
||||
// Check if there's something suitable to place onto
|
||||
var hit = getHitResult(position, side);
|
||||
var hit = new BlockHitResult(new Vec3(position.getX() + hitX, position.getY() + hitY, position.getZ() + hitZ), side, position, false);
|
||||
var context = new UseOnContext(turtlePlayer.player(), InteractionHand.MAIN_HAND, hit);
|
||||
if (!canDeployOnBlock(new BlockPlaceContext(context), turtle, turtlePlayer, position, side, adjacent, outErrorMessage)) {
|
||||
return false;
|
||||
@@ -208,7 +199,7 @@ public class TurtlePlaceCommand implements TurtleCommand {
|
||||
);
|
||||
if (result != InteractionResult.PASS) return result;
|
||||
|
||||
var level = turtlePlayer.player().level;
|
||||
var level = turtlePlayer.player().level();
|
||||
|
||||
// We special case some items which we allow to place "normally". Yes, this is very ugly.
|
||||
var item = stack.getItem();
|
||||
@@ -223,18 +214,18 @@ public class TurtlePlaceCommand implements TurtleCommand {
|
||||
var signTile = (SignBlockEntity) tile;
|
||||
var split = Splitter.on('\n').splitToList(message);
|
||||
var firstLine = split.size() <= 2 ? 1 : 0;
|
||||
|
||||
var signText = new SignText();
|
||||
for (var i = 0; i < 4; i++) {
|
||||
if (i >= firstLine && i < firstLine + split.size()) {
|
||||
var line = split.get(i - firstLine);
|
||||
signTile.setMessage(i, line.length() > 15
|
||||
signText.setMessage(i, line.length() > 15
|
||||
? Component.literal(line.substring(0, 15))
|
||||
: Component.literal(line)
|
||||
);
|
||||
} else {
|
||||
signTile.setMessage(i, Component.literal(""));
|
||||
}
|
||||
}
|
||||
signTile.setChanged();
|
||||
signTile.setText(signText, true);
|
||||
world.sendBlockUpdated(tile.getBlockPos(), tile.getBlockState(), tile.getBlockState(), Block.UPDATE_ALL);
|
||||
}
|
||||
|
||||
|
@@ -10,6 +10,7 @@ import dan200.computercraft.shared.turtle.blocks.TurtleBlockEntity;
|
||||
import dan200.computercraft.shared.turtle.core.TurtlePlayer;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.player.StackedContents;
|
||||
import net.minecraft.world.inventory.CraftingContainer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.Recipe;
|
||||
@@ -17,20 +18,22 @@ import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class TurtleInventoryCrafting extends CraftingContainer {
|
||||
public class TurtleInventoryCrafting implements CraftingContainer {
|
||||
public static final int WIDTH = 3;
|
||||
public static final int HEIGHT = 3;
|
||||
public static final int SIZE = WIDTH * HEIGHT;
|
||||
|
||||
private final ITurtleAccess turtle;
|
||||
private int xStart = 0;
|
||||
private int yStart = 0;
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
public TurtleInventoryCrafting(ITurtleAccess turtle) {
|
||||
// Passing null in here is evil, but we don't have a container present. We override most methods in order to
|
||||
// avoid throwing any NPEs.
|
||||
super(null, 0, 0);
|
||||
this.turtle = turtle;
|
||||
}
|
||||
|
||||
@@ -96,7 +99,7 @@ public class TurtleInventoryCrafting extends CraftingContainer {
|
||||
// afterwards).
|
||||
if (existing.isEmpty()) {
|
||||
setItem(slot, remainder);
|
||||
} else if (ItemStack.isSame(existing, remainder) && ItemStack.tagMatches(existing, remainder)) {
|
||||
} else if (ItemStack.isSameItemSameTags(existing, remainder)) {
|
||||
remainder.grow(existing.getCount());
|
||||
setItem(slot, remainder);
|
||||
} else {
|
||||
@@ -110,12 +113,12 @@ public class TurtleInventoryCrafting extends CraftingContainer {
|
||||
|
||||
@Override
|
||||
public int getWidth() {
|
||||
return 3;
|
||||
return WIDTH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
return 3;
|
||||
return HEIGHT;
|
||||
}
|
||||
|
||||
private int modifyIndex(int index) {
|
||||
@@ -126,35 +129,37 @@ public class TurtleInventoryCrafting extends CraftingContainer {
|
||||
: -1;
|
||||
}
|
||||
|
||||
// IInventory implementation
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
for (int i = 0; i < SIZE; i++) {
|
||||
if (!getItem(i).isEmpty()) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getContainerSize() {
|
||||
return getWidth() * getHeight();
|
||||
return SIZE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItem(int i) {
|
||||
i = modifyIndex(i);
|
||||
return turtle.getInventory().getItem(i);
|
||||
return turtle.getInventory().getItem(modifyIndex(i));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack removeItemNoUpdate(int i) {
|
||||
i = modifyIndex(i);
|
||||
return turtle.getInventory().removeItemNoUpdate(i);
|
||||
return turtle.getInventory().removeItemNoUpdate(modifyIndex(i));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack removeItem(int i, int size) {
|
||||
i = modifyIndex(i);
|
||||
return turtle.getInventory().removeItem(i, size);
|
||||
return turtle.getInventory().removeItem(modifyIndex(i), size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(int i, ItemStack stack) {
|
||||
i = modifyIndex(i);
|
||||
turtle.getInventory().setItem(i, stack);
|
||||
turtle.getInventory().setItem(modifyIndex(i), stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -174,15 +179,34 @@ public class TurtleInventoryCrafting extends CraftingContainer {
|
||||
|
||||
@Override
|
||||
public boolean canPlaceItem(int i, ItemStack stack) {
|
||||
i = modifyIndex(i);
|
||||
return turtle.getInventory().canPlaceItem(i, stack);
|
||||
return turtle.getInventory().canPlaceItem(modifyIndex(i), stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearContent() {
|
||||
for (var i = 0; i < getContainerSize(); i++) {
|
||||
for (var i = 0; i < SIZE; i++) {
|
||||
var j = modifyIndex(i);
|
||||
turtle.getInventory().setItem(j, ItemStack.EMPTY);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillStackedContents(StackedContents contents) {
|
||||
for (int i = 0; i < SIZE; i++) contents.accountSimpleStack(getItem(i));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getItems() {
|
||||
return new AbstractList<>() {
|
||||
@Override
|
||||
public ItemStack get(int index) {
|
||||
return getItem(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return SIZE;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -82,7 +82,7 @@ public class TurtleTool extends AbstractTurtleUpgrade {
|
||||
private static boolean isEnchanted(@Nullable CompoundTag tag) {
|
||||
if (tag == null || tag.isEmpty()) return false;
|
||||
return (tag.contains(ItemStack.TAG_ENCH, TAG_LIST) && !tag.getList(ItemStack.TAG_ENCH, TAG_COMPOUND).isEmpty())
|
||||
|| (tag.contains("AttributeModifiers", TAG_LIST) && !tag.getList("AttributeModifiers", TAG_COMPOUND).isEmpty());
|
||||
|| (tag.contains("AttributeModifiers", TAG_LIST) && !tag.getList("AttributeModifiers", TAG_COMPOUND).isEmpty());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,12 +100,12 @@ public class TurtleTool extends AbstractTurtleUpgrade {
|
||||
public ItemStack getUpgradeItem(CompoundTag upgradeData) {
|
||||
// Copy upgrade data back to the item.
|
||||
var item = super.getUpgradeItem(upgradeData).copy();
|
||||
item.setTag(upgradeData.contains(TAG_ITEM_TAG, TAG_COMPOUND) ? upgradeData.getCompound(TAG_ITEM_TAG) : null);
|
||||
item.setTag(upgradeData.contains(TAG_ITEM_TAG, TAG_COMPOUND) ? upgradeData.getCompound(TAG_ITEM_TAG).copy() : null);
|
||||
return item;
|
||||
}
|
||||
|
||||
private ItemStack getToolStack(ITurtleAccess turtle, TurtleSide side) {
|
||||
return getUpgradeItem(turtle.getUpgradeNBTData(side)).copy();
|
||||
return getUpgradeItem(turtle.getUpgradeNBTData(side));
|
||||
}
|
||||
|
||||
private void setToolStack(ITurtleAccess turtle, TurtleSide side, ItemStack stack) {
|
||||
@@ -294,20 +294,19 @@ public class TurtleTool extends AbstractTurtleUpgrade {
|
||||
private TurtleCommandResult dig(ITurtleAccess turtle, TurtleSide side, Direction direction) {
|
||||
var level = (ServerLevel) turtle.getLevel();
|
||||
|
||||
var blockPosition = turtle.getPosition().relative(direction);
|
||||
if (level.isEmptyBlock(blockPosition) || WorldUtil.isLiquidBlock(level, blockPosition)) {
|
||||
return TurtleCommandResult.failure("Nothing to dig here");
|
||||
}
|
||||
|
||||
return withEquippedItem(turtle, side, direction, turtlePlayer -> {
|
||||
var stack = turtlePlayer.player().getItemInHand(InteractionHand.MAIN_HAND);
|
||||
|
||||
// Right-click the block when using a shovel/hoe. Important that we do this before checking the block is
|
||||
// present, as we allow doing these actions from slightly further away.
|
||||
if (PlatformHelper.get().hasToolUsage(stack) && useTool(level, turtle, turtlePlayer, stack, direction)) {
|
||||
// Right-click the block when using a shovel/hoe.
|
||||
if (PlatformHelper.get().hasToolUsage(item) && TurtlePlaceCommand.deploy(stack, turtle, turtlePlayer, direction, null, null)) {
|
||||
return TurtleCommandResult.success();
|
||||
}
|
||||
|
||||
var blockPosition = turtle.getPosition().relative(direction);
|
||||
if (level.isEmptyBlock(blockPosition) || WorldUtil.isLiquidBlock(level, blockPosition)) {
|
||||
return TurtleCommandResult.failure("Nothing to dig here");
|
||||
}
|
||||
|
||||
// Check if we can break the block
|
||||
var breakable = checkBlockBreakable(level, blockPosition, turtlePlayer);
|
||||
if (!breakable.isSuccess()) return breakable;
|
||||
@@ -321,34 +320,9 @@ public class TurtleTool extends AbstractTurtleUpgrade {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to use a tool against a block instead.
|
||||
*
|
||||
* @param level The current level.
|
||||
* @param turtle The current turtle.
|
||||
* @param turtlePlayer The turtle player, already positioned and with a stack equipped.
|
||||
* @param stack The current tool's stack.
|
||||
* @param direction The direction this action occurs in.
|
||||
* @return Whether the tool was successfully used.
|
||||
* @see PlatformHelper#hasToolUsage(ItemStack)
|
||||
*/
|
||||
private boolean useTool(ServerLevel level, ITurtleAccess turtle, TurtlePlayer turtlePlayer, ItemStack stack, Direction direction) {
|
||||
var position = turtle.getPosition().relative(direction);
|
||||
// Allow digging one extra block below the turtle, as you can't till dirt/flatten grass if there's a block
|
||||
// above.
|
||||
if (direction == Direction.DOWN && level.isEmptyBlock(position)) position = position.relative(direction);
|
||||
|
||||
if (!level.isInWorldBounds(position) || level.isEmptyBlock(position) || turtlePlayer.isBlockProtected(level, position)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var hit = TurtlePlaceCommand.getHitResult(position, direction.getOpposite());
|
||||
var result = PlatformHelper.get().useOn(turtlePlayer.player(), stack, hit, x -> false);
|
||||
return result.consumesAction();
|
||||
}
|
||||
|
||||
private static boolean isTriviallyBreakable(BlockGetter reader, BlockPos pos, BlockState state) {
|
||||
return state.is(ComputerCraftTags.Blocks.TURTLE_ALWAYS_BREAKABLE)
|
||||
return
|
||||
state.is(ComputerCraftTags.Blocks.TURTLE_ALWAYS_BREAKABLE)
|
||||
// Allow breaking any "instabreak" block.
|
||||
|| state.getDestroySpeed(reader, pos) == 0;
|
||||
}
|
||||
|
@@ -17,8 +17,6 @@ import net.minecraft.util.GsonHelper;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public final class TurtleToolSerialiser implements TurtleUpgradeSerialiser<TurtleTool> {
|
||||
public static final TurtleToolSerialiser INSTANCE = new TurtleToolSerialiser();
|
||||
|
||||
@@ -46,8 +44,7 @@ public final class TurtleToolSerialiser implements TurtleUpgradeSerialiser<Turtl
|
||||
@Override
|
||||
public TurtleTool fromNetwork(ResourceLocation id, FriendlyByteBuf buffer) {
|
||||
var adjective = buffer.readUtf();
|
||||
var craftingItem = buffer.readById(RegistryWrappers.ITEMS);
|
||||
Objects.requireNonNull(craftingItem, "Unknown crafting item");
|
||||
var craftingItem = RegistryWrappers.readId(buffer, RegistryWrappers.ITEMS);
|
||||
var toolItem = buffer.readItem();
|
||||
// damageMultiplier and breakable aren't used by the client, but we need to construct the upgrade exactly
|
||||
// as otherwise syncing on an SP world will overwrite the (shared) upgrade registry with an invalid upgrade!
|
||||
@@ -62,7 +59,7 @@ public final class TurtleToolSerialiser implements TurtleUpgradeSerialiser<Turtl
|
||||
@Override
|
||||
public void toNetwork(FriendlyByteBuf buffer, TurtleTool upgrade) {
|
||||
buffer.writeUtf(upgrade.getUnlocalisedAdjective());
|
||||
buffer.writeId(RegistryWrappers.ITEMS, upgrade.getCraftingItem().getItem());
|
||||
RegistryWrappers.writeId(buffer, RegistryWrappers.ITEMS, upgrade.getCraftingItem().getItem());
|
||||
buffer.writeItem(upgrade.item);
|
||||
buffer.writeFloat(upgrade.damageMulitiplier);
|
||||
buffer.writeBoolean(upgrade.allowEnchantments);
|
||||
|
@@ -1,56 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
//
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package dan200.computercraft.shared.util;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.AbstractList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A list which prepends a single value to another list.
|
||||
*
|
||||
* @param <T> The type of item in the list.
|
||||
*/
|
||||
public final class ConsList<T> extends AbstractList<T> {
|
||||
private final T head;
|
||||
private final List<T> tail;
|
||||
|
||||
public ConsList(T head, List<T> tail) {
|
||||
this.head = head;
|
||||
this.tail = tail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T get(int index) {
|
||||
return index == 0 ? head : tail.get(index - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return 1 + tail.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<T> iterator() {
|
||||
return new Iterator<>() {
|
||||
private @Nullable Iterator<T> tailIterator;
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return tailIterator == null || tailIterator.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T next() {
|
||||
if (tailIterator != null) return tailIterator.next();
|
||||
|
||||
tailIterator = tail.iterator();
|
||||
return head;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@@ -33,7 +33,7 @@ public final class DropConsumer {
|
||||
dropConsumer = consumer;
|
||||
remainingDrops = new ArrayList<>();
|
||||
dropEntity = entity;
|
||||
dropWorld = entity.level;
|
||||
dropWorld = entity.level();
|
||||
dropBounds = new AABB(entity.blockPosition()).inflate(2, 2, 2);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public final class DropConsumer {
|
||||
|
||||
public static boolean onEntitySpawn(Entity entity) {
|
||||
// Capture any nearby item spawns
|
||||
if (dropWorld == entity.getLevel() && entity instanceof ItemEntity
|
||||
if (dropWorld == entity.level() && entity instanceof ItemEntity
|
||||
&& assertNonNull(dropBounds).contains(entity.position())) {
|
||||
handleDrops(((ItemEntity) entity).getItem());
|
||||
return true;
|
||||
|
@@ -90,6 +90,6 @@ public final class InventoryUtil {
|
||||
if (stack1.getItem() != stack2.getItem()) return false;
|
||||
if (stack1.getDamageValue() != stack2.getDamageValue()) return false;
|
||||
if (stack1.getCount() > stack1.getMaxStackSize()) return false;
|
||||
return ItemStack.tagMatches(stack1, stack2);
|
||||
return ItemStack.isSameItemSameTags(stack1, stack2);
|
||||
}
|
||||
}
|
||||
|
@@ -50,8 +50,6 @@ public final class RedstoneUtil {
|
||||
|
||||
var neighbourPos = pos.relative(side);
|
||||
world.neighborChanged(neighbourPos, block.getBlock(), pos);
|
||||
// We intentionally use updateNeighborsAt here instead of updateNeighborsAtExceptFromFacing, as computers can
|
||||
// both send and receive redstone, and so also need to be updated.
|
||||
world.updateNeighborsAt(neighbourPos, block.getBlock());
|
||||
world.updateNeighborsAtExceptFromFacing(neighbourPos, block.getBlock(), side.getOpposite());
|
||||
}
|
||||
}
|
||||
|
@@ -7,6 +7,7 @@ package dan200.computercraft.shared.util;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
@@ -37,6 +38,12 @@ public class Trie<K, V> {
|
||||
getChild(key).current = value;
|
||||
}
|
||||
|
||||
public Stream<V> children() {
|
||||
return children == null
|
||||
? Stream.empty()
|
||||
: children.values().stream().map(x -> x.current).filter(Objects::nonNull);
|
||||
}
|
||||
|
||||
public Stream<V> stream() {
|
||||
return Stream.concat(
|
||||
current == null ? Stream.empty() : Stream.of(current),
|
||||
|
@@ -35,7 +35,7 @@ public final class WorldUtil {
|
||||
|
||||
public static boolean isLiquidBlock(Level world, BlockPos pos) {
|
||||
if (!world.isInWorldBounds(pos)) return false;
|
||||
return world.getBlockState(pos).getMaterial().isLiquid();
|
||||
return world.getBlockState(pos).liquid();
|
||||
}
|
||||
|
||||
public static boolean isVecInside(VoxelShape shape, Vec3 vec) {
|
||||
|
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"argument.computercraft.argument_expected": "Očekáván argument",
|
||||
"argument.computercraft.computer.many_matching": "Pro '%s' se shoduje více počítačů (instance %s)",
|
||||
"argument.computercraft.computer.no_matching": "Pro '%s' se neshodují žádné počítače",
|
||||
"argument.computercraft.tracking_field.no_field": "Neznámé pole '%s'",
|
||||
"block.computercraft.cable": "Síťový kabel",
|
||||
"block.computercraft.computer_advanced": "Pokročilý počítač",
|
||||
"block.computercraft.computer_command": "Příkazový počítač",
|
||||
@@ -14,7 +12,6 @@
|
||||
"block.computercraft.speaker": "Reproduktor",
|
||||
"block.computercraft.turtle_advanced": "Pokročilý robot",
|
||||
"block.computercraft.turtle_advanced.upgraded": "Pokročilý %s robot",
|
||||
"block.computercraft.turtle_advanced.upgraded_twice": "Pokročilý %s %s robot",
|
||||
"block.computercraft.turtle_normal": "Robot",
|
||||
"block.computercraft.turtle_normal.upgraded": "%s robot",
|
||||
"block.computercraft.turtle_normal.upgraded_twice": "%s %s robot",
|
||||
@@ -24,103 +21,117 @@
|
||||
"block.computercraft.wireless_modem_normal": "Bezdrátový modem",
|
||||
"chat.computercraft.wired_modem.peripheral_connected": "Periferie \"%s\" připojena k sítí",
|
||||
"chat.computercraft.wired_modem.peripheral_disconnected": "Periferie \"%s\" odpojena od sítě",
|
||||
"commands.computercraft.desc": "Příkaz /computercraft dává různé ladící a správcovské nástroje pro ovládání a interakci s počítači.",
|
||||
"commands.computercraft.dump.action": "Ukázat více informací o tomto počítači",
|
||||
"commands.computercraft.dump.desc": "Ukáže stav všech počítačů nebo specifické informace o jednom počítači. Můžeš specifikovat ID počítačové instance (tř. 123), ID počítače (tř #123) nebo štítek (tř. \"@Můj počítač\").",
|
||||
"commands.computercraft.dump.open_path": "Ukázat soubory tohoto počítače",
|
||||
"commands.computercraft.dump.synopsis": "Ukázat stav počítačů.",
|
||||
"commands.computercraft.generic.additional_rows": "%d řádků navíc…",
|
||||
"commands.computercraft.generic.exception": "Neočekávaná chyba (%s)",
|
||||
"commands.computercraft.generic.no": "N",
|
||||
"commands.computercraft.generic.no_position": "<žádná pozice>",
|
||||
"commands.computercraft.generic.position": "%s, %s, %s",
|
||||
"commands.computercraft.generic.yes": "A",
|
||||
"commands.computercraft.help.desc": "Ukáže tuto pomocnou zprávu",
|
||||
"commands.computercraft.help.no_children": "%s nemá žádné podpříkazy",
|
||||
"commands.computercraft.help.no_command": "Neznámý příkaz '%s'",
|
||||
"commands.computercraft.help.synopsis": "Zaslat pomoc pro specifický příkaz",
|
||||
"commands.computercraft.queue.desc": "Poslat událost computer_command příkazovému počítači, procházející přes ostatní argumenty. Toto je většinou určeno pro tvůrce map, chovající se jako pro počítač více přátelská verze příkazu /trigger. Jakýkoliv hráč může spustit příkaz, což by ale bylo většinou uděláno přes událost kliknutím na textový komponent.",
|
||||
"commands.computercraft.queue.synopsis": "Poslat událost computer_command příkazovému počítači",
|
||||
"commands.computercraft.reload.desc": "Znovu načíst konfigurační soubor ComputerCraftu",
|
||||
"commands.computercraft.reload.done": "Konfigurace znovu načtena",
|
||||
"commands.computercraft.reload.synopsis": "Znovu načíst konfigurační soubor ComputerCraftu",
|
||||
"commands.computercraft.shutdown.desc": "Vypnout zapsané počítače nebo všechny pokud nejsou specifikovány. Můžeš specifikovat ID počítačové instance (tř. 123) ID počítače (tř. #123) nebo štítek (tř. \"@Můj počítač\").",
|
||||
"commands.computercraft.shutdown.done": "Vypnuto %s/%s počítačů",
|
||||
"commands.computercraft.shutdown.synopsis": "Vypne počítače na dálku.",
|
||||
"commands.computercraft.tp.not_player": "Nelze otevřít terminál pro nehráče",
|
||||
"commands.computercraft.tp.not_there": "Nelze najít počítač ve světě",
|
||||
"commands.computercraft.track.dump.no_timings": "Nejsou k dispozici žádná časování",
|
||||
"commands.computercraft.track.dump.synopsis": "Stáhnout nejnovější výsledky sledování",
|
||||
"commands.computercraft.track.start.synopsis": "Začít sledovat všechny počítače",
|
||||
"commands.computercraft.track.stop.action": "Klikni pro přestání sledování",
|
||||
"commands.computercraft.track.synopsis": "Sledovat časy spuštení počítačů.",
|
||||
"commands.computercraft.turn_on.done": "Zapnuto %s/%s počítačů",
|
||||
"commands.computercraft.view.action": "Ukázat tento počítač",
|
||||
"commands.computercraft.view.not_player": "Nelze otevřít terminál pro nehráče",
|
||||
"commands.computercraft.view.synopsis": "Ukázat terminál počítače.",
|
||||
"gui.computercraft.config.command_require_creative": "Příkazové počítače vyžadují tvořivý režim",
|
||||
"upgrade.computercraft.wireless_modem_advanced.adjective": "Endový",
|
||||
"upgrade.computercraft.wireless_modem_normal.adjective": "Bezdrátový",
|
||||
"upgrade.minecraft.crafting_table.adjective": "Tvořivý",
|
||||
"upgrade.minecraft.diamond_axe.adjective": "Kácející",
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Farmářský",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Těžební",
|
||||
"tracking_field.computercraft.avg": "%s (průměr)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Úlohy",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Vyhozené koprogramy",
|
||||
"tracking_field.computercraft.count": "%s (počet)",
|
||||
"tracking_field.computercraft.fs.name": "Operace souborového systému",
|
||||
"tracking_field.computercraft.http_download.name": "Stahování HTTP",
|
||||
"tracking_field.computercraft.http_requests.name": "Požadavky HTTP",
|
||||
"tracking_field.computercraft.http_upload.name": "Nahrávání HTTP",
|
||||
"tracking_field.computercraft.max": "%s (max)",
|
||||
"tracking_field.computercraft.peripheral.name": "Periferní volání",
|
||||
"tracking_field.computercraft.server_tasks.name": "Serverové úlohy",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Operace robotů",
|
||||
"tracking_field.computercraft.websocket_outgoing.name": "Odchozí websocket",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Kopací",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Bojový",
|
||||
"argument.computercraft.argument_expected": "Očekáván argument",
|
||||
"argument.computercraft.tracking_field.no_field": "Neznámé pole '%s'",
|
||||
"block.computercraft.turtle_advanced.upgraded_twice": "Pokročilý %s %s robot",
|
||||
"commands.computercraft.desc": "Příkaz /computercraft dává různé ladící a správcovské nástroje pro ovládání a interakci s počítači.",
|
||||
"commands.computercraft.dump.desc": "Ukáže stav všech počítačů nebo specifické informace o jednom počítači. Můžeš specifikovat ID počítačové instance (tř. 123), ID počítače (tř #123) nebo štítek (tř. \"@Můj počítač\").",
|
||||
"commands.computercraft.generic.no_position": "<žádná pozice>",
|
||||
"commands.computercraft.help.no_children": "%s nemá žádné podpříkazy",
|
||||
"commands.computercraft.queue.desc": "Poslat událost computer_command příkazovému počítači, procházející přes ostatní argumenty. Toto je většinou určeno pro tvůrce map, chovající se jako pro počítač více přátelská verze příkazu /trigger. Jakýkoliv hráč může spustit příkaz, což by ale bylo většinou uděláno přes událost kliknutím na textový komponent.",
|
||||
"commands.computercraft.synopsis": "Různé příkazy pro ovládání počítačů.",
|
||||
"commands.computercraft.tp.action": "Teleportovat se k počítači",
|
||||
"commands.computercraft.tp.desc": "Teleportovat se na místo počítače. Můžeš specifikovat ID počítačové instance (tř. 123) nebo ID počítače (tř. #123).",
|
||||
"commands.computercraft.tp.not_player": "Nelze otevřít terminál pro nehráče",
|
||||
"commands.computercraft.tp.not_there": "Nelze najít počítač ve světě",
|
||||
"commands.computercraft.tp.synopsis": "Teleportovat se ke specifickému počítači.",
|
||||
"commands.computercraft.track.desc": "Sledovat jak dlouho se počítače spustí, a také kolik událostí zpracují. Toto uvádí informace v podobné cestě jako /forge track a může být dobré pro diagnostiku lagu.",
|
||||
"commands.computercraft.track.dump.computer": "Počítač",
|
||||
"commands.computercraft.track.dump.desc": "Stáhnout nejnovější výsledky sledování počítačů.",
|
||||
"commands.computercraft.track.dump.no_timings": "Nejsou k dispozici žádná časování",
|
||||
"commands.computercraft.track.dump.synopsis": "Stáhnout nejnovější výsledky sledování",
|
||||
"upgrade.computercraft.speaker.adjective": "Hlučný",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Vytvořené koprogramy",
|
||||
"tracking_field.computercraft.websocket_incoming.name": "Přichozí websocket",
|
||||
"commands.computercraft.track.start.desc": "Začne sledovat spouštěcí časy všech počítačů a počty událostí. Toto vyhodí výsledky předchozích spuštení.",
|
||||
"commands.computercraft.track.start.stop": "Spusť %s pro zastavení sledování a ukázání výsledků",
|
||||
"commands.computercraft.track.start.synopsis": "Začít sledovat všechny počítače",
|
||||
"commands.computercraft.track.stop.action": "Klikni pro přestání sledování",
|
||||
"commands.computercraft.track.stop.desc": "Přestane sledovat všechny události a časy spuštení počítačů",
|
||||
"commands.computercraft.track.stop.not_enabled": "Nyní se nesledují žádné počítače",
|
||||
"commands.computercraft.track.stop.synopsis": "Přestat sledovat všechny počítače",
|
||||
"commands.computercraft.track.synopsis": "Sledovat časy spuštení počítačů.",
|
||||
"commands.computercraft.turn_on.desc": "Zapne počítače na seznamu. Můžeš specifikovat ID počítačové instance (tř. 123), ID počítače (tř. 123) nebo štítek (tř. \"@Můj počítač\").",
|
||||
"commands.computercraft.turn_on.done": "Zapnuto %s/%s počítačů",
|
||||
"commands.computercraft.turn_on.synopsis": "Zapnout počítače na dálku.",
|
||||
"commands.computercraft.view.action": "Ukázat tento počítač",
|
||||
"commands.computercraft.view.desc": "Otevře terminál počítače, umožnující dálkové ovládání počítače. Toto nedává přístup k inventářům robotů. Můžeš specifikovat ID počítačové instance (tř. 123) nebo ID počítače (tř. #123).",
|
||||
"commands.computercraft.view.not_player": "Nelze otevřít terminál pro nehráče",
|
||||
"commands.computercraft.view.synopsis": "Ukázat terminál počítače.",
|
||||
"gui.computercraft.config.command_require_creative": "Příkazové počítače vyžadují tvořivý režim",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Vyžadovat, aby hráči byli v tvořivém režimu a měli operátorská prává pro interakci\ns příkazovýmí počítači. Toto je základní chování pro vanilla Příkazové bloky.",
|
||||
"gui.computercraft.config.computer_space_limit": "Limit počítačového místa (v bytech)",
|
||||
"gui.computercraft.config.disable_lua51_features": "Vypnout Lua 5.1 funkce",
|
||||
"gui.computercraft.config.execution": "Spuštení",
|
||||
"gui.computercraft.config.execution.computer_threads": "Počítačová vlákna",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Serverový časový limit počítačových ticků",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Globální limit stahování",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Globální nahrávací limit",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Limit diskového místa pro počítače a roboty, v bytech.",
|
||||
"gui.computercraft.config.default_computer_settings": "Vychozí nastavení počítače",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Čárkami oddělený seznam základních systémových nastavení pro nastavení na nových počítačích.\nPříklad: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\nvypne všechno automatické vyplňování.",
|
||||
"gui.computercraft.config.disable_lua51_features": "Vypnout Lua 5.1 funkce",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Nastav toto na pravdivou hodnotu pro vypnutí Lua 5.1 funkcí které budou odstraněny v budoucí\naktualizaci. Dobré pro ověření kompatibilty tvých programů nyní a předem.",
|
||||
"gui.computercraft.config.disabled_generic_methods": "Vypnuté obecné metody",
|
||||
"gui.computercraft.config.execution": "Spuštení",
|
||||
"gui.computercraft.config.execution.computer_threads": "Počítačová vlákna",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Nastavit číslo vláken, na kterých můžou běžet počítače. Vyšší číslo znamená že\nvíce počítačů může běžet najednou, ale to může způsobit lag. Prosím měj na paměti že nejaké módy nemusí\nfungovat s počtem vláken vyšší než 1. Používej opatrně.\nHodnota: > 1",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Serverový časový limit počítačových ticků",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Ideální maximální v kterém počítač se může spustit na tick, v milisekundách.\nPoznámka, možná přejdeme přes tento limit protože tu nelze rozhodnout jak\ndlouho to bude trvat - toto se zaměřuje jako vrchní hranice průměrného času.\nRozsah: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Globální časový limit serverových ticků",
|
||||
"gui.computercraft.config.http.bandwidth": "Šířka pásma",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Počet bytů které můžou být staženy za sekundu. Toto je sdíleno mezi všemi počítači. (byty/s)\nHodnota: > 1",
|
||||
"gui.computercraft.config.http.enabled": "Zapnout HTTP API",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Maximální čas který může být využit pro spouštení úloh v jednom ticku,\nv milisekundách.\nPoznámka, možná přejdeme přes tento limit protože nelze rozhodnout jak\ndlouho to bude trvat - toto se zaměřuje jako horní hranice průměrného času.\nRozsah: > 1",
|
||||
"gui.computercraft.config.execution.tooltip": "Ovládá chování počítačového spuštení. Toto je většně určeno pro\nfine-tuning serverů, a obecně by nemělo být dotčeno.",
|
||||
"gui.computercraft.config.floppy_space_limit": "Limit místa disket (v bajtech)",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "Limit místa pro diskety, v bajtech.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Šířka pásma",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Globální limit stahování",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Počet bytů které můžou být staženy za sekundu. Toto je sdíleno mezi všemi počítači. (byty/s)\nHodnota: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Globální nahrávací limit",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Počet bytů které můžou být nahrány za sekundu. Toto je sdíleno mezi všemi počítači (bajty/s).\nRozsah: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.tooltip": "Omezuje šířku pásma použitou počítači.",
|
||||
"gui.computercraft.config.http.enabled": "Zapnout HTTP API",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Zapnout \"http\" API na počítačích. Vypnutí tohoto také vypne programy \"pastebin\" a \"wget\"\nna kterých záleží hodně uživatelům. Je doporučeno nechat toto zapnuté a použít\nmožnost konfigurace \"rules\" pro určení více jemné kontroly.",
|
||||
"gui.computercraft.config.http.max_requests": "Maximální souběžné požadavky",
|
||||
"gui.computercraft.config.http.max_requests.tooltip": "Počet HTTP požadavků které počítač může udělat v jedné chvíli. Požadavky navíc\nbudou zaslány do fronty, a poslány když běžící požadavky byly dokončeny. Nastav\nna 0 pro neomezeno.\nRozsah: > 0",
|
||||
"gui.computercraft.config.http.max_websockets": "Maximální souběžné websockety",
|
||||
"gui.computercraft.config.http.max_websockets.tooltip": "Počet websocketů které může mít počítač otevřené najednou: Nastav na 0 pro neomezeno.\nRozsah: > 1",
|
||||
"gui.computercraft.config.http.proxy.host": "Název hostitele",
|
||||
"gui.computercraft.config.http.proxy.host.tooltip": "Název hostitele nebo IP adresa proxy serveru.",
|
||||
"gui.computercraft.config.http.proxy.port": "Port",
|
||||
"gui.computercraft.config.http.proxy.port.tooltip": "Port proxy serveru.\nRozsah: 1 ~ 65536",
|
||||
"gui.computercraft.config.http.proxy.type": "Typ proxy",
|
||||
"gui.computercraft.config.http.proxy.type.tooltip": "Typ proxy k použití.\nPovolené hodnoty: HTTP, HTTPS, SOCKS4, SOCKS5",
|
||||
"gui.computercraft.config.http.rules": "Pravidla povolení/zakázání",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Seznam pravidel které ovládají chování \"http\" API pro specifické domény nebo\nIP adresy. Každé pravidlo je položka s 'hostem' pro shodování, a také série\nvlastností. Pravidla jsou hodnocena v řádech, což znamená že dřívejší pravidla přepíšou\npozdější.\nHost může být jméno domény (\"pastebin.com\") shoda (\"*.pastebin.com\") nebo\nnotace CIDR (\"127.0.0.0/8\").\nPokud nejsou pravidla, doména je blokována.",
|
||||
"gui.computercraft.config.http.tooltip": "Ovládá HTTP API",
|
||||
"gui.computercraft.config.http.websocket_enabled": "Zapnout websockety",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Zapnout použití HTTP websocketů. Toto vyžaduje možnost \"http_enable\" aby byla zapnuta.",
|
||||
"gui.computercraft.config.log_computer_errors": "Zapisovat počítačové chyby",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Zapisovat chyby hozené periferiemi a ostatními Lua objekty. Toto usnadňuje\nautorům módů ladění problémů, ale může způsobit spam zápisů když hráči\npoužívají problematické metody.",
|
||||
"gui.computercraft.config.maximum_open_files": "Maximální počet souborů otevřených na počítačích",
|
||||
"gui.computercraft.config.maximum_open_files.tooltip": "Nastavit kolik soborů může mít jeden počítač otevřených najednou. Nastav na 0 pro neomezeno.\nRozsah: > 0",
|
||||
"gui.computercraft.config.monitor_distance": "Dálka monitoru",
|
||||
"gui.computercraft.config.monitor_distance.tooltip": "Maximální dálka kde se budou monitory načítač. Toto je vychozí na standartní limit\ntile entit, ale může být prodloužen pokud chceš stavět větší monitory.\nRozsah: 16 ~ 1024",
|
||||
"gui.computercraft.config.monitor_renderer": "Monitorový renderer",
|
||||
"gui.computercraft.config.monitor_renderer.tooltip": "Renderer, který bude použit pro monitory. Obecně by toto mělo být nastaveno na \"nejlepší\" - pokud\nmonitory mají problémy s výkonem, možná budeš chtít experimentovat s alternativními\nrenderery.\nPovolené hodnoty: BEST, TBO, VBO",
|
||||
"gui.computercraft.config.peripheral": "Periferie",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled": "Zapnout periferii příkazových bloků",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled.tooltip": "Zapnout podporu periferie příkazových bloků",
|
||||
@@ -131,94 +142,80 @@
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm": "Dosah modemu (vysoká výška, špatné počasí)",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm.tooltip": "Dosah bezdrátových modemů v maximální výšce v bouřlivém počasí, v metrech.\nRozsah: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range": "Dosah modemu (vychozí)",
|
||||
"gui.computercraft.config.peripheral.modem_range.tooltip": "Dosah bezdrátových modemů v nízké výšce v jasném počasí, v metrech.\nRozsah: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm": "Dosah modemu (špatné počasí)",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm.tooltip": "Dosah bezdrátových modemů v nízké výšce v špatném počasí, v metrech.\nRozsah: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth": "šířka pásma monitorů",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth.tooltip": "Limit kolik monitorových dat může být posláno *za tick*. Poznámka:\n - Šířka pásma je měřena před kompresí, takže data zaslaná klientovi jsou\nmenší.\n - Toto ignoruje počet hráčů kterým je poslán packet. Aktualizování monitoru pro\njednoho hráče spotřebuje stejný limit šířky pásma jako posíláním 20.\n - Plně velký monitor posílá ~25 kb dat. Takže vychozí hodnota (1MB) dovoluje ~40\nmonitorům aby byly aktualizovány v jednom ticku.\nNastav na 0 pro vypnutí.\nRozsah: > 0",
|
||||
"gui.computercraft.config.peripheral.tooltip": "Různé možnosti o periferiích.",
|
||||
"gui.computercraft.config.term_sizes": "Velikosti terminálu",
|
||||
"gui.computercraft.config.term_sizes.computer": "Počítač",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Výška terminálu",
|
||||
"gui.computercraft.config.term_sizes.computer.height.tooltip": "Rozsash: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "Velikost počítačového terminálu.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Šířka terminálu",
|
||||
"gui.computercraft.config.term_sizes.computer.width.tooltip": "Rozsah: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Monitor",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Maximální výška monitoru",
|
||||
"gui.computercraft.config.term_sizes.monitor.height.tooltip": "Rozsah: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Maximální velikost monitorů (v blocích).",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Maximální šířka monitoru",
|
||||
"gui.computercraft.config.term_sizes.monitor.width.tooltip": "Rozsah: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer": "Kapesní počítač",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Výška terminálu",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Rozsah: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.tooltip": "Velikost terminálu kapesního počítače.",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Šířka terminálu",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width.tooltip": "Rozsah: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.tooltip": "Nastav velikost terminálu různých počítačů.\nVětší terminály vyžadují větší šířku pásma, takže používej opatrně.",
|
||||
"gui.computercraft.config.turtle": "Roboti",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit": "Limit paliva pokročilého robota",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit.tooltip": "Limit paliva pro pokročilé roboty.\nRozsah: > 0",
|
||||
"gui.computercraft.config.turtle.can_push": "Roboti můžou strkat stvoření",
|
||||
"gui.computercraft.config.turtle.can_push.tooltip": "Jestli nastaveno na pravdivou hodnotu, Roboti budou odstrkávat stvoření z cesty místo zastavení pokud\nje tu místo.",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Zapnout palivo",
|
||||
"gui.computercraft.config.turtle.need_fuel.tooltip": "Nastaví jestli roboti potřebují palivo pro pohyb.",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit": "Limit paliva robotů",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit.tooltip": "Limit paliva pro roboty.\nRozsah: > 0",
|
||||
"gui.computercraft.config.turtle.tooltip": "Různé možnosti o robotech.",
|
||||
"gui.computercraft.config.upload_max_size": "Limit velikosti nahrávaného souboru (v bajtech)",
|
||||
"gui.computercraft.config.upload_nag_delay": "Nahrání zpoždění nag",
|
||||
"gui.computercraft.config.upload_nag_delay.tooltip": "Zpoždění v sekundách po kterém oznámíme o nezpracovaných importech. Nastav na 0 pro vypnutí.\nRozsah: 0 ~ 60",
|
||||
"gui.computercraft.pocket_computer_overlay": "Kapesní počítač otevřen. Zmáčkni ESC pro uzavření.",
|
||||
"gui.computercraft.terminal": "Počítačový terminál",
|
||||
"gui.computercraft.tooltip.computer_id": "ID počítače: %s",
|
||||
"gui.computercraft.tooltip.copy": "Kopírovat do schránky",
|
||||
"gui.computercraft.tooltip.disk_id": "ID disku: %s",
|
||||
"gui.computercraft.tooltip.terminate": "Zastavit nyní běžící kód",
|
||||
"gui.computercraft.tooltip.terminate.key": "Podrž Ctrl+T",
|
||||
"gui.computercraft.tooltip.turn_off": "Vypnout tento počítač",
|
||||
"gui.computercraft.tooltip.turn_off.key": "Zmáčkni Ctrl+S",
|
||||
"gui.computercraft.tooltip.turn_on": "Zapnout teno počítač",
|
||||
"gui.computercraft.upload.failed": "Nahrávání se nezdařilo",
|
||||
"gui.computercraft.upload.failed.computer_off": "Před nahráním souborů musíš vypnout počítač.",
|
||||
"gui.computercraft.upload.failed.corrupted": "Soubory byly porušeny při nahrávání. Prosím zkus to znovu.",
|
||||
"gui.computercraft.upload.failed.generic": "Nahrávání souborů se nezdařilo (%s)",
|
||||
"gui.computercraft.upload.failed.name_too_long": "Jména souborů pro nahrání jsou příliš dlouhá.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Nelze nahrát tolik souborů.",
|
||||
"gui.computercraft.upload.failed.too_much": "Tvoje soubory jsou příliš velké pro nahrání.",
|
||||
"gui.computercraft.upload.no_response": "Přenos souborů",
|
||||
"gui.computercraft.upload.no_response.msg": "Tvůj počítač nepoužil tvé přenesené soubory. Budeš muset spustit program %s a zkusit to znovu.",
|
||||
"item.computercraft.disk": "Disketa",
|
||||
"item.computercraft.pocket_computer_advanced": "Pokročilý kapesní počítač",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "Pokročilý %s kapesní počítač",
|
||||
"item.computercraft.pocket_computer_normal": "Kapesní počítač",
|
||||
"item.computercraft.pocket_computer_normal.upgraded": "%s kapesní počítač",
|
||||
"item.computercraft.printed_book": "Tisknutá kniha",
|
||||
"item.computercraft.printed_page": "Tisknutá stránka",
|
||||
"item.computercraft.printed_pages": "Tisknuté stránky",
|
||||
"item.computercraft.treasure_disk": "Disketa",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Zapisovat chyby hozené periferiemi a ostatními Lua objekty. Toto usnadňuje\nautorům módů ladění problémů, ale může způsobit spam zápisů když hráči\npoužívají problematické metody.",
|
||||
"gui.computercraft.config.monitor_distance": "Dálka monitoru",
|
||||
"gui.computercraft.config.monitor_distance.tooltip": "Maximální dálka kde se budou monitory načítač. Toto je vychozí na standartní limit\ntile entit, ale může být prodloužen pokud chceš stavět větší monitory.\nRozsah: 16 ~ 1024",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Seznam pravidel které ovládají chování \"http\" API pro specifické domény nebo\nIP adresy. Každé pravidlo je položka s 'hostem' pro shodování, a také série\nvlastností. Pravidla jsou hodnocena v řádech, což znamená že dřívejší pravidla přepíšou\npozdější.\nHost může být jméno domény (\"pastebin.com\") shoda (\"*.pastebin.com\") nebo\nnotace CIDR (\"127.0.0.0/8\").\nPokud nejsou pravidla, doména je blokována.",
|
||||
"gui.computercraft.config.monitor_renderer.tooltip": "Renderer, který bude použit pro monitory. Obecně by toto mělo být nastaveno na \"nejlepší\" - pokud\nmonitory mají problémy s výkonem, možná budeš chtít experimentovat s alternativními\nrenderery.\nPovolené hodnoty: BEST, TBO, VBO",
|
||||
"gui.computercraft.config.term_sizes": "Velikosti terminálu",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Šířka terminálu",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Maximální velikost monitorů (v blocích).",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Rozsah: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.tooltip": "Nastav velikost terminálu různých počítačů.\nVětší terminály vyžadují větší šířku pásma, takže používej opatrně.",
|
||||
"gui.computercraft.config.turtle.can_push": "Roboti můžou strkat stvoření",
|
||||
"gui.computercraft.config.turtle.can_push.tooltip": "Jestli nastaveno na pravdivou hodnotu, Roboti budou odstrkávat stvoření z cesty místo zastavení pokud\nje tu místo.",
|
||||
"gui.computercraft.config.peripheral.modem_range.tooltip": "Dosah bezdrátových modemů v nízké výšce v jasném počasí, v metrech.\nRozsah: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth.tooltip": "Limit kolik monitorových dat může být posláno *za tick*. Poznámka:\n - Šířka pásma je měřena před kompresí, takže data zaslaná klientovi jsou\nmenší.\n - Toto ignoruje počet hráčů kterým je poslán packet. Aktualizování monitoru pro\njednoho hráče spotřebuje stejný limit šířky pásma jako posíláním 20.\n - Plně velký monitor posílá ~25 kb dat. Takže vychozí hodnota (1MB) dovoluje ~40\nmonitorům aby byly aktualizovány v jednom ticku.\nNastav na 0 pro vypnutí.\nRozsah: > 0",
|
||||
"gui.computercraft.config.upload_nag_delay.tooltip": "Zpoždění v sekundách po kterém oznámíme o nezpracovaných importech. Nastav na 0 pro vypnutí.\nRozsah: 0 ~ 60",
|
||||
"gui.computercraft.terminal": "Počítačový terminál",
|
||||
"gui.computercraft.tooltip.turn_off": "Vypnout tento počítač",
|
||||
"gui.computercraft.upload.failed.computer_off": "Před nahráním souborů musíš vypnout počítač.",
|
||||
"gui.computercraft.upload.failed.too_much": "Tvoje soubory jsou příliš velké pro nahrání.",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "Pokročilý %s kapesní počítač",
|
||||
"item.computercraft.printed_book": "Tisknutá kniha",
|
||||
"item.computercraft.printed_page": "Tisknutá stránka",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.avg": "%s (průměr)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Úlohy",
|
||||
"tracking_field.computercraft.count": "%s (počet)",
|
||||
"tracking_field.computercraft.fs.name": "Operace souborového systému",
|
||||
"tracking_field.computercraft.http_download.name": "Stahování HTTP",
|
||||
"tracking_field.computercraft.http_requests.name": "Požadavky HTTP",
|
||||
"tracking_field.computercraft.http_upload.name": "Nahrávání HTTP",
|
||||
"tracking_field.computercraft.max": "%s (max)",
|
||||
"tracking_field.computercraft.peripheral.name": "Periferní volání",
|
||||
"tracking_field.computercraft.server_tasks.name": "Serverové úlohy",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Operace robotů",
|
||||
"tracking_field.computercraft.websocket_incoming.name": "Přichozí websocket",
|
||||
"tracking_field.computercraft.websocket_outgoing.name": "Odchozí websocket",
|
||||
"upgrade.computercraft.speaker.adjective": "Hlučný",
|
||||
"upgrade.computercraft.wireless_modem_advanced.adjective": "Endový",
|
||||
"upgrade.computercraft.wireless_modem_normal.adjective": "Bezdrátový",
|
||||
"upgrade.minecraft.crafting_table.adjective": "Tvořivý",
|
||||
"upgrade.minecraft.diamond_axe.adjective": "Kácející",
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Farmářský",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Těžební",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Kopací",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Bojový"
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Ideální maximální v kterém počítač se může spustit na tick, v milisekundách.\nPoznámka, možná přejdeme přes tento limit protože tu nelze rozhodnout jak\ndlouho to bude trvat - toto se zaměřuje jako vrchní hranice průměrného času.\nRozsah: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Počet bytů které můžou být nahrány za sekundu. Toto je sdíleno mezi všemi počítači (bajty/s).\nRozsah: > 1",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Zapnout \"http\" API na počítačích. Toto také vypne programy \"pastebin\" a \"wget\"\nna kterých záleží hodně uživatelům. Je doporučeno nechat toto zapnuté a použít\nmožnost konfigurace \"rules\" pro určení více jemné kontroly.",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Zapnout použití HTTP websocketů. Toto vyžaduje možnost \"http_enable\" aby byla zapnuta."
|
||||
}
|
||||
|
@@ -40,6 +40,9 @@
|
||||
"commands.computercraft.help.synopsis": "Zeigt die Hilfe für den angegebenen Befehl",
|
||||
"commands.computercraft.queue.desc": "Sendet ein computer_command Event zusammen mit optionalen Argumenten an einen Befehlscomputer. Dieser Befehl wurde als eine Computerfreundliche Version von /trigger für Mapdesigner designed. Jeder Spieler kann diesen Befehl ausführen, weshalb er sich perfekt für ein Klickevent von z.B. Schildern oder Büchern eignet.",
|
||||
"commands.computercraft.queue.synopsis": "Sendet ein computer_command Event an einen Befehlscomputer",
|
||||
"commands.computercraft.reload.desc": "Liest die Konfigurationsdatei von ComputerCraft neu ein",
|
||||
"commands.computercraft.reload.done": "Die Konfigurationsdatei wurde erfolgreich neu eingelesen",
|
||||
"commands.computercraft.reload.synopsis": "Liest die Konfigurationsdatei von ComputerCraft neu ein",
|
||||
"commands.computercraft.shutdown.desc": "Fährt die angegebenen Computer herunter. Falls keine Computer angegeben sind, werden alle heruntergefahren. Der Computer kann entweder über seine Instanz ID (z.B. 123), seine Computer ID (z.B. #123) oder seinen Namen (z.B. \"@Mein Computer\") angegeben werden.",
|
||||
"commands.computercraft.shutdown.done": "Fährt die Computer %s/%s herunter",
|
||||
"commands.computercraft.shutdown.synopsis": "Fährt den Computer aus der Ferne herunter.",
|
||||
@@ -69,20 +72,12 @@
|
||||
"commands.computercraft.view.desc": "Zeigt das Terminal eines Computers. Dies ermöglicht, den Computer aus der Ferne zu steuern. Ein Zugriff auf das Inventar eines Turtles ist dadurch allerdings nicht möglich. Der Computer kann entweder über seine Instanz ID (z.B. 123), seine Computer ID (z.B. #123) oder seinen Namen (z.B. \"@Mein Computer\") angegeben werden.",
|
||||
"commands.computercraft.view.not_player": "Konnte Terminal für Nicht-Spieler nicht öffnen",
|
||||
"commands.computercraft.view.synopsis": "Zeigt das Terminal eines Computers.",
|
||||
"gui.computercraft.config.command_require_creative": "Kommando-Computer benötigen den Kreativ-Modus",
|
||||
"gui.computercraft.config.computer_space_limit": "Speicherplatz von Computern (Bytes)",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Das Speicherplatzlimit für Computer und Turtles in Bytes.",
|
||||
"gui.computercraft.config.default_computer_settings": "Computer-Standardeinstellungen",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "eine mit Komma separierte Liste an standardmäßige Systemeinstellungen für neuen Computern.\nBeispiel: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\nwürde jegliche Autovervollständigung deaktivieren.",
|
||||
"gui.computercraft.config.disable_lua51_features": "Lua 5.1-Funktionen deaktivieren",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Beim aktivieren werden die Lua 5.1 Funktionieren deaktiviert, die in zukünftigen\nUpdates sowieso entfernt werden. Auf dieser Weise kann vorwärts Kompatibilität für Programme sichergestellt werden.",
|
||||
"gui.computercraft.config.disabled_generic_methods": "Generische Methoden deaktiviert.",
|
||||
"gui.computercraft.config.disabled_generic_methods.tooltip": "Eine Liste an generischen Methoden oder Methodenquellen zum deaktivieren.\nGenerische Methoden sind Methoden die zu einem block/block entity hinzugefügt werden, insofern kein expliziter Peripheral Provider\ngefunden wurde. Mitbetroffen sind Inventarmethoden (d.h. inventory.getItemDetail,\ninventory.pushItems) und, wenn in Forge gespielt wird, die fluid_storage und energy_storage\nMethoden.\nMethoden in dieser Liste können entweder Gruppen von Methoden (wie computercraft:inventory)\noder einzelne Methoden (wie computercraft:inventory#pushItems) sein.\n",
|
||||
"gui.computercraft.config.execution": "Ausführung",
|
||||
"gui.computercraft.config.execution.computer_threads": "Computer Threads",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Setzt die Anzahl an Hintergrundprozessen fest, auf denen Computer laufen können. Eine hohe Nummer heißt,\ndass mehrere Computer zur selben Zeit laufen können, jedoch aber auch ggf. mehr Verzögerungen verursachen. Bitte beachte, dass manche mods\nnicht mit einer Anzahl an Hintergrundprozessen laufen, die höher als 1 ist. Benutze also mit bedacht.\nBereich: > 1",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Computer Servertick Zeitlimit",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Die ideale maximale Zeit, in der ein Computer laufen kann im innerhalb von einem tick in Millisekunden.\nBeachte, dass wir wahrscheinlich über diesen Limit gehen werden, da es unmöglich ist zu bestimmen,\nwie lange ein Computer brauchen wird. Dies wird also die höhere Grenze der durchschnittlichen Zeit darstellen.\nBereich: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Globales Servertick Zeitlimit",
|
||||
"gui.computercraft.config.floppy_space_limit": "Speicherplatz von Disketten (Bytes)",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
@@ -117,6 +112,8 @@
|
||||
"item.computercraft.printed_pages": "Gedruckte Seiten",
|
||||
"item.computercraft.treasure_disk": "Diskette",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Koroutinen erstellt",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Koroutinen gelöscht",
|
||||
"tracking_field.computercraft.fs.name": "Dateisystem Operationen",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP Download",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP Upload",
|
||||
|
@@ -1,6 +1,4 @@
|
||||
{
|
||||
"argument.computercraft.argument_expected": "Argumento esperado",
|
||||
"argument.computercraft.computer.many_matching": "Varias computadoras que coinciden con ' %s' (instancias %s)",
|
||||
"block.computercraft.cable": "Cable de red",
|
||||
"block.computercraft.computer_advanced": "Ordenador avanzado",
|
||||
"block.computercraft.computer_command": "Ordenador de Comandos",
|
||||
@@ -17,20 +15,10 @@
|
||||
"block.computercraft.turtle_normal.upgraded": "Tortuga %s",
|
||||
"block.computercraft.turtle_normal.upgraded_twice": "Tortuga %s %s",
|
||||
"block.computercraft.wired_modem": "Módem cableado",
|
||||
"block.computercraft.wired_modem_full": "Módem con cable",
|
||||
"block.computercraft.wireless_modem_advanced": "Módem de Ender",
|
||||
"block.computercraft.wireless_modem_normal": "Módem sin cables",
|
||||
"chat.computercraft.wired_modem.peripheral_connected": "El periférico \"%s\" se conectó a la red",
|
||||
"chat.computercraft.wired_modem.peripheral_disconnected": "El periférico \"%s\" se desconectó de la red",
|
||||
"commands.computercraft.generic.additional_rows": "%d filas adicionales…",
|
||||
"commands.computercraft.generic.no": "N",
|
||||
"commands.computercraft.generic.no_position": "<sin pos>",
|
||||
"commands.computercraft.generic.position": "%s, %s, %s",
|
||||
"commands.computercraft.generic.yes": "Y",
|
||||
"commands.computercraft.help.desc": "Muestra este mensaje de ayuda",
|
||||
"commands.computercraft.help.no_command": "Sin comando '%s'",
|
||||
"commands.computercraft.shutdown.done": "Apague %s/%s computadoras",
|
||||
"commands.computercraft.shutdown.synopsis": "Apague las computadoras de forma remota.",
|
||||
"gui.computercraft.config.computer_space_limit": "Límite de memoria de ordenadores (en bytes)",
|
||||
"gui.computercraft.config.default_computer_settings": "Configuración de Ordenador por defecto",
|
||||
"gui.computercraft.config.disable_lua51_features": "Deshabilitar funciones de Lua 5.1",
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "Fournit de l'aide pour une commande spécifique",
|
||||
"commands.computercraft.queue.desc": "Envoie un événement computer_command à un ordinateur de commande, en passant les éventuels arguments additionnels. Ceci est principalement conçu pour les map makers, imitant la commande /trigger, pour une utilisation avec les ordinateurs. N'importe quel joueur peut exécuter cette commande, qui sera exécutée le plus souvent avec un événement de clic sur du texte.",
|
||||
"commands.computercraft.queue.synopsis": "Envoyer un événement computer_command à un ordinateur de commande",
|
||||
"commands.computercraft.reload.desc": "Actualise le fichier de configuration de ComputerCraft",
|
||||
"commands.computercraft.reload.done": "Configuration actualisée",
|
||||
"commands.computercraft.reload.synopsis": "Actualiser le fichier de configuration de ComputerCraft",
|
||||
"commands.computercraft.shutdown.desc": "Éteint les ordinateurs dans la liste ou tous, si aucun n'est spécifié dans cette liste. Vous pouvez spécifier l'identifiant d'instance (ex. 123), l'identifiant d'ordinateur (ex. #123) ou son nom (ex. \"@Mon Ordinateur\").",
|
||||
"commands.computercraft.shutdown.done": "%s/%s ordinateurs arrêté",
|
||||
"commands.computercraft.shutdown.synopsis": "Éteindre des ordinateurs à distance.",
|
||||
@@ -70,111 +73,23 @@
|
||||
"commands.computercraft.view.desc": "Ouvre le terminal d'un ordinateur, autorisant le contrôle à distance. Ceci ne permet pas d'accéder à l'inventaire des tortues. Vous pouvez spécifier l'identifiant d'instance (ex. 123) ou l'identifiant d'ordinateur (ex. #123).",
|
||||
"commands.computercraft.view.not_player": "Impossible d'ouvrir un terminal pour un non-joueur",
|
||||
"commands.computercraft.view.synopsis": "Visualiser le terminal de cet ordinateur.",
|
||||
"gui.computercraft.config.command_require_creative": "Les ordinateurs de commande requiert d'être en mode créatif",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Exiger que les joueurs soient en mode créatif et soient opés pour interagir avec des\nordinateurs de commande. C'est le comportement par défaut des blocs de commande vanilla.",
|
||||
"gui.computercraft.config.computer_space_limit": "Espace disque d'un Ordinateur (octets)",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "La limite d'espace du disque pour les ordinateurs et les tortues, en octets.",
|
||||
"gui.computercraft.config.default_computer_settings": "Configuration d'Ordinateur par défaut",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Une liste séparée par des virgules des paramètres système par défaut à définir sur les nouveaux ordinateurs.\nExemple : \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\ndésactivera toute saisie semi-automatique.",
|
||||
"gui.computercraft.config.disable_lua51_features": "Désactiver les particularités de Lua 5.1",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Définir sur true pour désactiver les fonctions Lua 5.1 qui seront supprimées dans une future mise à jour.\nUtile pour assurer la compatibilité ascendante de vos programmes actuels.",
|
||||
"gui.computercraft.config.disabled_generic_methods": "Méthodes génériques désactivées",
|
||||
"gui.computercraft.config.execution": "Exécution",
|
||||
"gui.computercraft.config.execution.computer_threads": "Threads d'ordinateur",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Définissez le nombre de threads sur lesquels les ordinateurs peuvent s'exécuter. Un nombre plus élevé signifie\nque plus d'ordinateurs peuvent fonctionner à la fois, mais peut induire un décalage. Veuillez noter que\ncertains mods peuvent ne pas fonctionner avec un nombre de threads supérieur à 1. À utiliser avec prudence.\nPlage : > 1",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Tick serveur, limite de temps d'ordinateur",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "La durée maximale idéale pendant laquelle un ordinateur peut s'exécuter en un tick, en millisecondes.\nNotez que nous dépasserons très probablement cette limite, car il n'y a aucun moyen de savoir \ncombien de temps cela prendra - cela vise à être la limite supérieure du temps moyen.\nPlage : > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Tick serveur, limite de temps globale",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Le temps maximum pouvant être consacré à l'exécution de tâches en un seul tick, en\nmillisecondes.\nNotez que nous dépasserons très probablement cette limite, car il n'y a aucun moyen de savoir\ncombien de temps cela prendra - cela vise à être la limite supérieure du temps moyen.\nPlage : > 1",
|
||||
"gui.computercraft.config.execution.tooltip": "Contrôle le comportement d'exécution des ordinateurs. Ceci est en grande partie\ndestiné à peaufiner les serveurs et ne devrait généralement pas avoir besoin d'être touché.",
|
||||
"gui.computercraft.config.floppy_space_limit": "Espace disque d'une Disquette (octets)",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "La limite d'espace disque pour les disquettes, en octets.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Bande passante",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Limite de téléchargement globale",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Le nombre d'octets qui peuvent être téléchargés en une seconde. Ceci est partagé sur tous les ordinateurs. (octets/s).\nPlage : > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Limite de téléversement globale",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Le nombre d'octets qui peuvent être téléversé en une seconde. Ceci est partagé sur tous les ordinateurs. (octets/s).\nPlage : > 1",
|
||||
"gui.computercraft.config.http.bandwidth.tooltip": "Limite la bande passante utilisée par les ordinateurs.",
|
||||
"gui.computercraft.config.http.enabled": "Permettre l'API HTTP",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Active l'API \"http\" sur les ordinateurs. Cela désactive également les programmes \"pastebin\" et \"wget\",\nsur lesquels de nombreux utilisateurs comptent. Il est recommandé de laisser cette option activée et\nd'utiliser l'option de configuration \"rules\" pour imposer un contrôle plus précis.",
|
||||
"gui.computercraft.config.http.max_requests": "Maximum de requêtes simultanées",
|
||||
"gui.computercraft.config.http.max_requests.tooltip": "Le nombre de requêtes http qu'un ordinateur peut effectuer en même temps.\nLes demandes supplémentaires seront mises en file d'attente et envoyées lorsque\nles demandes en cours seront terminées. Mettre à 0 pour illimité.\nPlage : > 0",
|
||||
"gui.computercraft.config.http.max_websockets": "Maximum de websockets en simultané",
|
||||
"gui.computercraft.config.http.max_websockets.tooltip": "Le nombre de websockets qu'un ordinateur peut avoir d'ouverts en même temps. Mettre à 0 pour illimité.\nPlage : > 1",
|
||||
"gui.computercraft.config.http.proxy": "Proxy",
|
||||
"gui.computercraft.config.http.proxy.host": "Nom d'hôte",
|
||||
"gui.computercraft.config.http.proxy.host.tooltip": "Le nom d'hôte ou l'adresse IP du serveur proxy.",
|
||||
"gui.computercraft.config.http.proxy.port": "Port",
|
||||
"gui.computercraft.config.http.proxy.port.tooltip": "Le port du serveur proxy.\nPlage : 1 ~ 65536",
|
||||
"gui.computercraft.config.http.proxy.tooltip": "Tunnelise les requêtes HTTP et websocket via un serveur proxy. Affecte uniquement\nles règles HTTP avec \"use_proxy\" défini sur true (désactivé par défaut).\nSi l'authentification est requise pour le proxy, créez un fichier \"computercraft-proxy.pw\"\ndans le même dossier que \"computercraft-server.toml\", contenant le\nnom d'utilisateur et mot de passe séparés par deux-points, par ex. \"monutilisateur:monmotdepasse\". Pour\nProxy SOCKS4, seul le nom d'utilisateur est requis.",
|
||||
"gui.computercraft.config.http.proxy.type": "Type de proxy",
|
||||
"gui.computercraft.config.http.proxy.type.tooltip": "Le type de proxy à utiliser.\nValeurs autorisées : HTTP, HTTPS, SOCKS4, SOCKS5",
|
||||
"gui.computercraft.config.http.rules": "Règles d'autorisation/refus",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Une liste de règles qui contrôlent le comportement de l'API \"http\" pour des domaines\nou des IP spécifiques. Chaque règle est un élément avec un 'hôte' à comparer et une série\nde propriétés. Les règles sont évaluées dans l'ordre, ce qui signifie que les règles antérieures\nremplacent les suivantes.\nL'hôte peut être un nom de domaine (\"pastebin.com\"), un astérisque (\"*.pastebin.com\") ou\nune notation CIDR (\"127.0.0.0/8\").\nS'il n'y a pas de règles, le domaine est bloqué.",
|
||||
"gui.computercraft.config.http.tooltip": "Contrôle l'API HTTP",
|
||||
"gui.computercraft.config.http.websocket_enabled": "Active les websockets",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Active l'utilisation des websockets http. Cela nécessite que l'option \"http_enable\" soit également activée.",
|
||||
"gui.computercraft.config.log_computer_errors": "Journal d'erreur périphériques",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Enregistre les exceptions levées par les périphériques et autres objets Lua. Cela permet\naux créateurs de mods de débugger plus facilement les problèmes, mais peut entraîner\nun spam de logs si les joueurs utilisent des fonctions buggées.",
|
||||
"gui.computercraft.config.maximum_open_files": "Maximum de fichier ouvert par Ordinateur",
|
||||
"gui.computercraft.config.maximum_open_files.tooltip": "Défini le nombre de fichiers qu'un ordinateur peut ouvrir en même temps. Mettre à 0 pour illimité.\nPlage : > 0",
|
||||
"gui.computercraft.config.monitor_distance": "Distance du moniteur",
|
||||
"gui.computercraft.config.monitor_distance.tooltip": "La distance maximale à laquelle les écrans de moniteurs seront rendus. On utilise par défaut la\n'tile entity limit' de base, mais elle peut être augmentée si vous souhaitez créer des moniteurs plus grands.\nPlage : 16 ~ 1024",
|
||||
"gui.computercraft.config.monitor_renderer": "Moteur de rendu du Moniteur",
|
||||
"gui.computercraft.config.monitor_renderer.tooltip": "Le moteur de rendu à utiliser pour les moniteurs. Généralement, cela devrait être maintenu au \"meilleur\" - si\nles moniteurs ont des problèmes de performances, vous souhaiterez peut-être expérimenter avec des\nmoteurs de rendu alternatifs.\nValeurs autorisées : BEST, TBO, VBO",
|
||||
"gui.computercraft.config.peripheral": "Périphériques",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled": "Permettre l'accès d'un Bloc de Commande par périphérique",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled.tooltip": "Active la prise en charge des périphériques pour le bloc de commande",
|
||||
"gui.computercraft.config.peripheral.max_notes_per_tick": "Maximum de notes simultanées jouées par Ordinateur",
|
||||
"gui.computercraft.config.peripheral.max_notes_per_tick.tooltip": "Nombre maximum de notes qu'un haut-parleur peut jouer à la fois.\nPlage : > 1",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range": "Portée d'un Modem (en haute altitude)",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range.tooltip": "La portée des modems sans fil à l'altitude maximale par temps dégagé, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm": "Portée d'un Modem (en haute altitude, par mauvais temps)",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm.tooltip": "La portée des modems sans fil à l'altitude maximale par temps orageux, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range": "Portée d'un Modem (par défaut)",
|
||||
"gui.computercraft.config.peripheral.modem_range.tooltip": "La portée des modems sans fil à basse altitude par temps dégagé, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm": "Portée d'un Modem (par mauvais temps)",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm.tooltip": "La portée des modems sans fil à basse altitude par temps orageux, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth": "Bande-passante du moniteur",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth.tooltip": "La limite de la quantité de données du moniteur pouvant être envoyées *par tick*. Note :\n - La bande passante est mesurée avant la compression, donc les données envoyées\n au client sont plus petites.\n - Cela ignore le nombre de joueurs auxquels un paquet est envoyé. La mise à jour d'un\n moniteur pour un joueur consomme la même limite de bande passante que l'envoi à 20.\n - Un moniteur de taille normale envoie ~25ko de données. Ainsi, la valeur par défaut (1Mo) permet \n à environ 40 moniteurs d'être mis à jour en un seul tick.\nMettre à 0 pour désactiver.\nPlage : > 0",
|
||||
"gui.computercraft.config.peripheral.tooltip": "Diverses options relatives aux périphériques.",
|
||||
"gui.computercraft.config.term_sizes": "Tailles de terminal",
|
||||
"gui.computercraft.config.term_sizes.computer": "Ordinateur",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Hauteur du terminal",
|
||||
"gui.computercraft.config.term_sizes.computer.height.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "Taille du terminal des ordinateurs.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Largeur du terminal",
|
||||
"gui.computercraft.config.term_sizes.computer.width.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Moniteur",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Hauteur maximale du moniteur",
|
||||
"gui.computercraft.config.term_sizes.monitor.height.tooltip": "Plage : 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Taille maximale des moniteurs (en blocs).",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Largeur maximale du moniteur",
|
||||
"gui.computercraft.config.term_sizes.monitor.width.tooltip": "Plage : 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer": "Ordinateur de poche",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Hauteur du terminal",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.tooltip": "Taille du terminal des ordinateurs de poche.",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Largeur du terminal",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.tooltip": "Configure la taille des différents terminaux de l'ordinateur.\nLes terminaux plus grands nécessitent plus de bande passante, réglez donc avec précaution.",
|
||||
"gui.computercraft.config.turtle": "Tortues",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit": "Limite de carburant par Tortue Avancée",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit.tooltip": "La limite de carburant pour les Tortues Avancées.\nPlage : > 0",
|
||||
"gui.computercraft.config.turtle.can_push": "Les Tortues peuvent pousser les entitées",
|
||||
"gui.computercraft.config.turtle.can_push.tooltip": "Si défini sur true, au lieu de s'arrêter, les tortues pousseront les entités hors du chemin si\nil y a de la place pour le faire.",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Activer la nécessité de carburant au mouvement des Tortues",
|
||||
"gui.computercraft.config.turtle.need_fuel.tooltip": "Défini si les tortues ont besoin de carburant pour se déplacer.",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit": "Limite de carburant par Tortue",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit.tooltip": "La limite de carburant pour les Tortues.\nPlage : > 0",
|
||||
"gui.computercraft.config.turtle.tooltip": "Diverses options relatives aux tortues.",
|
||||
"gui.computercraft.config.upload_max_size": "Taille limite de téléversement de fichiers (octets)",
|
||||
"gui.computercraft.config.upload_max_size.tooltip": "La taille limite de téléversement de fichier, en octets. Doit être compris entre 1 Kio et 16 Mio.\nGardez à l'esprit que les téléversements sont traités en un seul clic - les fichiers volumineux ou\nde mauvaises performances réseau peuvent bloquer le thread du réseau. Et attention à l'espace disque !\nPlage : 1024 ~ 16777216",
|
||||
"gui.computercraft.config.upload_nag_delay": "Délai de téléversement",
|
||||
"gui.computercraft.config.upload_nag_delay.tooltip": "Le délai en secondes après lequel les importations non traitées seront notifiées. Mettre à 0 pour désactiver.\nPlage : 0 ~ 60",
|
||||
"gui.computercraft.pocket_computer_overlay": "Ordinateur de poche ouvert. Appuyez sur ESC pour le fermer.",
|
||||
"gui.computercraft.terminal": "Terminal d'ordinateur",
|
||||
"gui.computercraft.tooltip.computer_id": "ID d'ordinateur : %s",
|
||||
"gui.computercraft.tooltip.copy": "Copier dans le Presse-Papiers",
|
||||
"gui.computercraft.tooltip.disk_id": "ID de disque : %s",
|
||||
@@ -185,13 +100,8 @@
|
||||
"gui.computercraft.tooltip.turn_on": "Allumer cet ordinateur",
|
||||
"gui.computercraft.upload.failed": "Echec de l'envoie",
|
||||
"gui.computercraft.upload.failed.computer_off": "Vous devez allumer cet ordinateur avant d'envoyer ce fichier.",
|
||||
"gui.computercraft.upload.failed.corrupted": "Fichiers corrompus lors du téléversement. Veuillez réessayer.",
|
||||
"gui.computercraft.upload.failed.generic": "Echec de l'envoie des fichiers (%s)",
|
||||
"gui.computercraft.upload.failed.name_too_long": "Les noms de fichiers sont trop longs pour être téléversé.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Impossible de téléverser autant de fichiers.",
|
||||
"gui.computercraft.upload.failed.too_much": "Votre fichier est trop lourd pour être envoyé.",
|
||||
"gui.computercraft.upload.no_response": "Transfert de fichiers",
|
||||
"gui.computercraft.upload.no_response.msg": "Votre ordinateur n'a pas utilisé les fichiers transférés. Vous devrez peut-être exécuter le programme %s et réessayer.",
|
||||
"item.computercraft.disk": "Disquette",
|
||||
"item.computercraft.pocket_computer_advanced": "Ordinateur de Poche Avancé",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "Ordinateur de Poche Avancé %s",
|
||||
@@ -202,17 +112,12 @@
|
||||
"item.computercraft.printed_pages": "Pages imprimées",
|
||||
"item.computercraft.treasure_disk": "Disquette",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.avg": "%s (moyenne)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Tâches",
|
||||
"tracking_field.computercraft.count": "%s (compte)",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Coroutines créées",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Coroutines mortes",
|
||||
"tracking_field.computercraft.fs.name": "Opérations sur le système de fichiers",
|
||||
"tracking_field.computercraft.http_download.name": "Téléchargement HTTP",
|
||||
"tracking_field.computercraft.http_requests.name": "Requêtes HTTP",
|
||||
"tracking_field.computercraft.http_upload.name": "Publication HTTP",
|
||||
"tracking_field.computercraft.max": "%s (max)",
|
||||
"tracking_field.computercraft.peripheral.name": "Appels aux périphériques",
|
||||
"tracking_field.computercraft.server_tasks.name": "Tâches du serveur",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Opérations des tortues",
|
||||
"tracking_field.computercraft.websocket_incoming.name": "Websocket entrant",
|
||||
"tracking_field.computercraft.websocket_outgoing.name": "Websocket sortant",
|
||||
"upgrade.computercraft.speaker.adjective": "Bruyante",
|
||||
@@ -223,5 +128,104 @@
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Fermière",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Mineuse",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Excavatrice",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "De Combat"
|
||||
"upgrade.minecraft.diamond_sword.adjective": "De Combat",
|
||||
"gui.computercraft.terminal": "Terminal d'ordinateur",
|
||||
"tracking_field.computercraft.count": "%s (compte)",
|
||||
"tracking_field.computercraft.max": "%s (max)",
|
||||
"tracking_field.computercraft.server_tasks.name": "Tâches du serveur",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Opérations des tortues",
|
||||
"tracking_field.computercraft.avg": "%s (moyenne)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Tâches",
|
||||
"gui.computercraft.upload.no_response": "Transfert de fichiers",
|
||||
"gui.computercraft.upload.failed.name_too_long": "Les noms de fichiers sont trop longs pour être téléversé.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Impossible de téléverser autant de fichiers.",
|
||||
"gui.computercraft.pocket_computer_overlay": "Ordinateur de poche ouvert. Appuyez sur ESC pour le fermer.",
|
||||
"gui.computercraft.config.command_require_creative": "Les ordinateurs de commande requiert d'être en mode créatif",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Exiger que les joueurs soient en mode créatif et soient opés pour interagir avec des\nordinateurs de commande. C'est le comportement par défaut des blocs de commande vanilla.",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "La limite d'espace du disque pour les ordinateurs et les tortues, en octets.",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Une liste séparée par des virgules des paramètres système par défaut à définir sur les nouveaux ordinateurs.\nExemple : \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\ndésactivera toute saisie semi-automatique.",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Définir sur true pour désactiver les fonctions Lua 5.1 qui seront supprimées dans une future mise à jour.\nUtile pour assurer la compatibilité ascendante de vos programmes actuels.",
|
||||
"gui.computercraft.config.execution": "Exécution",
|
||||
"gui.computercraft.config.execution.computer_threads": "Threads d'ordinateur",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Tick serveur, limite de temps globale",
|
||||
"gui.computercraft.config.execution.tooltip": "Contrôle le comportement d'exécution des ordinateurs. Ceci est en grande partie\ndestiné à peaufiner les serveurs et ne devrait généralement pas avoir besoin d'être touché.",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "La limite d'espace disque pour les disquettes, en octets.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Bande passante",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Limite de téléchargement globale",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Tick serveur, limite de temps d'ordinateur",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Le nombre d'octets qui peuvent être téléchargés en une seconde. Ceci est partagé sur tous les ordinateurs. (octets/s).\nPlage : > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Limite de téléversement globale",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Le nombre d'octets qui peuvent être téléversé en une seconde. Ceci est partagé sur tous les ordinateurs. (octets/s).\nPlage : > 1",
|
||||
"gui.computercraft.config.http.bandwidth.tooltip": "Limite la bande passante utilisée par les ordinateurs.",
|
||||
"gui.computercraft.config.http.max_requests": "Maximum de requêtes simultanées",
|
||||
"gui.computercraft.config.http.max_requests.tooltip": "Le nombre de requêtes http qu'un ordinateur peut effectuer en même temps.\nLes demandes supplémentaires seront mises en file d'attente et envoyées lorsque\nles demandes en cours seront terminées. Mettre à 0 pour illimité.\nPlage : > 0",
|
||||
"gui.computercraft.config.http.max_websockets": "Maximum de websockets en simultané",
|
||||
"gui.computercraft.config.http.max_websockets.tooltip": "Le nombre de websockets qu'un ordinateur peut avoir d'ouverts en même temps. Mettre à 0 pour illimité.\nPlage : > 1",
|
||||
"gui.computercraft.config.http.rules": "Règles d'autorisation/refus",
|
||||
"gui.computercraft.config.http.tooltip": "Contrôle l'API HTTP",
|
||||
"gui.computercraft.config.http.websocket_enabled": "Active les websockets",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Active l'utilisation des websockets http. Cela nécessite que l'option \"http_enable\" soit également activée.",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Enregistre les exceptions levées par les périphériques et autres objets Lua. Cela permet\naux créateurs de mods de débugger plus facilement les problèmes, mais peut entraîner\nun spam de logs si les joueurs utilisent des fonctions buggées.",
|
||||
"gui.computercraft.config.maximum_open_files.tooltip": "Défini le nombre de fichiers qu'un ordinateur peut ouvrir en même temps. Mettre à 0 pour illimité.\nPlage : > 0",
|
||||
"gui.computercraft.config.monitor_distance": "Distance du moniteur",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm.tooltip": "La portée des modems sans fil à l'altitude maximale par temps orageux, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm.tooltip": "La portée des modems sans fil à basse altitude par temps orageux, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.config.term_sizes.computer.height.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.computer.width.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.monitor.height.tooltip": "Plage : 1 ~ 32",
|
||||
"gui.computercraft.config.monitor_distance.tooltip": "La distance maximale à laquelle les écrans de moniteurs seront rendus. On utilise par défaut la\n'tile entity limit' de base, mais elle peut être augmentée si vous souhaitez créer des moniteurs plus grands.\nPlage : 16 ~ 1024",
|
||||
"gui.computercraft.config.monitor_renderer": "Moteur de rendu du Moniteur",
|
||||
"gui.computercraft.config.monitor_renderer.tooltip": "Le moteur de rendu à utiliser pour les moniteurs. Généralement, cela devrait être maintenu au \"meilleur\" - si\nles moniteurs ont des problèmes de performances, vous souhaiterez peut-être expérimenter avec des\nmoteurs de rendu alternatifs.\nValeurs autorisées : BEST, TBO, VBO",
|
||||
"gui.computercraft.config.peripheral": "Périphériques",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled.tooltip": "Active la prise en charge des périphériques pour le bloc de commande",
|
||||
"gui.computercraft.config.peripheral.max_notes_per_tick.tooltip": "Nombre maximum de notes qu'un haut-parleur peut jouer à la fois.\nPlage : > 1",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth": "Bande-passante du moniteur",
|
||||
"gui.computercraft.config.peripheral.tooltip": "Diverses options relatives aux périphériques.",
|
||||
"gui.computercraft.config.term_sizes": "Tailles de terminal",
|
||||
"gui.computercraft.config.term_sizes.computer": "Ordinateur",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Hauteur du terminal",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "Taille du terminal des ordinateurs.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Largeur du terminal",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Moniteur",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Hauteur maximale du moniteur",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Taille maximale des moniteurs (en blocs).",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Largeur maximale du moniteur",
|
||||
"gui.computercraft.config.term_sizes.monitor.width.tooltip": "Plage : 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width.tooltip": "Plage : 1 ~ 255",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit.tooltip": "La limite de carburant pour les Tortues Avancées.\nPlage : > 0",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit.tooltip": "La limite de carburant pour les Tortues.\nPlage : > 0",
|
||||
"gui.computercraft.config.upload_nag_delay.tooltip": "Le délai en secondes après lequel les importations non traitées seront notifiées. Mettre à 0 pour désactiver.\nPlage : 0 ~ 60",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer": "Ordinateur de poche",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Hauteur du terminal",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.tooltip": "Taille du terminal des ordinateurs de poche.",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Largeur du terminal",
|
||||
"gui.computercraft.config.term_sizes.tooltip": "Configure la taille des différents terminaux de l'ordinateur.\nLes terminaux plus grands nécessitent plus de bande passante, réglez donc avec précaution.",
|
||||
"gui.computercraft.config.turtle": "Tortues",
|
||||
"gui.computercraft.config.turtle.can_push.tooltip": "Si défini sur true, au lieu de s'arrêter, les tortues pousseront les entités hors du chemin si\nil y a de la place pour le faire.",
|
||||
"gui.computercraft.config.turtle.need_fuel.tooltip": "Défini si les tortues ont besoin de carburant pour se déplacer.",
|
||||
"gui.computercraft.config.turtle.tooltip": "Diverses options relatives aux tortues.",
|
||||
"gui.computercraft.config.upload_nag_delay": "Délai de téléversement",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range.tooltip": "La portée des modems sans fil à l'altitude maximale par temps dégagé, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.upload.failed.corrupted": "Fichiers corrompus lors du téléversement. Veuillez réessayer.",
|
||||
"gui.computercraft.upload.no_response.msg": "Votre ordinateur n'a pas utilisé les fichiers transférés. Vous devrez peut-être exécuter le programme %s et réessayer.",
|
||||
"tracking_field.computercraft.http_requests.name": "Requêtes HTTP",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "La durée maximale idéale pendant laquelle un ordinateur peut s'exécuter en un tick, en millisecondes.\nNotez que nous dépasserons très probablement cette limite, car il n'y a aucun moyen de savoir \ncombien de temps cela prendra - cela vise à être la limite supérieure du temps moyen.\nPlage : > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Le temps maximum pouvant être consacré à l'exécution de tâches en un seul tick, en\nmillisecondes.\nNotez que nous dépasserons très probablement cette limite, car il n'y a aucun moyen de savoir\ncombien de temps cela prendra - cela vise à être la limite supérieure du temps moyen.\nPlage : > 1",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Définissez le nombre de threads sur lesquels les ordinateurs peuvent s'exécuter. Un nombre plus élevé signifie\nque plus d'ordinateurs peuvent fonctionner à la fois, mais peut induire un décalage. Veuillez noter que\ncertains mods peuvent ne pas fonctionner avec un nombre de threads supérieur à 1. À utiliser avec prudence.\nPlage : > 1",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Active l'API \"http\" sur les ordinateurs. Cela désactive également les programmes \"pastebin\" et \"wget\",\nsur lesquels de nombreux utilisateurs comptent. Il est recommandé de laisser cette option activée et\nd'utiliser l'option de configuration \"rules\" pour imposer un contrôle plus précis.",
|
||||
"gui.computercraft.config.peripheral.modem_range.tooltip": "La portée des modems sans fil à basse altitude par temps dégagé, en mètres.\nPlage : 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth.tooltip": "La limite de la quantité de données du moniteur pouvant être envoyées *par tick*. Note :\n - La bande passante est mesurée avant la compression, donc les données envoyées\n au client sont plus petites.\n - Cela ignore le nombre de joueurs auxquels un paquet est envoyé. La mise à jour d'un\n moniteur pour un joueur consomme la même limite de bande passante que l'envoi à 20.\n - Un moniteur de taille normale envoie ~25ko de données. Ainsi, la valeur par défaut (1Mo) permet \n à environ 40 moniteurs d'être mis à jour en un seul tick.\nMettre à 0 pour désactiver.\nPlage : > 0",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Une liste de règles qui contrôlent le comportement de l'API \"http\" pour des domaines\nou des IP spécifiques. Chaque règle est un élément avec un 'hôte' à comparer et une série\nde propriétés. Les règles sont évaluées dans l'ordre, ce qui signifie que les règles antérieures\nremplacent les suivantes.\nL'hôte peut être un nom de domaine (\"pastebin.com\"), un astérisque (\"*.pastebin.com\") ou\nune notation CIDR (\"127.0.0.0/8\").\nS'il n'y a pas de règles, le domaine est bloqué.",
|
||||
"gui.computercraft.config.http.proxy.host.tooltip": "Le nom d'hôte ou l'adresse IP du serveur proxy.",
|
||||
"gui.computercraft.config.http.proxy.tooltip": "Tunnelise les requêtes HTTP et websocket via un serveur proxy. Affecte uniquement\nles règles HTTP avec \"use_proxy\" défini sur true (désactivé par défaut).\nSi l'authentification est requise pour le proxy, créez un fichier \"computercraft-proxy.pw\"\ndans le même dossier que \"computercraft-server.toml\", contenant le\nnom d'utilisateur et mot de passe séparés par deux-points, par ex. \"monutilisateur:monmotdepasse\". Pour\nProxy SOCKS4, seul le nom d'utilisateur est requis.",
|
||||
"gui.computercraft.config.upload_max_size.tooltip": "La taille limite de téléversement de fichier, en octets. Doit être compris entre 1 Kio et 16 Mio.\nGardez à l'esprit que les téléversements sont traités en un seul clic - les fichiers volumineux ou\nde mauvaises performances réseau peuvent bloquer le thread du réseau. Et attention à l'espace disque !\nPlage : 1024 ~ 16777216",
|
||||
"gui.computercraft.config.http.proxy": "Proxy",
|
||||
"gui.computercraft.config.http.proxy.host": "Nom d'hôte",
|
||||
"gui.computercraft.config.http.proxy.port": "Port",
|
||||
"gui.computercraft.config.http.proxy.port.tooltip": "Le port du serveur proxy.\nPlage : 1 ~ 65536",
|
||||
"gui.computercraft.config.http.proxy.type": "Type de proxy",
|
||||
"gui.computercraft.config.http.proxy.type.tooltip": "Le type de proxy à utiliser.\nValeurs autorisées : HTTP, HTTPS, SOCKS4, SOCKS5",
|
||||
"gui.computercraft.config.upload_max_size": "Taille limite de téléversement de fichiers (octets)"
|
||||
}
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "Dà aiuto su un determinato comando",
|
||||
"commands.computercraft.queue.desc": "Invia un evento computer_command ad un computer comando, passando gli argomenti aggiuntivi. Questo comando è pensato per i map makers, è un versione più amichevole verso i computer di /trigger. Qualsiasi giocatore può eseguire il comando, è più probabile che venga fatto attraverso un evento click di un componente di testo.",
|
||||
"commands.computercraft.queue.synopsis": "Invia un evento computer_command ad un computer comando",
|
||||
"commands.computercraft.reload.desc": "Ricarica il file di configurazione della ComputerCraft",
|
||||
"commands.computercraft.reload.done": "File di configurazione ricaricato",
|
||||
"commands.computercraft.reload.synopsis": "Ricarica il file di configurazione della ComputerCraft",
|
||||
"commands.computercraft.shutdown.desc": "Spegne i computer specificati o tutti se non specificati. Puoi specificare l'instance id del computer (e.g. 123), l'id del computer (e.g. #123) o l'etichetta (e.g. \"@Il mio Computer\").",
|
||||
"commands.computercraft.shutdown.done": "Spenti %s/%s computer",
|
||||
"commands.computercraft.shutdown.synopsis": "Spegne i computer da remoto.",
|
||||
@@ -70,110 +73,31 @@
|
||||
"commands.computercraft.view.desc": "Apre il terminale di un computer, in modo da poterlo controllare da remoto. Non permette l'accesso all'inventario di una tartaruga. Puoi specificare l'instance id del computer (e.g. 123) o l'id (e.g. #123).",
|
||||
"commands.computercraft.view.not_player": "Non è possibile aprire un terminale per un non giocatore",
|
||||
"commands.computercraft.view.synopsis": "Mostra il terminale di un computer.",
|
||||
"gui.computercraft.config.command_require_creative": "Il computer Comando richiede la modalità creativa",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Richiede che i giocatori siano in modalità creativa e che siano operatori in ordine per interagire con\ni computer di commando. Questo è il comportamento predefinito dei blocchi di comando.",
|
||||
"gui.computercraft.config.computer_space_limit": "Limite spazio Computer (bytes)",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Limite di spazio di archiviazione per i computer e le tartarughe, in byte.",
|
||||
"gui.computercraft.config.default_computer_settings": "Impostazioni Computer predefinite",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Una lista di impostazioni predefinite per i nuovi computer, separate da virgola.\nEsempio: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\ndisattiverà tutti gli autocompletamenti.",
|
||||
"gui.computercraft.config.disable_lua51_features": "Disattiva features Lua 5.1",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Imposta a \"true\" per disattivare le funzionalità di Lua 5.1 che saranno rimosse in un\naggiornamento futuro. Utile per assicurare futura compatibilità con i tuoi programmi.",
|
||||
"gui.computercraft.config.execution": "Esecuzione",
|
||||
"gui.computercraft.config.execution.computer_threads": "Threads computer",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Imposta la quantità di thread che possono eseguire i computer. Un numero più alto significa\nche più computer possono essere eseguiti alla volta, ma può indurre a lag. Alcune mod potrebbero\nnon funzionare con numeri di thread maggiore a 1. Usare con cautela.\nRange: > 1",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Limite di tempo del computer nel server",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Il tempo massimo ideale che un computer può eseguire in un tick, in millisecondi.\nNota, potremmo andare ben sopra questo limite, perché non c'è modo di sapere\nquanto impiega, questa configurazione mira ad essere il limite maggiore del tempo medio.\nRange: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Limite tempo globale dei tick del server",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Il limite massimo di tempo che può essere usato per eseguire task in un singolo tick,\nin millisecondi.\nNota, potremmo andare ben sopra questo limite, perché non c'è modo di sapere\nquanto impiega, questa configurazione mira ad essere il limite maggiore del tempo medio.\nRange: > 1",
|
||||
"gui.computercraft.config.execution.tooltip": "Controlla comportamento esecuzione dei computer. Questo è largamente utilizzato\nper ritoccare la performance dei server, e generale non dovrebbe essere toccato.",
|
||||
"gui.computercraft.config.floppy_space_limit": "Limite spazio Disco Floppy (bytes)",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "Limite di spazio di archiviazione per i dischi floppy, in byte.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Banda larga",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Limite download globale",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Numero di byte che possono essere scaricati in un secondo. Questo è condiviso tra tutti i computer. (bytes/s).\nRange: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Limite upload globale",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Numero di byte che possono essere caricati in un secondo. Questo è condiviso tra tutti i computer. (bytes/s).\nRange: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.tooltip": "Limita la banda larga usato dai computer.",
|
||||
"gui.computercraft.config.http.enabled": "Attiva l'API HTTP",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Attiva l'API \"http\" sui computer. Disattivandolo, vengono disattivati anche i programmi \"pastebin\" e \"wget\", \ndi cui molti utenti dipendono. È raccomandato lasciarlo attivo ed utilizzare l'opzione \n\"rules\" per imporre controlli più adeguati.",
|
||||
"gui.computercraft.config.http.max_requests": "Richieste correnti massime",
|
||||
"gui.computercraft.config.http.max_requests.tooltip": "Il numero di richieste http che un computer può fare alla volta. Ulteriori richieste\nverranno messe in coda, ed inviate quando le richieste correnti sono terminate.\nImposta a 0 per illimitato.\nRange: > 0",
|
||||
"gui.computercraft.config.http.max_websockets": "Connessioni websocket massime",
|
||||
"gui.computercraft.config.http.max_websockets.tooltip": "Il numero di websocket che un computer può avere aperte allo stesso momento.\nImposta a 0 per illimitato.\nRange: > 1",
|
||||
"gui.computercraft.config.http.proxy": "Proxy",
|
||||
"gui.computercraft.config.http.proxy.host": "Nome host",
|
||||
"gui.computercraft.config.http.proxy.host.tooltip": "Il nome dell'host o l'indirizzo IP del server proxy.",
|
||||
"gui.computercraft.config.http.proxy.port": "Porta",
|
||||
"gui.computercraft.config.http.proxy.port.tooltip": "La porta del server proxy.\nRange: 1 ~ 65536",
|
||||
"gui.computercraft.config.http.proxy.tooltip": "Transmetti richieste HTTP e websocket attraverso un server proxy. Ha effetto solo\nsu regole HTTP con \"use_proxy\" attivo (disattivato di default).\nSe l'autenticazione è richiesta per il proxy, creare un file \"computercraft-proxy.pw\"\nnella stessa cartella di \"computercraft-server.toml\", contenendo il nome utente e\npassword separati dal carattere due punti, per esempio: \"myuser:mypassword\".\nI proxy SOCKS4 necessitano solo il nome utente.",
|
||||
"gui.computercraft.config.http.proxy.type": "Tipo proxy",
|
||||
"gui.computercraft.config.http.proxy.type.tooltip": "Il tipo di proxy da usare.\nValori consentiti: HTTP, HTTPS, SOCKS4, SOCKS5",
|
||||
"gui.computercraft.config.http.rules": "Concedi/nega regole",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Una lista di regole che controllano il comportamento dell'API \"http\" per specifici domini\no indirizzi IP. Ogni regola corrisponde ad un nome host ed una porta opzionale, e poi imposta varie\nproprietà per la richiesta. Le regole sono valutate in ordine, cioè le prime regole sovvrascrivono le successive.\n\nProprietà valide:\n - \"host\" (richiesto): Il dominio o l'indirizzo IP della regola. Può essere un nome di dominio\n (\"pastebin.com\"), jolly (\"*.pastebin.com\") o notazione CIDR (\"127.0.0.0/8\").\n - \"port\" (opzionale): Corrisponde solo a richieste con una specifica porta, come 80 o 443.\n\n - \"action\" (opzionale): Se consentire o negare la richiesta.\n - \"max_download\" (opzionale): Quantità massima (in byte) che un computer può scaricare in\n questa richiesta.\n - \"max_upload\" (opzionale): Quantità massima (in byte) che un computer può caricare in\n questa richiesta.\n - \"max_websocket_message\" (opzionale): Quantità massima (in byte) che un computer può inviare o\n ricevere in un pacchetto websocket.\n - \"use_proxy\" (opzionale): Attiva l'uso di un proxy HTTP/SOCKS se configurato.",
|
||||
"gui.computercraft.config.http.tooltip": "Controlla l'API HTTP",
|
||||
"gui.computercraft.config.http.websocket_enabled": "Attiva websocket",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Attiva l'uso di websocket http. Questo richiede che l'opzione \"http_enable\" sia attiva.",
|
||||
"gui.computercraft.config.log_computer_errors": "Salva errori computer",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Registra le eccezioni lanciate dalle periferiche e altri oggetti di Lua. Questo rende più facile\nper gli autori di mod per il debug di problemi, ma potrebbe risultare in spam di log durante\nl'uso di metodi buggati.",
|
||||
"gui.computercraft.config.maximum_open_files": "Massimo file aperti per computer",
|
||||
"gui.computercraft.config.maximum_open_files.tooltip": "Imposta quanti file possono essere aperti allo stesso momento su un computer. Imposta a 0 per illimitato.\nRange: > 0",
|
||||
"gui.computercraft.config.monitor_distance": "Distanza monitor",
|
||||
"gui.computercraft.config.monitor_distance.tooltip": "Distanza massima che i monitor vengono renderizzati. Questo è predefinito al limite\nstandard dei tile entity, ma può essere esteso se desideri construire monitor più grandi.\nRange: 16 ~ 1024",
|
||||
"gui.computercraft.config.monitor_renderer": "Renderizzatore monitor",
|
||||
"gui.computercraft.config.monitor_renderer.tooltip": "Il renderizzatore da usare per i monitor. Generalmente si dovrebbe lasciare su \"best\", se\ni monitor hanno problemi di performance, puoi sperimentare con renderizzatori alternativi.\nValori concessi: BEST, TBO, VBO",
|
||||
"gui.computercraft.config.peripheral": "Periferiche",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled": "Attiva periferica blocco comandi",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled.tooltip": "Attiva il supporto ai blocchi di comando come periferiche",
|
||||
"gui.computercraft.config.peripheral.max_notes_per_tick": "Note massime alla volta",
|
||||
"gui.computercraft.config.peripheral.max_notes_per_tick.tooltip": "Quantità massima di note che un altoparlante può riprodurre allo stesso momento.\nRange: > 1",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range": "Raggio Modem (alta quota)",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range.tooltip": "La distanza massima dei modem wireless all'altitudine massima durante il meteo soleggiato. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm": "Raggio Modem (alta quota, brutto tempo)",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm.tooltip": "La distanza massima dei modem wireless all'altitudine massima durante una tempesta. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range": "Raggio Modem (default)",
|
||||
"gui.computercraft.config.peripheral.modem_range.tooltip": "La distanza massima dei modem wireless ad altitudini basse durante il meteo soleggiato. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm": "Raggio Modem (brutto tempo)",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm.tooltip": "La distanza massima dei modem wireless ad altitudini basse durante una tempesta. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth": "Banda larga monitor",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth.tooltip": "Il limite di quanti dati dei monitor possono essere inviati *al tick*. Nota:\n - La banda larga è misurata prima della compressione, così che il dato inviato al client è\n più piccolo.\n - Questo ignora il numero di giocatori a cui viene inviato il pacchetto. Aggiornare un monitor\n per un giocatore consuma lo stesso limite di banda larga dell'invio a 20 giocatori.\n - Un monitor alla massima grandezza invia ~25kb di dati. Quindi il valore predefinito (1MB) concede\n ~40 monitor di essere aggiornati in un singolo tick.\nImposta a 0 per disattivare.\nRange: > 0",
|
||||
"gui.computercraft.config.peripheral.tooltip": "Opzioni varie riguardo le periferiche.",
|
||||
"gui.computercraft.config.term_sizes": "Dimensioni terminale",
|
||||
"gui.computercraft.config.term_sizes.computer": "Computer",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Altezza terminale",
|
||||
"gui.computercraft.config.term_sizes.computer.height.tooltip": "Range: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "Dimensioni del terminale dei computer.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Larghezza terminale",
|
||||
"gui.computercraft.config.term_sizes.computer.width.tooltip": "Intervallo: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Monitor",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Massima altezza del monitor",
|
||||
"gui.computercraft.config.term_sizes.monitor.height.tooltip": "Range: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Massima grandezza dei monitor (in blocchi).",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Larghezza massima del monitor",
|
||||
"gui.computercraft.config.term_sizes.monitor.width.tooltip": "Range: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer": "Computer Tascabile",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Altezza terminale",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Range: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.tooltip": "Dimensioni del terminale dei computer tascabili.",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Larghezza terminale",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width.tooltip": "Range: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.tooltip": "Configura le dimensioni dei terminali di vari computer.\nTerminali più grandi richiedono più banda larga, usa con cautela.",
|
||||
"gui.computercraft.config.turtle": "Tartarughe",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit": "Limite carburante tartarughe avanzate",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit.tooltip": "Limite carburante delle Tartarughe Avanzate.\nRange: > 0",
|
||||
"gui.computercraft.config.turtle.can_push": "Le tartarughe possono spingere le entità",
|
||||
"gui.computercraft.config.turtle.can_push.tooltip": "Se impostato a true, le Tartarughe spingeranno le entità fuori dai piedi invece\ndi fermarsi se c'è spazio.",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Attiva carburante",
|
||||
"gui.computercraft.config.turtle.need_fuel.tooltip": "Imposta se la Tartaruga richiede del carburante per muoversi.",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit": "Limite carburante tartarughe",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit.tooltip": "Limite carburante delle Tartarughe.\nRange: > 0",
|
||||
"gui.computercraft.config.turtle.tooltip": "Opzioni varie riguardo le tartarughe.",
|
||||
"gui.computercraft.config.upload_max_size": "Limite delle dimensioni dei file da caricare (byte)",
|
||||
"gui.computercraft.config.upload_max_size.tooltip": "Il limite delle dimensioni dei file da caricare, in byte. Deve essere in range di 1KiB e 16 MiB.\nRicorda che i caricamenti sono processati in un singolo tick - i file grandi o\nuna rete di bassa qualità può bloccare il thread di rete. E ricorda anche lo spazio di archiviazione dei dischi!\nRange: 1024 ~ 16777216",
|
||||
"gui.computercraft.config.upload_nag_delay": "Ritardo nel caricamento",
|
||||
"gui.computercraft.config.upload_nag_delay.tooltip": "Ritardo in secondi dopo il quale verranno notificate le importazioni non gestite. Imposta a 0 per disattivare.\nRange: 0 ~ 60",
|
||||
"gui.computercraft.pocket_computer_overlay": "Computer tascabile aperto. Premi ESC per chiudere.",
|
||||
"gui.computercraft.terminal": "Terminale computer",
|
||||
"gui.computercraft.tooltip.computer_id": "ID Computer: %s",
|
||||
"gui.computercraft.tooltip.copy": "Copia negli appunti",
|
||||
"gui.computercraft.tooltip.disk_id": "ID Disco: %s",
|
||||
@@ -189,8 +113,6 @@
|
||||
"gui.computercraft.upload.failed.name_too_long": "I nomi dei file sono troppo lunghi per essere caricati.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Non puoi caricare troppi file.",
|
||||
"gui.computercraft.upload.failed.too_much": "I tuoi file sono troppo grandi per essere caricati.",
|
||||
"gui.computercraft.upload.no_response": "Trasferimento File",
|
||||
"gui.computercraft.upload.no_response.msg": "Il tuo computer non ha usato i tuoi file trasferiti. Potresti aver bisogno di eseguire il programma %s e riprovare di nuovo.",
|
||||
"item.computercraft.disk": "Disco Floppy",
|
||||
"item.computercraft.pocket_computer_advanced": "Computer Tascabile Avanzato",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "Computer Tascabile %s Avanzato",
|
||||
@@ -201,20 +123,15 @@
|
||||
"item.computercraft.printed_pages": "Pagine Stampate",
|
||||
"item.computercraft.treasure_disk": "Disco Floppy",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.avg": "%s (media)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Attività",
|
||||
"tracking_field.computercraft.count": "%s (conta)",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Coroutine create",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Coroutine cancellate",
|
||||
"tracking_field.computercraft.fs.name": "Operazioni filesystem",
|
||||
"tracking_field.computercraft.http_download.name": "Download HTTP",
|
||||
"tracking_field.computercraft.http_requests.name": "Richieste HTTP",
|
||||
"tracking_field.computercraft.http_upload.name": "Upload HTTP",
|
||||
"tracking_field.computercraft.max": "%s (massimo)",
|
||||
"tracking_field.computercraft.peripheral.name": "Chiamate alle periferiche",
|
||||
"tracking_field.computercraft.server_tasks.name": "Attività server",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Operazioni tartarughe",
|
||||
"tracking_field.computercraft.websocket_incoming.name": "Websocket in arrivo",
|
||||
"tracking_field.computercraft.websocket_outgoing.name": "Websocket in uscita",
|
||||
"upgrade.computercraft.speaker.adjective": "Rumoroso",
|
||||
"upgrade.computercraft.speaker.adjective": "Che Produce Rumori",
|
||||
"upgrade.computercraft.wireless_modem_advanced.adjective": "Ender",
|
||||
"upgrade.computercraft.wireless_modem_normal.adjective": "Wireless",
|
||||
"upgrade.minecraft.crafting_table.adjective": "Artigiana",
|
||||
@@ -222,5 +139,83 @@
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Contadina",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Minatrice",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Scavatrice",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Da Combattimento"
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Da Combattimento",
|
||||
"gui.computercraft.config.term_sizes.computer.width.tooltip": "Intervallo: 1 ~ 255",
|
||||
"gui.computercraft.config.turtle.need_fuel.tooltip": "Imposta se la Tartaruga richiede del carburante per muoversi.",
|
||||
"gui.computercraft.config.command_require_creative": "Il computer Comando richiede la modalità creativa",
|
||||
"tracking_field.computercraft.http_requests.name": "Richieste HTTP",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Richiede che i giocatori siano in modalità creativa e che siano operatori in ordine per interagire con\ni computer di commando. Questo è il comportamento predefinito dei blocchi di comando.",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Imposta a \"true\" per disattivare le funzionalità di Lua 5.1 che saranno rimosse in un\naggiornamento futuro. Utile per assicurare futura compatibilità con i tuoi programmi.",
|
||||
"gui.computercraft.config.execution": "Esecuzione",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Limite di tempo del computer nel server",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Il tempo massimo ideale che un computer può eseguire in un tick, in millisecondi.\nNota, potremmo andare ben sopra questo limite, perché non c'è modo di sapere\nquanto impiega, questa configurazione mira ad essere il limite maggiore del tempo medio.\nRange: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Limite tempo globale dei tick del server",
|
||||
"gui.computercraft.config.execution.tooltip": "Controlla comportamento esecuzione dei computer. Questo è largamente utilizzato\nper ritoccare la performance dei server, e generale non dovrebbe essere toccato.",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "Limite di spazio di archiviazione per i dischi floppy, in byte.",
|
||||
"gui.computercraft.config.http.bandwidth": "Banda larga",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Limite download globale",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Numero di byte che possono essere scaricati in un secondo. Questo è condiviso tra tutti i computer. (bytes/s).\nRange: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Limite upload globale",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Numero di byte che possono essere caricati in un secondo. Questo è condiviso tra tutti i computer. (bytes/s).\nRange: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.tooltip": "Limita la banda larga usato dai computer.",
|
||||
"gui.computercraft.config.http.max_requests.tooltip": "Il numero di richieste http che un computer può fare alla volta. Ulteriori richieste\nverranno messe in coda, ed inviate quando le richieste correnti sono terminate.\nImposta a 0 per illimitato.\nRange: > 0",
|
||||
"gui.computercraft.config.http.max_websockets.tooltip": "Il numero di websocket che un computer può avere aperte allo stesso momento.\nImposta a 0 per illimitato.\nRange: > 1",
|
||||
"gui.computercraft.config.http.rules": "Concedi/nega regole",
|
||||
"gui.computercraft.config.maximum_open_files.tooltip": "Imposta quanti file possono essere aperti allo stesso momento su un computer. Imposta a 0 per illimitato.\nRange: > 0",
|
||||
"gui.computercraft.config.monitor_distance": "Distanza monitor",
|
||||
"gui.computercraft.config.monitor_distance.tooltip": "Distanza massima che i monitor vengono renderizzati. Questo è predefinito al limite\nstandard dei tile entity, ma può essere esteso se desideri construire monitor più grandi.\nRange: 16 ~ 1024",
|
||||
"gui.computercraft.config.monitor_renderer": "Renderizzatore monitor",
|
||||
"gui.computercraft.config.peripheral.command_block_enabled.tooltip": "Attiva il supporto ai blocchi di comando come periferiche",
|
||||
"gui.computercraft.config.peripheral.max_notes_per_tick.tooltip": "Quantità massima di note che un altoparlante può riprodurre allo stesso momento.\nRange: > 1",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range.tooltip": "La distanza massima dei modem wireless all'altitudine massima durante il meteo soleggiato. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm.tooltip": "La distanza massima dei modem wireless all'altitudine massima durante una tempesta. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range.tooltip": "La distanza massima dei modem wireless ad altitudini basse durante il meteo soleggiato. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm.tooltip": "La distanza massima dei modem wireless ad altitudini basse durante una tempesta. in metri.\nRange: 0 ~ 100000",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth": "Banda larga monitor",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Limite di spazio di archiviazione per i computer e le tartarughe, in byte.",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Una lista di impostazioni predefinite per i nuovi computer, separate da virgola.\nEsempio: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\ndisattiverà tutti gli autocompletamenti.",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Imposta la quantità di thread che possono eseguire i computer. Un numero più alto significa\nche più computer possono essere eseguiti alla volta, ma può indurre a lag. Alcune mod potrebbero\nnon funzionare con numeri di thread maggiore a 1. Usare con cautela.\nRange: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Il limite massimo di tempo che può essere usato per eseguire task in un singolo tick,\nin millisecondi.\nNota, potremmo andare ben sopra questo limite, perché non c'è modo di sapere\nquanto impiega, questa configurazione mira ad essere il limite maggiore del tempo medio.\nRange: > 1",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Attiva l'API \"http\" sui computer. Questo disabilita i programmi \"pastebin\" e \"wget\", \nche molti utenti dipendono. È raccomandato lasciarlo attivo ed utlizzare l'opzione \n\"rules\" per imporre controlli più adeguati.",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Una lista di regole che controllano il comportamento dell'API \"http\" per specifici domini\no indirizzi IP. Ogni regola è un elemento con un 'host' da confrontare, e una serie di\nproprietà. Le regole sono valutate in ordine, cioè le prime regole sovvrascrivono le successive.\nL'host può essere un dominio (\"pastebin.com\"), wildcard (\"*.pastebin.com\") oppure\nuna notazione CIDR (\"127.0.0.0/8\").\nSe non è presente nessuna regola, il dominio è bloccato.",
|
||||
"gui.computercraft.config.http.tooltip": "Controlla l'API HTTP",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Attiva l'uso di websocket http. Questo richiede che l'opzione \"http_enable\" sia attiva.",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Registra le eccezioni lanciate dalle periferiche e altri oggetti di Lua. Questo rende più facile\nper gli autori di mod per il debug di problemi, ma potrebbe risultare in spam di log durante\nl'uso di metodi buggati.",
|
||||
"gui.computercraft.config.monitor_renderer.tooltip": "Il renderizzatore da usare per i monitor. Generalmente si dovrebbe lasciare su \"best\", se\ni monitor hanno problemi di performance, puoi sperimentare con renderizzatori alternativi.\nValori concessi: BEST, TBO, VBO",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth.tooltip": "Il limite di quanti dati dei monitor possono essere inviati *al tick*. Nota:\n - La banda larga è misurata prima della compressione, così che il dato inviato al client è\n più piccolo.\n - Questo ignora il numero di giocatori a cui viene inviato il pacchetto. Aggiornare un monitor\n per un giocatore consuma lo stesso limite di banda larga dell'invio a 20 giocatori.\n - Un monitor alla massima grandezza invia ~25kb di dati. Quindi il valore predefinito (1MB) concede\n ~40 monitor di essere aggiornati in un singolo tick.\nImposta a 0 per disattivare.\nRange: > 0",
|
||||
"gui.computercraft.terminal": "Terminale computer",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Operazioni tartarughe",
|
||||
"tracking_field.computercraft.avg": "%s (media)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Attività",
|
||||
"tracking_field.computercraft.count": "%s (conta)",
|
||||
"tracking_field.computercraft.max": "%s (massimo)",
|
||||
"tracking_field.computercraft.server_tasks.name": "Attività server",
|
||||
"gui.computercraft.upload.no_response": "Trasferimento File",
|
||||
"gui.computercraft.config.peripheral.tooltip": "Opzioni varie riguardo le periferiche.",
|
||||
"gui.computercraft.config.term_sizes.computer": "Computer",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Altezza terminale",
|
||||
"gui.computercraft.config.term_sizes.computer.height.tooltip": "Range: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes": "Dimensioni terminale",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "Dimensioni del terminale dei computer.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Larghezza terminale",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Monitor",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Massima altezza del monitor",
|
||||
"gui.computercraft.config.term_sizes.monitor.height.tooltip": "Range: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Massima grandezza dei monitor (in blocchi).",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Larghezza massima del monitor",
|
||||
"gui.computercraft.config.term_sizes.monitor.width.tooltip": "Range: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer": "Computer Tascabile",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Altezza terminale",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Range: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.tooltip": "Dimensioni del terminale dei computer tascabili.",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Larghezza terminale",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width.tooltip": "Range: 1 ~ 255",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit.tooltip": "Limite carburante delle Tartarughe Avanzate.\nRange: > 0",
|
||||
"gui.computercraft.config.turtle.can_push.tooltip": "Se impostato a true, le Tartarughe spingeranno le entità fuori dai piedi invece\ndi fermarsi se c'è spazio.",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit.tooltip": "Limite carburante delle Tartarughe.\nRange: > 0",
|
||||
"gui.computercraft.config.turtle.tooltip": "Opzioni varie riguardo le tartarughe.",
|
||||
"gui.computercraft.config.upload_nag_delay": "Ritardo nel caricamento",
|
||||
"gui.computercraft.config.term_sizes.tooltip": "Configura le dimensioni dei terminali di vari computer.\nTerminali più grandi richiedono più banda larga, usa con cautela.",
|
||||
"gui.computercraft.config.upload_nag_delay.tooltip": "Ritardo in secondi dopo il quale verranno notificate le importazioni non gestite. Imposta a 0 per disattivare.\nRange: 0 ~ 60",
|
||||
"gui.computercraft.upload.no_response.msg": "Il tuo computer non ha usato i tuoi file trasferiti. Potresti aver bisogno di eseguire il programma %s e riprovare di nuovo."
|
||||
}
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "特定のコマンドのヘルプを提供します",
|
||||
"commands.computercraft.queue.desc": "追加の引数を通過する computer_command インベントをコマンドコンピューターに送信します。これは主にマップメーカーのために設計されており、よりコンピュータフレンドリーバージョンの /trigger として機能します。 どのプレイヤーでもコマンドを実行できます。これは、テキストコンポーネントのクリックイベントを介して行われる可能性があります。",
|
||||
"commands.computercraft.queue.synopsis": "computer_command インベントをコマンドコンピューターに送信します",
|
||||
"commands.computercraft.reload.desc": "コンピュータークラフトのコンフィグファイルを再読み込みします",
|
||||
"commands.computercraft.reload.done": "コンフィグを再読み込みしました",
|
||||
"commands.computercraft.reload.synopsis": "コンピュータークラフトのコンフィグファイルを再読み込みします",
|
||||
"commands.computercraft.shutdown.desc": "指定されたコンピュータ、指定されていない場合はすべてのコンピュータをシャットダウンします。 コンピュータのインスタンスID (例えば 123), コンピュータID (例えば #123) またはラベル (例えば \\\"@My Computer\\\") を指定することができます。",
|
||||
"commands.computercraft.shutdown.done": "%s/%s コンピューターをシャットダウンしました",
|
||||
"commands.computercraft.shutdown.synopsis": "コンピュータをリモートでシャットダウンする。",
|
||||
@@ -96,6 +99,8 @@
|
||||
"item.computercraft.printed_pages": "印刷された紙束",
|
||||
"item.computercraft.treasure_disk": "フロッピーディスク",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.coroutines_created.name": "コルーチン作成",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "コルーチン削除",
|
||||
"tracking_field.computercraft.fs.name": "ファイルシステム演算",
|
||||
"tracking_field.computercraft.http_download.name": "HTTPダウンロード",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTPアップロード",
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "특정 명령어에 대한 도움말을 제공하기",
|
||||
"commands.computercraft.queue.desc": "computer_command 이벤트를 명령 컴퓨터로 전송하여 추가 인수를 전달합니다. 이는 대부분 지도 제작자를 위해 설계되었으며, 보다 컴퓨터 친화적인 버전의 /trigger 역할을 합니다. 어떤 플레이어든 명령을 실행할 수 있으며, 이는 텍스트 구성 요소의 클릭 이벤트를 통해 수행될 가능성이 가장 높습니다.",
|
||||
"commands.computercraft.queue.synopsis": "computer_command 이벤트를 명령 컴퓨터에 보내기",
|
||||
"commands.computercraft.reload.desc": "컴퓨터크래프트 구성파일을 리로드합니다.",
|
||||
"commands.computercraft.reload.done": "리로드된 구성",
|
||||
"commands.computercraft.reload.synopsis": "컴퓨터크래프트 구성파일을 리로드하기",
|
||||
"commands.computercraft.shutdown.desc": "나열된 시스템 또는 지정된 시스템이 없는 경우 모두 종료합니다. 컴퓨터의 인스턴스 ID(예: 123)나 컴퓨터 ID(예: #123) 또는 라벨(예: \"@My Computer\")을 지정할 수 있습니다.",
|
||||
"commands.computercraft.shutdown.done": "%s/%s 컴퓨터 시스템 종료",
|
||||
"commands.computercraft.shutdown.synopsis": "시스템을 원격으로 종료하기",
|
||||
@@ -123,6 +126,8 @@
|
||||
"item.computercraft.printed_pages": "인쇄된 페이지 모음",
|
||||
"item.computercraft.treasure_disk": "플로피 디스크",
|
||||
"itemGroup.computercraft": "컴퓨터크래프트",
|
||||
"tracking_field.computercraft.coroutines_created.name": "코루틴 생성됨",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "코루틴 처리됨",
|
||||
"tracking_field.computercraft.fs.name": "파일시스템 작업",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP 다운로드",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP 업로드",
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "Gi hjelp til en spesifikk kommando",
|
||||
"commands.computercraft.queue.desc": "Send en computer_command hendelse til en kommando datamaskin, sender også tilleggs-argumentene Dette er hovedsakelig designet for kartskapere, og fungerer som en mer datamaskin vennlig versjon av /trigger. Enhver spiller kan kjøre kommandoen, som mest sannsynlig vil bli gjort gjennom en tekst komponent sin klikk hendelse.",
|
||||
"commands.computercraft.queue.synopsis": "Send en computer_command hendelse til en kommando datamaskin",
|
||||
"commands.computercraft.reload.desc": "Last inn ComputerCraft sin konfigurasjonsfil på nytt",
|
||||
"commands.computercraft.reload.done": "Lastet konfigurasjon på nytt",
|
||||
"commands.computercraft.reload.synopsis": "Last inn ComputerCraft sin konfigurasjonsfil på nytt",
|
||||
"commands.computercraft.shutdown.desc": "Slå av de oppførte datamaskinene eller alle hvis ingen er spesifisert. Du kan spesifisere datamaskinens forekomst (f. eks 123), datamaskinens id (f. eks #123) eller merkelapp (f.eks \"@Min datamaskin\").",
|
||||
"commands.computercraft.shutdown.done": "Skrudde av %s/%s datamaskiner",
|
||||
"commands.computercraft.shutdown.synopsis": "Slå av datamaskiner eksternt.",
|
||||
@@ -70,24 +73,7 @@
|
||||
"commands.computercraft.view.desc": "Åpner terminalen til en datamaskin, lar deg fjernstyre den. Dette gir deg ikke tilgang til skilpadders inventar. Du kan enten spesifisere datamaskinens forekomst id (f. eks 123) eller datamaskinens id (f. eks #123).",
|
||||
"commands.computercraft.view.not_player": "Kan kun åpne terminal for spillere",
|
||||
"commands.computercraft.view.synopsis": "Vis terminal til en datamaskin.",
|
||||
"gui.computercraft.config.command_require_creative": "Kommando datamaskiner trenger kreativ",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.enabled": "Slå på HTTP APIen",
|
||||
"gui.computercraft.config.http.rules": "Godta/Avslå regler",
|
||||
"gui.computercraft.config.monitor_distance": "Skjerm distanse",
|
||||
"gui.computercraft.config.term_sizes": "Terminal størrelser",
|
||||
"gui.computercraft.config.term_sizes.computer": "Datamaskin",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Terminal høyde",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Terminal bredde",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Skjerm",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Maksimum skjerm høyde",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Maksimum skjerm bredde",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Terminal høyde",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Terminal bredde",
|
||||
"gui.computercraft.config.turtle": "Skilpadde",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Aktiver drivstoff",
|
||||
"gui.computercraft.pocket_computer_overlay": "Lommedatamaskin åpen. Trykk ESC for å lukke.",
|
||||
"gui.computercraft.terminal": "Datamaskin terminal",
|
||||
"gui.computercraft.tooltip.computer_id": "Datamaskin ID: %s",
|
||||
"gui.computercraft.tooltip.copy": "Kopier til utklippstavle",
|
||||
"gui.computercraft.tooltip.disk_id": "Disk ID: %s",
|
||||
@@ -103,7 +89,6 @@
|
||||
"gui.computercraft.upload.failed.name_too_long": "Fil navnene er for lange til å bli lastet opp.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Kan ikke laste opp så mange filer.",
|
||||
"gui.computercraft.upload.failed.too_much": "Filene dine er for store for å kunne bli lastet opp.",
|
||||
"gui.computercraft.upload.no_response": "Overfører Filer",
|
||||
"item.computercraft.disk": "Floppy Disk",
|
||||
"item.computercraft.pocket_computer_advanced": "Avansert Lomme Datamaskin",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "Avansert %s Lomme Datamaskin",
|
||||
@@ -114,14 +99,12 @@
|
||||
"item.computercraft.printed_pages": "Printet Sider",
|
||||
"item.computercraft.treasure_disk": "Floppy Disk",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Oppgaver",
|
||||
"tracking_field.computercraft.count": "%s (antall)",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Skapte coroutines",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Kastede coroutiner",
|
||||
"tracking_field.computercraft.fs.name": "Filsystem operasjoner",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP-nedlasting",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP-opplasting",
|
||||
"tracking_field.computercraft.max": "%s (maks)",
|
||||
"tracking_field.computercraft.peripheral.name": "Perifere kjøringer",
|
||||
"tracking_field.computercraft.server_tasks.name": "Server oppgaver",
|
||||
"tracking_field.computercraft.websocket_incoming.name": "Innkommende Websocket",
|
||||
"tracking_field.computercraft.websocket_outgoing.name": "Utgående Websocket",
|
||||
"upgrade.computercraft.speaker.adjective": "Høylydt",
|
||||
@@ -132,5 +115,27 @@
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Dyrkende",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Brytende",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Gravende",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Kjempende"
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Kjempende",
|
||||
"gui.computercraft.terminal": "Datamaskin terminal",
|
||||
"gui.computercraft.upload.no_response": "Overfører Filer",
|
||||
"tracking_field.computercraft.max": "%s (maks)",
|
||||
"tracking_field.computercraft.count": "%s (antall)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Oppgaver",
|
||||
"tracking_field.computercraft.server_tasks.name": "Server oppgaver",
|
||||
"gui.computercraft.config.command_require_creative": "Kommando datamaskiner trenger kreativ",
|
||||
"gui.computercraft.config.http.enabled": "Slå på HTTP APIen",
|
||||
"gui.computercraft.config.monitor_distance": "Skjerm distanse",
|
||||
"gui.computercraft.config.term_sizes.computer": "Datamaskin",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Terminal høyde",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Skjerm",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Maksimum skjerm bredde",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Terminal høyde",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Terminal bredde",
|
||||
"gui.computercraft.config.turtle": "Skilpadde",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Terminal bredde",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Aktiver drivstoff",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.rules": "Godta/Avslå regler",
|
||||
"gui.computercraft.config.term_sizes": "Terminal størrelser",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Maksimum skjerm høyde"
|
||||
}
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "Biedt hulp voor een specifiek commando",
|
||||
"commands.computercraft.queue.desc": "Verzend een computer_commando event naar een commandocomputer. Additionele argumenten worden doorgegeven. Dit is vooral bedoeld voor mapmakers. Het doet dienst als een computer-vriendelijke versie van /trigger. Elke speler kan het commando uitvoeren, wat meestal gedaan zal worden door een text-component klik-event.",
|
||||
"commands.computercraft.queue.synopsis": "Verzend een computer_command event naar een commandocomputer",
|
||||
"commands.computercraft.reload.desc": "Herlaad het ComputerCraft configuratiebestand",
|
||||
"commands.computercraft.reload.done": "Configuratie herladen",
|
||||
"commands.computercraft.reload.synopsis": "Herlaad het ComputerCraft configuratiebestand",
|
||||
"commands.computercraft.shutdown.desc": "Sluit alle genoemde computers af, of geen enkele wanneer niet gespecificeerd. Je kunt een instance-id (bijv. 123), computer-id (bijv. #123) of computer-label (bijv. \\\"@Mijn Computer\\\") opgeven.",
|
||||
"commands.computercraft.shutdown.done": "%s/%s computers afgesloten",
|
||||
"commands.computercraft.shutdown.synopsis": "Sluit computers af op afstand.",
|
||||
@@ -94,6 +97,8 @@
|
||||
"item.computercraft.printed_pages": "Geprinte Pagina's",
|
||||
"item.computercraft.treasure_disk": "Diskette",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Coroutines gecreëerd",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Coroutines verwijderd",
|
||||
"tracking_field.computercraft.fs.name": "Restandssysteem operaties",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP download",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP upload",
|
||||
|
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"argument.computercraft.argument_expected": "Argument oczekiwany",
|
||||
"block.computercraft.cable": "Kabel Sieciowy",
|
||||
"block.computercraft.computer_advanced": "Zaawansowany Komputer",
|
||||
"block.computercraft.computer_command": "Komputer Komendowy",
|
||||
@@ -17,11 +16,7 @@
|
||||
"commands.computercraft.desc": "Komenda /computercraft dostarcza wiele narzędzi do zarządzania, kontrolowania i administrowania komputerami.",
|
||||
"commands.computercraft.dump.action": "Wyświetl więcej informacji o tym komputerze",
|
||||
"commands.computercraft.dump.desc": "Wyświetla status wszystkich komputerów lub informacje o jednym komputerze. Możesz wybrać numer sesji komputera (np. 123), ID komputera (np. #123) lub jego etykietę (np. \"@Mój Komputer\").",
|
||||
"commands.computercraft.dump.open_path": "Przeglądaj pliki tego komputera",
|
||||
"commands.computercraft.dump.synopsis": "Wyświetl stan komputerów.",
|
||||
"commands.computercraft.generic.no_position": "<brak pozycji>",
|
||||
"commands.computercraft.generic.position": "%s, %s, %s",
|
||||
"commands.computercraft.generic.yes": "T",
|
||||
"commands.computercraft.help.no_children": "%s nie ma pod-komend",
|
||||
"commands.computercraft.help.no_command": "Nie odnaleziono komendy '%s'",
|
||||
"commands.computercraft.help.synopsis": "Uzyskaj pomoc do konkretnej komendy",
|
||||
@@ -31,9 +26,7 @@
|
||||
"commands.computercraft.synopsis": "Różne komendy do kontrolowania komputerami.",
|
||||
"commands.computercraft.tp.action": "Przeteleportuj się do podanego komputera",
|
||||
"commands.computercraft.tp.desc": "Przeteleportuj się do lokalizacji komputera. Możesz wybrać numer sesji komputera (np. 123) lub ID komputera (np. #123).",
|
||||
"commands.computercraft.tp.not_there": "Nie można zlokalizować komputera w świecie",
|
||||
"commands.computercraft.tp.synopsis": "Przeteleportuj się do podanego komputera.",
|
||||
"commands.computercraft.track.dump.computer": "Komputer",
|
||||
"commands.computercraft.turn_on.desc": "Włącz podane komputery. Możesz wybrać numer sesji komputera (np. 123), ID komputera (np. #123) lub jego etykietę (np. \"@Mój Komputer\").",
|
||||
"commands.computercraft.turn_on.done": "Włączono %s z %s komputerów",
|
||||
"commands.computercraft.turn_on.synopsis": "Zdalnie włącz komputery.",
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "Предоставляет помощь для конкретных команд",
|
||||
"commands.computercraft.queue.desc": "Отправить событие computer_command к Командному компьютеру, проходящий через дополнительные аргументы. В основном это предназначено для Картоделов, действует как более удобная для пользователя компьютерная версия /trigger. Любой игрок сможет запустить команду, которая, по всей вероятности, будет сделана через события щелчка текстового компонента.",
|
||||
"commands.computercraft.queue.synopsis": "Отправить событие computer_command к Командному компьютеру",
|
||||
"commands.computercraft.reload.desc": "Перезагружает файл конфигурации ComputerCraft'a",
|
||||
"commands.computercraft.reload.done": "Конфигурация перезагружена",
|
||||
"commands.computercraft.reload.synopsis": "Перезагрузить файл конфигурации ComputerCraft'a",
|
||||
"commands.computercraft.shutdown.desc": "Завершить работу перечисленных компьютеров или все, если ни один не указан. Ты можешь указать идентификатор экземпляра компьютера (например 123), идентификатор компьютера (например #123) или метку (например \"@Мой компьютер\").",
|
||||
"commands.computercraft.shutdown.done": "У %s/%s компьютеров завершена работа",
|
||||
"commands.computercraft.shutdown.synopsis": "Удалённо завершить работу компьютеров.",
|
||||
@@ -70,78 +73,6 @@
|
||||
"commands.computercraft.view.desc": "Открыть терминал компьютера, позволяющий удалённо управлять компьютером. Это не предоставляет доступ к инвентарям черепашек. Ты можешь указать либо идентификатор экземпляра компьютера (например 123) либо идентификатор компьютера (например #123).",
|
||||
"commands.computercraft.view.not_player": "Нельзя открыть терминал для не-игрока",
|
||||
"commands.computercraft.view.synopsis": "Просмотреть терминал компьютера.",
|
||||
"gui.computercraft.config.command_require_creative": "Для использования командных компьютеров нужен творческий режим",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Требовать творческий режим и права оператора для взаимодействия с\nкомандными компьютерами. Это поведение по умолчанию для Командных блоков ванильной игры.",
|
||||
"gui.computercraft.config.computer_space_limit": "Лимит места на компьютерах (в байтах)",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Лимит места на дисках компьютеров и черепашек, в байтах.",
|
||||
"gui.computercraft.config.default_computer_settings": "Настройки Компьютера по умолчанию",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Разделенный запятыми список системных настроек по умолчанию на новых компьютерах.\nНапример: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\nотключит всё автодополнение.",
|
||||
"gui.computercraft.config.disable_lua51_features": "Отключить функции Lua 5.1",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Поставьте, чтобы отключить функции из Lua 5.1, которые будут убраны в будущих\nобновлениях. Полезно для того, чтобы улучшить совместимость вперед ваших программ.",
|
||||
"gui.computercraft.config.execution": "Выполнение",
|
||||
"gui.computercraft.config.execution.computer_threads": "Потоки компьютера",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Устанавливает количество потоков, на которых работают компьютеры. Большее число\nозначает, что больше компьютеров сможет работать одновременно, но может привести к лагу.\nОбратите внимание, что некоторые моды могут не работать с более чем одним потоком. Используйте с осторожностью.\nОграничение: > 1",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Идеальный максимум времени, которое отведено компьютеру на выполнение задач, в миллисекундах.\nМы вполне возможно выйдем за этот лимит, так как невозможно предсказать сколько\nвремени будет затрачено на выполнение задач, это лишь верхний лимит среднего значения времени.\nОграничение: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Глобальный лимит времени на тик сервера",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Максимум времени, которое может быть потрачено на выполнение задач за один тик, в \nмиллисекундах. \nМы вполне возможно выйдем за этот лимит, так как невозможно предсказать сколько\nвремени будет затрачено на выполнение задач, это лишь верхний лимит среднего значения времени.\nОграничение: > 1",
|
||||
"gui.computercraft.config.execution.tooltip": "Контролирует поведение выполнения задач компьютеров. Эта настройка преднезначается для \nтонкой настройки серверов, и в основном не должна быть изменена.",
|
||||
"gui.computercraft.config.floppy_space_limit": "Лимит места на дискетах (байты)",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "Лимит места для хранения информации на дискетах, в байтах.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Пропускная способность",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Глобальный лимит на скачивание",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Количество байтов, которое можно скачать за секунду. Все компьютеры делят эту пропускную способность. (байты в секунду)\nОграничение: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Глобальный лимит загрузки",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Количество байтов, которое можно загрузить за секунду. Все компьютеры делят эту пропускную способность. (байты в секунду)\nОграничение: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.tooltip": "Ограничивает пропускную способность, используемую компьютерами.",
|
||||
"gui.computercraft.config.http.enabled": "Включить HTTP API",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Включить API \"http\" на Компьютерах. Это также отключает программы \"pastebin\" и \"wget\", \nкоторые нужны многим пользователям. Рекомендуется оставить это включенным и использовать \nконфиг \"rules\" для более тонкой настройки.",
|
||||
"gui.computercraft.config.http.max_requests": "Максимум одновременных запросов",
|
||||
"gui.computercraft.config.http.max_requests.tooltip": "Количество http-запросов, которые компьютер может сделать одновременно. Дополнительные запросы \nбудут поставлены в очередь, и отправлены когда существующие запросы будут выполнены. Установите на 0 для \nнеограниченных запросов.\nОграничение: > 0",
|
||||
"gui.computercraft.config.http.max_websockets": "Максимум одновременных веб-сокетов",
|
||||
"gui.computercraft.config.http.max_websockets.tooltip": "Количество одновременно открытых веб-сокетов, которые может иметь компьютер. Установите на 0 для неограниченных веб-сокетов.\nОграничение: > 1",
|
||||
"gui.computercraft.config.http.proxy": "Proxy",
|
||||
"gui.computercraft.config.http.proxy.host": "Имя хоста",
|
||||
"gui.computercraft.config.http.proxy.host.tooltip": "Имя хоста или IP-адрес прокси-сервера.",
|
||||
"gui.computercraft.config.http.proxy.port": "Порт",
|
||||
"gui.computercraft.config.http.proxy.port.tooltip": "Порт прокси-сервера.\nДиапазон: 1 ~ 65536",
|
||||
"gui.computercraft.config.http.proxy.tooltip": "Туннелирует HTTP-запросы и запросы websocket через прокси-сервер. Влияет только на HTTP\nправила с параметром \"use_proxy\" в значении true (отключено по умолчанию).\nЕсли для прокси-сервера требуется аутентификация, создайте \"computercraft-proxy.pw\"\nфайл в том же каталоге, что и \"computercraft-server.toml\", содержащий имя\nпользователя и пароль, разделенные двоеточием, например \"myuser:mypassword\". Для\nпрокси-серверов SOCKS4 требуется только имя пользователя.",
|
||||
"gui.computercraft.config.http.proxy.type": "Тип прокси-сервера",
|
||||
"gui.computercraft.config.http.proxy.type.tooltip": "Тип используемого прокси-сервера.\nДопустимые значения: HTTP, HTTPS, SOCKS4, SOCKS5",
|
||||
"gui.computercraft.config.http.rules": "Разрешающие/запрещающие правила",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Список правил, которые контролируют поведение «http» API для определенных доменов или\nIP-адресов. Каждое правило представляет собой элемент с «узлом» для сопоставления и набором\nсвойств. Правила оцениваются по порядку, то есть более ранние правила перевешивают\nболее поздние.\nХост может быть доменным именем (\"pastebin.com\"), wildcard-сертификатом (\"*.pastebin.com\") или\nнотацией CIDR (\"127.0.0.0/8\").\nЕсли правил нет, домен блокируется.",
|
||||
"gui.computercraft.config.http.websocket_enabled": "Включить веб-сокеты",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Включить использование http веб-сокетов. Для этого необходимо, чтобы параметр «http_enable» был true.",
|
||||
"gui.computercraft.config.log_computer_errors": "Регистрировать ошибки компьютера",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Регистрировать исключения, вызванные периферийными устройствами и другими объектами Lua. Это облегчает\nдля авторам модов устранение проблем, но может привести к спаму в логах, если люди будут использовать\nглючные методы.",
|
||||
"gui.computercraft.config.maximum_open_files": "Максимальное количество файлов, открытых на одном компьютере",
|
||||
"gui.computercraft.config.term_sizes": "Размер терминала",
|
||||
"gui.computercraft.config.term_sizes.computer": "Компьютер",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Высота терминала",
|
||||
"gui.computercraft.config.term_sizes.computer.height.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "Размер терминала на компьютерах.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Ширина терминала",
|
||||
"gui.computercraft.config.term_sizes.computer.width.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Монитор",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Максимальная высота монитора",
|
||||
"gui.computercraft.config.term_sizes.monitor.height.tooltip": "Ограничение: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Максимальный размер мониторов (в блоках).",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Максимальная ширина мониторов",
|
||||
"gui.computercraft.config.term_sizes.monitor.width.tooltip": "Ограничение: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Высота терминала",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Ширина терминала",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.turtle": "Черепашки",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit": "Лимит топлива Продвинутых Черепашек",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit.tooltip": "Лимит топлива для Продвинутых Черепашек.\nОграничение: > 0",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Включить механику топлива",
|
||||
"gui.computercraft.config.turtle.need_fuel.tooltip": "Устанавливает, нуждаются ли Черепашки в топливе для передвижения.",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit": "Лимит топлива Черепашек",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit.tooltip": "Лимит топлива для Черепашек.\nОграничение: > 0",
|
||||
"gui.computercraft.config.turtle.tooltip": "Разные настройки, связанные с черепашками.",
|
||||
"gui.computercraft.pocket_computer_overlay": "Карманный компьютер открыт. Чтобы закрыть, нажми ESC.",
|
||||
"gui.computercraft.terminal": "Компьютерный терминал",
|
||||
"gui.computercraft.tooltip.computer_id": "Идентификатор компьютера: %s",
|
||||
"gui.computercraft.tooltip.copy": "Скопировано в Буфер обмена",
|
||||
"gui.computercraft.tooltip.disk_id": "Идентификатор диска: %s",
|
||||
@@ -157,8 +88,6 @@
|
||||
"gui.computercraft.upload.failed.name_too_long": "Названия файлов слишком длинны для загрузки.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Нельзя загрузить столько файлов.",
|
||||
"gui.computercraft.upload.failed.too_much": "Твои файлы слишком большие для загрузки.",
|
||||
"gui.computercraft.upload.no_response": "Перенос файлов",
|
||||
"gui.computercraft.upload.no_response.msg": "Ваш компьютер не использовал переданные вами файлы. Возможно, вам потребуется запустить программу %s и повторить попытку.",
|
||||
"item.computercraft.disk": "Дискета",
|
||||
"item.computercraft.pocket_computer_advanced": "Продвинутый карманный компьютер",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "Продвинутый %s карманный компьютер",
|
||||
@@ -169,17 +98,12 @@
|
||||
"item.computercraft.printed_pages": "Напечатанные страницы",
|
||||
"item.computercraft.treasure_disk": "Дискета",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.avg": "%s (среднее)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Задачи",
|
||||
"tracking_field.computercraft.count": "%s (количество)",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Сопрограмма создана",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Сопрограмма удалена",
|
||||
"tracking_field.computercraft.fs.name": "Операции с файловой системой",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP скачивания",
|
||||
"tracking_field.computercraft.http_requests.name": "HTTP запросы",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP загрузки",
|
||||
"tracking_field.computercraft.max": "%s (максимальное)",
|
||||
"tracking_field.computercraft.peripheral.name": "Вызовы периферийных устройств",
|
||||
"tracking_field.computercraft.server_tasks.name": "Серверные задачи",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Операции Черепашек",
|
||||
"tracking_field.computercraft.websocket_incoming.name": "Входящий Websocket",
|
||||
"tracking_field.computercraft.websocket_outgoing.name": "Исходящий Websocket",
|
||||
"upgrade.computercraft.speaker.adjective": "Шумящий",
|
||||
@@ -190,5 +114,86 @@
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Возделывающая",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Добывающая",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Копающая",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Боевая"
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Боевая",
|
||||
"gui.computercraft.pocket_computer_overlay": "Карманный компьютер открыт. Чтобы закрыть, нажми ESC.",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Требовать творческий режим и права оператора для взаимодействия с\nкомандными компьютерами. Это поведение по умолчанию для Командных блоков ванильной игры.",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Разделенный запятыми список системных настроек по умолчанию на новых компьютерах.\nНапример: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\nотключит всё автодополнение.",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Устанавливает количество потоков, на которых работают компьютеры. Большее число\nозначает, что больше компьютеров сможет работать одновременно, но может привести к лагу.\nОбратите внимание, что некоторые моды могут не работать с более чем одним потоком. Используйте с осторожностью.\nОграничение: > 1",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Идеальный максимум времени, которое отведено компьютеру на выполнение задач, в миллисекундах.\nМы вполне возможно выйдем за этот лимит, так как невозможно предсказать сколько\nвремени будет затрачено на выполнение задач, это лишь верхний лимит среднего значения времени.\nОграничение: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Максимум времени, которое может быть потрачено на выполнение задач за один тик, в \nмиллисекундах. \nМы вполне возможно выйдем за этот лимит, так как невозможно предсказать сколько\nвремени будет затрачено на выполнение задач, это лишь верхний лимит среднего значения времени.\nОграничение: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Глобальный лимит на скачивание",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Количество байтов, которое можно скачать за секунду. Все компьютеры делят эту пропускную способность. (байты в секунду)\nОграничение: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload.tooltip": "Количество байтов, которое можно загрузить за секунду. Все компьютеры делят эту пропускную способность. (байты в секунду)\nОграничение: > 1",
|
||||
"tracking_field.computercraft.http_requests.name": "HTTP запросы",
|
||||
"tracking_field.computercraft.turtle_ops.name": "Операции Черепашек",
|
||||
"gui.computercraft.config.http.enabled.tooltip": "Включить API \"http\" на Компьютерах. Это также отключает программы \"pastebin\" и \"wget\", \nкоторые нужны многим пользователям. Рекомендуется оставить это включенным и использовать \nконфиг \"rules\" для более тонкой настройки.",
|
||||
"gui.computercraft.config.http.max_websockets.tooltip": "Количество одновременно открытых веб-сокетов, которые может иметь компьютер. Установите на 0 для неограниченных веб-сокетов.\nОграничение: > 1",
|
||||
"gui.computercraft.config.term_sizes": "Размер терминала",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "Высота терминала",
|
||||
"gui.computercraft.config.term_sizes.monitor.height": "Максимальная высота монитора",
|
||||
"gui.computercraft.config.term_sizes.monitor.width.tooltip": "Ограничение: 1 ~ 32",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit": "Лимит топлива Продвинутых Черепашек",
|
||||
"gui.computercraft.config.turtle.need_fuel.tooltip": "Устанавливает, нуждаются ли Черепашки в топливе для передвижения.",
|
||||
"gui.computercraft.terminal": "Компьютерный терминал",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Задачи",
|
||||
"tracking_field.computercraft.server_tasks.name": "Серверные задачи",
|
||||
"gui.computercraft.upload.no_response": "Перенос файлов",
|
||||
"tracking_field.computercraft.avg": "%s (среднее)",
|
||||
"gui.computercraft.config.command_require_creative": "Для использования командных компьютеров нужен творческий режим",
|
||||
"gui.computercraft.config.computer_space_limit": "Лимит места на компьютерах (в байтах)",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Лимит места на дисках компьютеров и черепашек, в байтах.",
|
||||
"gui.computercraft.config.default_computer_settings": "Настройки Компьютера по умолчанию",
|
||||
"gui.computercraft.config.disable_lua51_features": "Отключить функции Lua 5.1",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Поставьте, чтобы отключить функции из Lua 5.1, которые будут убраны в будущих\nобновлениях. Полезно для того, чтобы улучшить совместимость вперед ваших программ.",
|
||||
"gui.computercraft.config.execution": "Выполнение",
|
||||
"gui.computercraft.config.execution.computer_threads": "Потоки компьютера",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Глобальный лимит времени на тик сервера",
|
||||
"gui.computercraft.config.execution.tooltip": "Контролирует поведение выполнения задач компьютеров. Эта настройка преднезначается для \nтонкой настройки серверов, и в основном не должна быть изменена.",
|
||||
"gui.computercraft.config.floppy_space_limit": "Лимит места на дискетах (байты)",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "Лимит места для хранения информации на дискетах, в байтах.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Пропускная способность",
|
||||
"gui.computercraft.config.http.bandwidth.global_upload": "Глобальный лимит загрузки",
|
||||
"gui.computercraft.config.http.bandwidth.tooltip": "Ограничивает пропускную способность, используемую компьютерами.",
|
||||
"gui.computercraft.config.http.enabled": "Включить HTTP API",
|
||||
"gui.computercraft.config.http.max_requests": "Максимум одновременных запросов",
|
||||
"gui.computercraft.config.http.max_requests.tooltip": "Количество http-запросов, которые компьютер может сделать одновременно. Дополнительные запросы \nбудут поставлены в очередь, и отправлены когда существующие запросы будут выполнены. Установите на 0 для \nнеограниченных запросов.\nОграничение: > 0",
|
||||
"gui.computercraft.config.http.max_websockets": "Максимум одновременных веб-сокетов",
|
||||
"gui.computercraft.config.term_sizes.computer": "Компьютер",
|
||||
"gui.computercraft.config.term_sizes.computer.height.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "Размер терминала на компьютерах.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "Ширина терминала",
|
||||
"gui.computercraft.config.term_sizes.computer.width.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.monitor": "Монитор",
|
||||
"gui.computercraft.config.term_sizes.monitor.height.tooltip": "Ограничение: 1 ~ 32",
|
||||
"gui.computercraft.config.term_sizes.monitor.tooltip": "Максимальный размер мониторов (в блоках).",
|
||||
"gui.computercraft.config.term_sizes.monitor.width": "Максимальная ширина мониторов",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "Высота терминала",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "Ширина терминала",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width.tooltip": "Ограничение: 1 ~ 255",
|
||||
"gui.computercraft.config.turtle": "Черепашки",
|
||||
"gui.computercraft.config.turtle.advanced_fuel_limit.tooltip": "Лимит топлива для Продвинутых Черепашек.\nОграничение: > 0",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Включить механику топлива",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit": "Лимит топлива Черепашек",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit.tooltip": "Лимит топлива для Черепашек.\nОграничение: > 0",
|
||||
"gui.computercraft.config.turtle.tooltip": "Разные настройки, связанные с черепашками.",
|
||||
"gui.computercraft.config.http.proxy.port": "Порт",
|
||||
"gui.computercraft.config.http.proxy.port.tooltip": "Порт прокси-сервера.\nДиапазон: 1 ~ 65536",
|
||||
"gui.computercraft.config.http.proxy.host": "Имя хоста",
|
||||
"gui.computercraft.config.http.proxy": "Proxy",
|
||||
"gui.computercraft.config.http.proxy.host.tooltip": "Имя хоста или IP-адрес прокси-сервера.",
|
||||
"gui.computercraft.config.http.proxy.tooltip": "Туннелирует HTTP-запросы и запросы websocket через прокси-сервер. Влияет только на HTTP\nправила с параметром \"use_proxy\" в значении true (отключено по умолчанию).\nЕсли для прокси-сервера требуется аутентификация, создайте \"computercraft-proxy.pw\"\nфайл в том же каталоге, что и \"computercraft-server.toml\", содержащий имя\nпользователя и пароль, разделенные двоеточием, например \"myuser:mypassword\". Для\nпрокси-серверов SOCKS4 требуется только имя пользователя.",
|
||||
"gui.computercraft.config.http.proxy.type": "Тип прокси-сервера",
|
||||
"gui.computercraft.config.http.proxy.type.tooltip": "Тип используемого прокси-сервера.\nДопустимые значения: HTTP, HTTPS, SOCKS4, SOCKS5",
|
||||
"gui.computercraft.upload.no_response.msg": "Ваш компьютер не использовал переданные вами файлы. Возможно, вам потребуется запустить программу %s и повторить попытку.",
|
||||
"tracking_field.computercraft.max": "%s (максимальное)",
|
||||
"tracking_field.computercraft.count": "%s (количество)",
|
||||
"gui.computercraft.config.http.rules": "Разрешающие/запрещающие правила",
|
||||
"gui.computercraft.config.http.websocket_enabled": "Включить веб-сокеты",
|
||||
"gui.computercraft.config.http.websocket_enabled.tooltip": "Включить использование http веб-сокетов. Для этого необходимо, чтобы параметр «http_enable» был true.",
|
||||
"gui.computercraft.config.log_computer_errors": "Регистрировать ошибки компьютера",
|
||||
"gui.computercraft.config.log_computer_errors.tooltip": "Регистрировать исключения, вызванные периферийными устройствами и другими объектами Lua. Это облегчает\nдля авторам модов устранение проблем, но может привести к спаму в логах, если люди будут использовать\nглючные методы.",
|
||||
"gui.computercraft.config.maximum_open_files": "Максимальное количество файлов, открытых на одном компьютере",
|
||||
"gui.computercraft.config.http.rules.tooltip": "Список правил, которые контролируют поведение «http» API для определенных доменов или\nIP-адресов. Каждое правило представляет собой элемент с «узлом» для сопоставления и набором\nсвойств. Правила оцениваются по порядку, то есть более ранние правила перевешивают\nболее поздние.\nХост может быть доменным именем (\"pastebin.com\"), wildcard-сертификатом (\"*.pastebin.com\") или\nнотацией CIDR (\"127.0.0.0/8\").\nЕсли правил нет, домен блокируется."
|
||||
}
|
||||
|
@@ -27,7 +27,6 @@
|
||||
"commands.computercraft.desc": "/computercraft kommandot tillhandahåller olika felsöknings- och administrationsverktyg för att kontrollera och interagera med datorer.",
|
||||
"commands.computercraft.dump.action": "Visa mer information om den här datorn",
|
||||
"commands.computercraft.dump.desc": "Visa status för alla datorer eller specifik information för en dator. Du kan ange en dators instans-id (t.ex. 123), dator-id (t.ex. #123) eller etikett (t.ex. \"@Min dator\").",
|
||||
"commands.computercraft.dump.open_path": "Visa den här datorns filer",
|
||||
"commands.computercraft.dump.synopsis": "Visa status för datorer.",
|
||||
"commands.computercraft.generic.additional_rows": "%d ytterligare rader…",
|
||||
"commands.computercraft.generic.exception": "Ohanterat felfall (%s)",
|
||||
@@ -41,6 +40,9 @@
|
||||
"commands.computercraft.help.synopsis": "Tillhandahåll hjälp för ett specifikt kommando",
|
||||
"commands.computercraft.queue.desc": "Skicka ett computer_command event till en kommandodator, skicka vidare ytterligare argument. Detta är mestadels utformat för kartmarkörer som fungerar som en mer datorvänlig version av /trigger. Alla spelare kan köra kommandot, vilket sannolikt skulle göras genom en textkomponents klick-event.",
|
||||
"commands.computercraft.queue.synopsis": "Skicka ett computer_command event till en kommandodator",
|
||||
"commands.computercraft.reload.desc": "Ladda om ComputerCrafts konfigurationsfil",
|
||||
"commands.computercraft.reload.done": "Konfiguration omladdad",
|
||||
"commands.computercraft.reload.synopsis": "Ladda om ComputerCrafts konfigurationsfil",
|
||||
"commands.computercraft.shutdown.desc": "Stäng av de listade datorerna eller alla om ingen anges. Du kan ange en dators instans-id (t.ex. 123), dator-id (t.ex. #123) eller etikett (t.ex. \"@Min dator\").",
|
||||
"commands.computercraft.shutdown.done": "Stängde av %s/%s datorer",
|
||||
"commands.computercraft.shutdown.synopsis": "Stäng av datorer på distans.",
|
||||
@@ -94,22 +96,9 @@
|
||||
"gui.computercraft.config.turtle.can_push": "Turtles kan putta entiteter",
|
||||
"gui.computercraft.config.turtle.need_fuel": "Aktivera bränsle",
|
||||
"gui.computercraft.config.turtle.normal_fuel_limit": "Turtle bränslegräns",
|
||||
"gui.computercraft.pocket_computer_overlay": "Fickdator öppen. Tryck ESC för att stänga.",
|
||||
"gui.computercraft.tooltip.computer_id": "Dator-ID: %s",
|
||||
"gui.computercraft.tooltip.copy": "Kopiera till urklipp",
|
||||
"gui.computercraft.tooltip.disk_id": "Diskett-ID: %s",
|
||||
"gui.computercraft.tooltip.terminate": "Stoppa aktuellt körande kod",
|
||||
"gui.computercraft.tooltip.terminate.key": "Håll ned Ctrl+T",
|
||||
"gui.computercraft.tooltip.turn_off": "Stäng av den här datorn",
|
||||
"gui.computercraft.tooltip.turn_off.key": "Håll ned Ctrl+S",
|
||||
"gui.computercraft.tooltip.turn_on": "Slå på den här datorn",
|
||||
"gui.computercraft.upload.failed": "Uppladdning misslyckad",
|
||||
"gui.computercraft.upload.failed.computer_off": "Du måste slå på datorn innan du kan ladda upp filer.",
|
||||
"gui.computercraft.upload.failed.corrupted": "Några filer skadades vid uppladdningen. Vänligen försök igen.",
|
||||
"gui.computercraft.upload.failed.generic": "Filuppladdningen misslyckades (%s)",
|
||||
"gui.computercraft.upload.failed.name_too_long": "Filnamnen är för långa för att laddas upp.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Det går inte ladda upp så här många filer.",
|
||||
"gui.computercraft.upload.failed.too_much": "Dina filer är för stora för att laddas upp.",
|
||||
"item.computercraft.disk": "Diskett",
|
||||
"item.computercraft.pocket_computer_advanced": "Avancerad Fickdator",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "Avancerad %s Fickdator",
|
||||
@@ -120,6 +109,8 @@
|
||||
"item.computercraft.printed_pages": "Utskrivna Sidor",
|
||||
"item.computercraft.treasure_disk": "Diskett",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Coroutines skapade",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Coroutines borttagna",
|
||||
"tracking_field.computercraft.fs.name": "Filsystemoperationer",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP-nedladdning",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP-uppladdning",
|
||||
@@ -134,5 +125,19 @@
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Odlande",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Brytande",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Grävande",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Närstridande"
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Närstridande",
|
||||
"gui.computercraft.tooltip.turn_on": "Slå på den här datorn",
|
||||
"commands.computercraft.dump.open_path": "Visa den här datorns filer",
|
||||
"gui.computercraft.tooltip.terminate": "Stoppa aktuellt körande kod",
|
||||
"gui.computercraft.tooltip.terminate.key": "Håll ned Ctrl+T",
|
||||
"gui.computercraft.tooltip.turn_off": "Stäng av den här datorn",
|
||||
"gui.computercraft.tooltip.turn_off.key": "Håll ned Ctrl+S",
|
||||
"gui.computercraft.upload.failed": "Uppladdning misslyckad",
|
||||
"gui.computercraft.upload.failed.computer_off": "Du måste slå på datorn innan du kan ladda upp filer.",
|
||||
"gui.computercraft.upload.failed.too_much": "Dina filer är för stora för att laddas upp.",
|
||||
"gui.computercraft.upload.failed.corrupted": "Några filer skadades vid uppladdningen. Vänligen försök igen.",
|
||||
"gui.computercraft.upload.failed.generic": "Filuppladdningen misslyckades (%s)",
|
||||
"gui.computercraft.upload.failed.name_too_long": "Filnamnen är för långa för att laddas upp.",
|
||||
"gui.computercraft.upload.failed.too_many_files": "Det går inte ladda upp så här många filer.",
|
||||
"gui.computercraft.pocket_computer_overlay": "Fickdator öppen. Tryck ESC för att stänga."
|
||||
}
|
||||
|
@@ -1,123 +1,128 @@
|
||||
{
|
||||
"argument.computercraft.argument_expected": "mi wile e ijo",
|
||||
"argument.computercraft.computer.many_matching": "mi alasa e ilo sona mute pi nimi '%s' (ijo %s)",
|
||||
"argument.computercraft.computer.no_matching": "mi ken ala alasa e ilo sona pi nimi '%s'",
|
||||
"argument.computercraft.tracking_field.no_field": "mi sona ala e nimi '%s'",
|
||||
"block.computercraft.cable": "linja toki",
|
||||
"block.computercraft.computer_advanced": "ilo sona wawa",
|
||||
"block.computercraft.computer_command": "ilo sona pi toki wawa",
|
||||
"block.computercraft.computer_normal": "ilo sona",
|
||||
"block.computercraft.disk_drive": "tomo pi lipu sona",
|
||||
"block.computercraft.monitor_advanced": "ilo lukin wawa",
|
||||
"block.computercraft.monitor_normal": "ilo lukin",
|
||||
"block.computercraft.printer": "ilo sitelen",
|
||||
"block.computercraft.monitor_normal": "ilo lukin",
|
||||
"block.computercraft.monitor_advanced": "ilo lukin wawa",
|
||||
"block.computercraft.speaker": "ilo kalama",
|
||||
"commands.computercraft.generic.exception": "pakala awen ala (%s)",
|
||||
"block.computercraft.computer_command": "ilo sona pi toki wawa",
|
||||
"block.computercraft.turtle_advanced": "ilo sona pali wawa",
|
||||
"block.computercraft.turtle_advanced.upgraded": "ilo sona pali wawa (%s)",
|
||||
"block.computercraft.turtle_advanced.upgraded_twice": "ilo sona pali wawa (%s, %s)",
|
||||
"block.computercraft.turtle_normal": "ilo sona pali",
|
||||
"block.computercraft.computer_advanced": "ilo sona wawa",
|
||||
"block.computercraft.computer_normal": "ilo sona",
|
||||
"argument.computercraft.argument_expected": "mi wile e ijo",
|
||||
"block.computercraft.turtle_advanced.upgraded": "ilo sona pali wawa (%s)",
|
||||
"block.computercraft.turtle_normal.upgraded": "ilo sona pali (%s)",
|
||||
"block.computercraft.turtle_normal.upgraded_twice": "ilo sona pali (%s, %s)",
|
||||
"block.computercraft.wired_modem": "ilo toki linja",
|
||||
"block.computercraft.wired_modem_full": "ilo toki linja",
|
||||
"block.computercraft.wireless_modem_advanced": "ilo toki pi ma End",
|
||||
"block.computercraft.wireless_modem_normal": "ilo toki linja ala",
|
||||
"commands.computercraft.dump.action": "o lukin e sona mute pi ilo sona ni",
|
||||
"commands.computercraft.generic.no_position": "<lon ala>",
|
||||
"chat.computercraft.wired_modem.peripheral_connected": "ijo sona \"%s\" li linja tawa kulupu",
|
||||
"chat.computercraft.wired_modem.peripheral_disconnected": "ijo sona \"%s\" li linja ala tawa kulupu",
|
||||
"commands.computercraft.desc": "ilo sona la, toki wawa /computercraft li lawa li luka li pakala ala.",
|
||||
"commands.computercraft.dump.action": "o lukin e sona mute pi ilo sona ni",
|
||||
"commands.computercraft.dump.desc": "sona pi ilo sona la, mi pana e ale anu wan. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123) anu nimi (sama \"@ilo sona mi\").",
|
||||
"block.computercraft.wired_modem": "ilo toki linja",
|
||||
"block.computercraft.wired_modem_full": "ilo toki linja",
|
||||
"block.computercraft.wireless_modem_normal": "ilo toki linja ala",
|
||||
"commands.computercraft.generic.additional_rows": "mute %d…",
|
||||
"argument.computercraft.computer.no_matching": "mi ken ala alasa e ilo sona pi nimi '%s'",
|
||||
"commands.computercraft.dump.open_path": "o lukin e lipu pi ilo sona ni",
|
||||
"commands.computercraft.dump.synopsis": "mi pana e sona pi ilo sona.",
|
||||
"commands.computercraft.generic.additional_rows": "mute %d…",
|
||||
"commands.computercraft.generic.exception": "pakala awen ala (%s)",
|
||||
"commands.computercraft.generic.no_position": "<lon ala>",
|
||||
"block.computercraft.cable": "linja toki",
|
||||
"block.computercraft.wireless_modem_advanced": "ilo toki pi ma End",
|
||||
"commands.computercraft.generic.position": "%s, %s, %s",
|
||||
"commands.computercraft.help.desc": "mi pana e toki ni",
|
||||
"commands.computercraft.help.no_children": "toki wawa '%s' li jo ala e toki wawa insa",
|
||||
"commands.computercraft.help.no_command": "toki wawa '%s' li lon ala",
|
||||
"commands.computercraft.help.desc": "mi pana e toki ni",
|
||||
"commands.computercraft.help.synopsis": "mi pana e sona pi toki wawa ale",
|
||||
"commands.computercraft.queue.synopsis": "mi pana e toki computer_command tawa ilo sona pi toki wawa",
|
||||
"commands.computercraft.shutdown.desc": "mi pini e ilo sona pi pana sina anu ale. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123) anu nimi (sama \"@ilo sona mi\").",
|
||||
"commands.computercraft.reload.done": "mi kama open sin e ante nasin",
|
||||
"commands.computercraft.shutdown.done": "mi kama pini e ilo sona %s/%s",
|
||||
"commands.computercraft.shutdown.synopsis": "mi pini weka e ilo sona.",
|
||||
"commands.computercraft.queue.synopsis": "mi pana e toki computer_command tawa ilo sona pi toki wawa",
|
||||
"commands.computercraft.tp.desc": "o tawa ilo sona. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123).",
|
||||
"commands.computercraft.synopsis": "mi jo e toki wawa ante tawa ni: sina lawa e ilo sona.",
|
||||
"commands.computercraft.tp.action": "o tawa pi ilo sona",
|
||||
"commands.computercraft.tp.desc": "o tawa ilo sona. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123).",
|
||||
"commands.computercraft.tp.not_player": "jan ala la, mi ken ala open e sitelen pi ilo sona",
|
||||
"commands.computercraft.tp.not_there": "mi ken ala alasa e ilo sona pi lon ma",
|
||||
"commands.computercraft.tp.synopsis": "mi tawa pi ilo sona e sina.",
|
||||
"commands.computercraft.track.desc": "ilo sona la, mi sitelen e tenpo pali e mute toki. toki wawa /forge track la, mi pana pi nasin sama e sona. mi pona tawa alasa pi tenpo ike.",
|
||||
"commands.computercraft.track.dump.computer": "ilo sona",
|
||||
"commands.computercraft.track.dump.desc": "mi pana e sona tan sitelen sona pi sin mute.",
|
||||
"commands.computercraft.tp.synopsis": "mi tawa pi ilo sona e sina.",
|
||||
"commands.computercraft.tp.not_there": "mi ken ala alasa e ilo sona pi lon ma",
|
||||
"commands.computercraft.track.desc": "ilo sona la, mi sitelen e tenpo pali e mute toki. toki wawa /forge track la, mi pana pi nasin sama e sona. mi pona tawa alasa pi tenpo ike.",
|
||||
"commands.computercraft.track.dump.no_timings": "mi ken ala alasa e tenpo",
|
||||
"commands.computercraft.track.dump.synopsis": "mi pana e sona tan sitelen sona pi sin mute",
|
||||
"commands.computercraft.track.start.desc": "ilo sona la, mi open sitelen sona e tenpo pali e mute toki. mi weka e sitelen sona pini.",
|
||||
"commands.computercraft.track.start.stop": "o toki wawa %s tawa ni: sina pini sitelen sona. sina lukin e sona ni",
|
||||
"commands.computercraft.track.stop.synopsis": "mi pini e sitelen sona ale",
|
||||
"commands.computercraft.track.start.synopsis": "mi open sitelen sona e ilo sona ale",
|
||||
"commands.computercraft.track.stop.action": "o luka tawa ni: mi pini sitelen sona",
|
||||
"commands.computercraft.track.stop.desc": "ilo sona la, mi pini sitelen sona e tenpo pali e mute toki",
|
||||
"commands.computercraft.track.stop.not_enabled": "tenpo ni la, mi sitelen ala sona e ilo sona",
|
||||
"commands.computercraft.track.stop.synopsis": "mi pini e sitelen sona ale",
|
||||
"commands.computercraft.track.dump.synopsis": "mi pana e sona tan sitelen sona pi sin mute",
|
||||
"commands.computercraft.track.stop.desc": "ilo sona la, mi pini sitelen sona e tenpo pali e mute toki",
|
||||
"commands.computercraft.track.synopsis": "mi sitelen tenpo pali e ilo sona.",
|
||||
"commands.computercraft.turn_on.desc": "mi open e ilo sona pi pana sina. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123) anu nimi (sama \"@ilo sona mi\").",
|
||||
"commands.computercraft.track.dump.desc": "mi pana e sona tan sitelen sona pi sin mute.",
|
||||
"commands.computercraft.view.action": "o lukin e ilo sona ni",
|
||||
"commands.computercraft.view.synopsis": "o lukin e sitelen pi ilo sona.",
|
||||
"commands.computercraft.turn_on.done": "mi kama open e ilo sona %s/%s",
|
||||
"commands.computercraft.turn_on.synopsis": "mi open weka e ilo sona.",
|
||||
"commands.computercraft.view.action": "o lukin e ilo sona ni",
|
||||
"commands.computercraft.view.desc": "mi open e sitelen pi ilo sona tawa ni: sina lawa weka e ilo sona. taso, sina ken ala open e jo pi ilo sona pali. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123).",
|
||||
"commands.computercraft.view.not_player": "jan ala la, mi ken ala open e sitelen pi ilo sona",
|
||||
"commands.computercraft.view.synopsis": "o lukin e sitelen pi ilo sona.",
|
||||
"gui.computercraft.config.command_require_creative": "ilo sona pi toki wawa li wile e jan sewi",
|
||||
"gui.computercraft.config.disable_lua51_features": "ijo pona pi ilo Lua 5.1 li weka",
|
||||
"gui.computercraft.config.execution": "pali",
|
||||
"gui.computercraft.config.execution.computer_threads": "linja pi ilo sona",
|
||||
"gui.computercraft.config.http": "ijo HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "mute sona",
|
||||
"gui.computercraft.config.http": "ijo HTTP",
|
||||
"gui.computercraft.config.execution": "pali",
|
||||
"gui.computercraft.config.monitor_renderer": "nasin sitelen pi ilo lukin",
|
||||
"gui.computercraft.config.peripheral": "ijo sona",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range": "suli ken ilo pi ilo toki (sewi mute)",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm": "suli ken ilo pi ilo toki (sewi mute, sewi ike)",
|
||||
"gui.computercraft.config.peripheral.modem_range": "suli ken ilo pi ilo toki (pona)",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm": "suli ken ilo pi ilo toki (sewi ike)",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth": "mute sona pi ilo lukin",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "suli poka pi ilo sitelen",
|
||||
"gui.computercraft.config.term_sizes": "suli pi ilo sitelen",
|
||||
"gui.computercraft.config.term_sizes.computer": "ilo sona",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "suli sewi pi ilo sitelen",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "suli pi ilo sitelen pi ilo sona.",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "suli poka pi ito sitelen",
|
||||
"gui.computercraft.config.term_sizes.monitor": "ilo lukin",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer": "ilo sona lili",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.height": "suli sewi pi ilo sitelen",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.tooltip": "suli pi ilo sitelen pi ilo sona lili.",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.width": "suli poka pi ilo sitelen",
|
||||
"gui.computercraft.config.turtle": "ilo sona pali",
|
||||
"gui.computercraft.pocket_computer_overlay": "sina open e ilo sona lili. o luka e nena ESC tawa pini.",
|
||||
"gui.computercraft.terminal": "ilo sitelen pi ilo sona",
|
||||
"gui.computercraft.tooltip.computer_id": "nanpa pi ilo sona: %s",
|
||||
"gui.computercraft.tooltip.disk_id": "nanpa pi lipu sona: %s",
|
||||
"gui.computercraft.tooltip.turn_off": "o pini e ilo sona ni",
|
||||
"gui.computercraft.config.term_sizes.computer.height": "suli sewi pi ilo sitelen",
|
||||
"gui.computercraft.config.term_sizes.computer.width": "suli poka pi ito sitelen",
|
||||
"gui.computercraft.config.term_sizes.computer.tooltip": "suli pi ilo sitelen pi ilo sona.",
|
||||
"gui.computercraft.config.peripheral.monitor_bandwidth": "mute sona pi ilo lukin",
|
||||
"gui.computercraft.config.peripheral.modem_range": "suli ken ilo pi ilo toki (pona)",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range": "suli ken ilo pi ilo toki (sewi mute)",
|
||||
"item.computercraft.printed_page": "lipu pi ilo sitelen",
|
||||
"item.computercraft.printed_pages": "lipu mute pi ilo sitelen",
|
||||
"item.computercraft.treasure_disk": "lipu sona",
|
||||
"gui.computercraft.tooltip.turn_on": "o open e ilo sona ni",
|
||||
"item.computercraft.disk": "lipu sona",
|
||||
"gui.computercraft.tooltip.computer_id": "nanpa pi ilo sona: %s",
|
||||
"gui.computercraft.tooltip.turn_off": "o pini e ilo sona ni",
|
||||
"item.computercraft.pocket_computer_advanced": "ilo sona lili wawa",
|
||||
"item.computercraft.pocket_computer_advanced.upgraded": "ilo sona lili wawa (%s)",
|
||||
"item.computercraft.pocket_computer_normal": "ilo sona lili",
|
||||
"item.computercraft.pocket_computer_normal.upgraded": "ilo sona lili (%s)",
|
||||
"item.computercraft.printed_book": "lipu suli pi ilo sitelen",
|
||||
"item.computercraft.printed_page": "lipu pi ilo sitelen",
|
||||
"item.computercraft.printed_pages": "lipu mute pi ilo sitelen",
|
||||
"item.computercraft.treasure_disk": "lipu sona",
|
||||
"gui.computercraft.terminal": "ilo sitelen pi ilo sona",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.computer_tasks.name": "pali",
|
||||
"tracking_field.computercraft.count": "%s (mute)",
|
||||
"tracking_field.computercraft.max": "%s (sewi)",
|
||||
"tracking_field.computercraft.turtle_ops.name": "pali pi ilo sona pali",
|
||||
"upgrade.computercraft.speaker.adjective": "kalama",
|
||||
"upgrade.computercraft.wireless_modem_advanced.adjective": "toki pi ma End",
|
||||
"upgrade.computercraft.wireless_modem_normal.adjective": "toki linja ala",
|
||||
"tracking_field.computercraft.count": "%s (mute)",
|
||||
"tracking_field.computercraft.coroutines_created.name": "open linja",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "pini linja",
|
||||
"tracking_field.computercraft.max": "%s (sewi)",
|
||||
"upgrade.minecraft.crafting_table.adjective": "pali",
|
||||
"upgrade.minecraft.diamond_axe.adjective": "ilo kipisi",
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "ilo kasi",
|
||||
"upgrade.computercraft.wireless_modem_normal.adjective": "toki linja ala",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "ilo pakala",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "ilo ma",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "utala"
|
||||
"upgrade.minecraft.diamond_sword.adjective": "utala",
|
||||
"block.computercraft.turtle_advanced.upgraded_twice": "ilo sona pali wawa (%s, %s)",
|
||||
"block.computercraft.turtle_normal.upgraded_twice": "ilo sona pali (%s, %s)",
|
||||
"gui.computercraft.config.turtle": "ilo sona pali",
|
||||
"item.computercraft.disk": "lipu sona",
|
||||
"item.computercraft.printed_book": "lipu suli pi ilo sitelen",
|
||||
"upgrade.computercraft.wireless_modem_advanced.adjective": "toki pi ma End",
|
||||
"gui.computercraft.tooltip.disk_id": "nanpa pi lipu sona: %s",
|
||||
"gui.computercraft.config.peripheral": "ijo sona",
|
||||
"gui.computercraft.config.peripheral.modem_range_during_storm": "suli ken ilo pi ilo toki (sewi ike)",
|
||||
"argument.computercraft.tracking_field.no_field": "mi sona ala e nimi '%s'",
|
||||
"argument.computercraft.computer.many_matching": "mi alasa e ilo sona mute pi nimi '%s' (ijo %s)",
|
||||
"commands.computercraft.desc": "ilo sona la, toki wawa /computercraft li lawa li luka li pakala ala.",
|
||||
"commands.computercraft.reload.desc": "mi open sin e ante nasin",
|
||||
"commands.computercraft.reload.synopsis": "mi open sin e ante nasin",
|
||||
"commands.computercraft.shutdown.desc": "mi pini e ilo sona pi pana sina anu ale. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123) anu nimi (sama \"@ilo sona mi\").",
|
||||
"gui.computercraft.config.term_sizes.pocket_computer.tooltip": "suli pi ilo sitelen pi ilo sona lili.",
|
||||
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm": "suli ken ilo pi ilo toki (sewi mute, sewi ike)",
|
||||
"gui.computercraft.pocket_computer_overlay": "sina open e ilo sona lili. o luka e nena ESC tawa pini.",
|
||||
"commands.computercraft.dump.desc": "sona pi ilo sona la, mi pana e ale anu wan. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123) anu nimi (sama \"@ilo sona mi\").",
|
||||
"commands.computercraft.turn_on.desc": "mi open e ilo sona pi pana sina. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123) anu nimi (sama \"@ilo sona mi\").",
|
||||
"commands.computercraft.track.start.stop": "o toki wawa %s tawa ni: sina pini sitelen sona. sina lukin e sona ni",
|
||||
"commands.computercraft.track.start.desc": "ilo sona la, mi open sitelen sona e tenpo pali e mute toki. mi weka e sitelen sona pini.",
|
||||
"commands.computercraft.view.desc": "mi open e sitelen pi ilo sona tawa ni: sina lawa weka e ilo sona. taso, sina ken ala open e jo pi ilo sona pali. ilo sona la, sina ken pana e nanpa pi ijo (sama 123) anu nanpa (sama #123).",
|
||||
"gui.computercraft.config.disable_lua51_features": "ijo pona pi ilo Lua 5.1 li weka"
|
||||
}
|
||||
|
@@ -41,6 +41,9 @@
|
||||
"commands.computercraft.help.synopsis": "Надає допомогу для конкретних команд",
|
||||
"commands.computercraft.queue.desc": "Надіслати подію computer_command до Командного комп'ютера через додаткові аргументи. В основному це призначено для Картоделів, діє як зручніша для користувача комп'ютерна версія /trigger. Будь-який гравець зможе запустити команду, яка, ймовірно, буде зроблена через події клацання текстового компонента.",
|
||||
"commands.computercraft.queue.synopsis": "Надіслати подію computer_command до Командного комп'ютера",
|
||||
"commands.computercraft.reload.desc": "Перезавантажує файл конфігурації ComputerCraft'a",
|
||||
"commands.computercraft.reload.done": "Конфігурація перезавантажена",
|
||||
"commands.computercraft.reload.synopsis": "Перезавантажити файл конфігурації ComputerCraft'a",
|
||||
"commands.computercraft.shutdown.desc": "Завершити роботу перерахованих комп'ютерів або всі, якщо жодного не вказано. Ви можете вказати ідентифікатор екземпляра комп'ютера (наприклад 123), ідентифікатор комп'ютера (наприклад #123) або позначку (наприклад, \"@My Computer\").",
|
||||
"commands.computercraft.shutdown.done": "У %s/%s комп'ютерів завершено роботу",
|
||||
"commands.computercraft.shutdown.synopsis": "Віддалено завершити роботу комп'ютерів.",
|
||||
@@ -70,28 +73,6 @@
|
||||
"commands.computercraft.view.desc": "Відкрити термінал комп'ютера, який дозволяє віддалено керувати комп'ютером. Це не надає доступу до інвентарів черепашок. Ви можете вказати або ідентифікатор екземпляра комп'ютера (наприклад, 123) або ідентифікатор комп'ютера (наприклад, #123).",
|
||||
"commands.computercraft.view.not_player": "Не можна відкрити термінал для не-гравця",
|
||||
"commands.computercraft.view.synopsis": "Переглянути термінал комп'ютера.",
|
||||
"gui.computercraft.config.command_require_creative": "Командний комп'ютер вимагає режиму творчості",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Для взаємодії з командним комп'ютером, гравець має бути в режимі\nтворчості. Це поведінка скопійована з поведінки за замовчуванням для командних блоків.",
|
||||
"gui.computercraft.config.computer_space_limit": "Обмеження комп'ютерного простору (в байтах)",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Обмеження на займаєме місце на диску комп'ютерами та черепахами, в байтах.",
|
||||
"gui.computercraft.config.default_computer_settings": "Налаштування комп'ютера за замовчуванням",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Список лашатувань за замовчуванням, розділених комою, що будуть нашалтовані на нових комп'ютерах\nНаприклад: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\nвідключить усі автодоповнення.",
|
||||
"gui.computercraft.config.disable_lua51_features": "Відключити підтримку Lua 5.1",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Включить це налаштування, якщо хочете відключити функціональність, пов'язану з Lua 5.1, яка буде вилучен в наступних оновленнях.\nТаким чином ви можете впевнитись, що ваші програми не зламаються від подальших оновлень.",
|
||||
"gui.computercraft.config.execution": "Виконання",
|
||||
"gui.computercraft.config.execution.computer_threads": "Потоки для комп'ютерів",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Встановлює кількість потоків, на яких запускаються комп'ютери. Більше число\nозначає більшу кількість комп'ютерів, які працюють паралельно, але може призвести до проблем із продуктивністю.\nЗауважте, що деякі модифікації можуть не працювати із кількістю потоків більше за 1. Використовуйте з обережністю.\nОбмеження: > 1",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Обмеження на час, який займає комп'ютер на сервері за один цикл",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Бажаний максимальний час, який комп'ютер може працювати за один цикл, в мілісекундах\nЗауважте, що досить ймовірно, що цей ліміт буде порушено, бо немає ніякої можливості\nсправді визначити, скільки комп'ютер займе часу - це значення буде ціллю для верхньої межі середнього часу виконання.\nОбмеження: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Обмеження на час виконання у один серверний цикл",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Бажаний максимальний час, який витрачається на виконання задач, в мілісекундах\nЗауважте, що досить ймовірно, що цей ліміт буде порушено, бо немає ніякої можливості\nсправді визначити, скільки комп'ютер займе часу - це значення буде ціллю для верхньої межі середнього часу виконання.\nОбмеження: > 1",
|
||||
"gui.computercraft.config.execution.tooltip": "Контролює те, як працюють комп'ютери. Цей розділ призначений\nдля детального налаштування серверів, і у більшості випадків його не потрібно чіпати.",
|
||||
"gui.computercraft.config.floppy_space_limit": "Обмеження розміру для дискети (в байтах)",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "Обмеження на розмір, що займається на диску дискетою, в байтах.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Трафік",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Глобальне обмеження на завантаження",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Число байтів, які можуть бути завантажені в хвилину. Це обмеження на всі комп'ютери відразу (байти в секунду)\nОбмеження: > 1",
|
||||
"gui.computercraft.pocket_computer_overlay": "Кишеньковий комп'ютер відкритий. Натисніть ESC, щоб закрити.",
|
||||
"gui.computercraft.tooltip.computer_id": "Ідентифікатор комп'ютера: %s",
|
||||
"gui.computercraft.tooltip.copy": "Скопійовано в Буфер обміну",
|
||||
@@ -118,6 +99,8 @@
|
||||
"item.computercraft.printed_pages": "Надруковані сторінки",
|
||||
"item.computercraft.treasure_disk": "Дискета",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Співпрограма створена",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Співпрограма видалена",
|
||||
"tracking_field.computercraft.fs.name": "Операції з файловою системою",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP завантаження",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP завантаження",
|
||||
@@ -132,5 +115,27 @@
|
||||
"upgrade.minecraft.diamond_hoe.adjective": "Обробна",
|
||||
"upgrade.minecraft.diamond_pickaxe.adjective": "Добувна",
|
||||
"upgrade.minecraft.diamond_shovel.adjective": "Копаюча",
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Бойова"
|
||||
"upgrade.minecraft.diamond_sword.adjective": "Бойова",
|
||||
"gui.computercraft.config.computer_space_limit": "Обмеження комп'ютерного простору (в байтах)",
|
||||
"gui.computercraft.config.default_computer_settings": "Налаштування комп'ютера за замовчуванням",
|
||||
"gui.computercraft.config.disable_lua51_features": "Відключити підтримку Lua 5.1",
|
||||
"gui.computercraft.config.execution": "Виконання",
|
||||
"gui.computercraft.config.execution.computer_threads": "Потоки для комп'ютерів",
|
||||
"gui.computercraft.config.execution.max_main_computer_time": "Обмеження на час, який займає комп'ютер на сервері за один цикл",
|
||||
"gui.computercraft.config.execution.max_main_computer_time.tooltip": "Бажаний максимальний час, який комп'ютер може працювати за один цикл, в мілісекундах\nЗауважте, що досить ймовірно, що цей ліміт буде порушено, бо немає ніякої можливості\nсправді визначити, скільки комп'ютер займе часу - це значення буде ціллю для верхньої межі середнього часу виконання.\nОбмеження: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time": "Обмеження на час виконання у один серверний цикл",
|
||||
"gui.computercraft.config.execution.tooltip": "Контролює те, як працюють комп'ютери. Цей розділ призначений\nдля детального налаштування серверів, і у більшості випадків його не потрібно чіпати.",
|
||||
"gui.computercraft.config.floppy_space_limit": "Обмеження розміру для дискети (в байтах)",
|
||||
"gui.computercraft.config.floppy_space_limit.tooltip": "Обмеження на розмір, що займається на диску дискетою, в байтах.",
|
||||
"gui.computercraft.config.http": "HTTP",
|
||||
"gui.computercraft.config.http.bandwidth": "Трафік",
|
||||
"gui.computercraft.config.http.bandwidth.global_download": "Глобальне обмеження на завантаження",
|
||||
"gui.computercraft.config.command_require_creative": "Командний комп'ютер вимагає режиму творчості",
|
||||
"gui.computercraft.config.command_require_creative.tooltip": "Для взаємодії з командним комп'ютером, гравець має бути в режимі\nтворчості. Це поведінка скопійована з поведінки за замовчуванням для командних блоків.",
|
||||
"gui.computercraft.config.computer_space_limit.tooltip": "Обмеження на займаєме місце на диску комп'ютерами та черепахами, в байтах.",
|
||||
"gui.computercraft.config.default_computer_settings.tooltip": "Список лашатувань за замовчуванням, розділених комою, що будуть нашалтовані на нових комп'ютерах\nНаприклад: \"shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false\"\nвідключить усі автодоповнення.",
|
||||
"gui.computercraft.config.disable_lua51_features.tooltip": "Включить це налаштування, якщо хочете відключити функціональність, пов'язану з Lua 5.1, яка буде вилучен в наступних оновленнях.\nТаким чином ви можете впевнитись, що ваші програми не зламаються від подальших оновлень.",
|
||||
"gui.computercraft.config.execution.computer_threads.tooltip": "Встановлює кількість потоків, на яких запускаються комп'ютери. Більше число\nозначає більшу кількість комп'ютерів, які працюють паралельно, але може призвести до проблем із продуктивністю.\nЗауважте, що деякі модифікації можуть не працювати із кількістю потоків більше за 1. Використовуйте з обережністю.\nОбмеження: > 1",
|
||||
"gui.computercraft.config.execution.max_main_global_time.tooltip": "Бажаний максимальний час, який витрачається на виконання задач, в мілісекундах\nЗауважте, що досить ймовірно, що цей ліміт буде порушено, бо немає ніякої можливості\nсправді визначити, скільки комп'ютер займе часу - це значення буде ціллю для верхньої межі середнього часу виконання.\nОбмеження: > 1",
|
||||
"gui.computercraft.config.http.bandwidth.global_download.tooltip": "Число байтів, які можуть бути завантажені в хвилину. Це обмеження на всі комп'ютери відразу (байти в секунду)\nОбмеження: > 1"
|
||||
}
|
||||
|
@@ -30,6 +30,8 @@
|
||||
"item.computercraft.printed_page": "Trang in",
|
||||
"item.computercraft.treasure_disk": "Đĩa mềm",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Coroutine đã tạo",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Coroutine bỏ đi",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP tải xuống",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP tải lên",
|
||||
"tracking_field.computercraft.websocket_incoming.name": "Websocket đến",
|
||||
|
@@ -39,6 +39,9 @@
|
||||
"commands.computercraft.help.synopsis": "为特定的命令提供帮助",
|
||||
"commands.computercraft.queue.desc": "发送computer_command事件到命令计算机,并传递其他参数. 这主要是为地图制作者设计的, 作为/trigger更加计算机友好的版本. 任何玩家都可以运行命令, 这很可能是通过文本组件的点击事件完成的.",
|
||||
"commands.computercraft.queue.synopsis": "将computer_command事件发送到命令计算机",
|
||||
"commands.computercraft.reload.desc": "重新加载ComputerCraft配置文件",
|
||||
"commands.computercraft.reload.done": "重新加载配置",
|
||||
"commands.computercraft.reload.synopsis": "重新加载ComputerCraft配置文件",
|
||||
"commands.computercraft.shutdown.desc": "关闭列出的计算机或全部计算机(如果未指定). 你可以指定计算机的实例id (例如. 123), 计算机id (例如. #123)或标签(例如. \"@My Computer\").",
|
||||
"commands.computercraft.shutdown.done": "关闭%s/%s计算机",
|
||||
"commands.computercraft.shutdown.synopsis": "远程关闭计算机.",
|
||||
@@ -108,6 +111,8 @@
|
||||
"item.computercraft.printed_pages": "打印纸",
|
||||
"item.computercraft.treasure_disk": "软盘",
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.coroutines_created.name": "协同创建",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "协同处理",
|
||||
"tracking_field.computercraft.fs.name": "文件系统操作",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP下载",
|
||||
"tracking_field.computercraft.http_upload.name": "HTTP上传",
|
||||
|
@@ -1,7 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:block/orientable",
|
||||
"parent": "minecraft:block/block",
|
||||
"render_type": "cutout",
|
||||
"computercraft:emissive_texture": "cursor",
|
||||
"textures": {
|
||||
"particle": "#front"
|
||||
},
|
||||
"display": {
|
||||
"firstperson_righthand": {
|
||||
"rotation": [ 0, 135, 0 ],
|
||||
"translation": [ 0, 0, 0 ],
|
||||
"scale": [ 0.40, 0.40, 0.40 ]
|
||||
}
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [ 0, 0, 0 ],
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"pack": {
|
||||
"pack_format": 12,
|
||||
"pack_format": 15,
|
||||
"description": "CC: Tweaked"
|
||||
}
|
||||
}
|
||||
|
@@ -36,6 +36,7 @@ import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import net.minecraft.world.inventory.CraftingContainer;
|
||||
import net.minecraft.world.inventory.MenuType;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.Recipe;
|
||||
@@ -96,12 +97,7 @@ public class TestPlatformHelper extends AbstractComputerCraftAPI implements Plat
|
||||
|
||||
@Override
|
||||
public boolean shouldLoadResource(JsonObject object) {
|
||||
throw new UnsupportedOperationException("Cannot use resource conditions");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRequiredModCondition(JsonObject object, String modId) {
|
||||
throw new UnsupportedOperationException("Cannot use resource conditions");
|
||||
throw new UnsupportedOperationException("Cannot use loot conditions");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -174,6 +170,11 @@ public class TestPlatformHelper extends AbstractComputerCraftAPI implements Plat
|
||||
throw new UnsupportedOperationException("Cannot interact with the world inside tests");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CreativeModeTab.Builder newCreativeModeTab() {
|
||||
throw new IllegalStateException("Cannot create creative tab inside tests");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecipeIngredients getRecipeIngredients() {
|
||||
throw new UnsupportedOperationException("Cannot query recipes inside tests");
|
||||
|
@@ -1,37 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
//
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package dan200.computercraft.shared.util;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/**
|
||||
* A couple of trivial tests for {@link ConsList}, mostly as a quick safety check.
|
||||
*/
|
||||
public class ConsListTest {
|
||||
@Test
|
||||
public void testGet() {
|
||||
var list = new ConsList<>(1, List.of(2, 3, 4));
|
||||
assertEquals(1, list.get(0));
|
||||
assertEquals(2, list.get(1));
|
||||
assertEquals(4, list.get(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSize() {
|
||||
var list = new ConsList<>(1, List.of(2, 3, 4));
|
||||
assertEquals(4, list.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIterator() {
|
||||
var list = new ConsList<>(1, List.of(2, 3, 4));
|
||||
assertArrayEquals(new Integer[]{ 1, 2, 3, 4 }, list.toArray(Integer[]::new));
|
||||
}
|
||||
}
|
@@ -130,7 +130,9 @@ public class Exporter {
|
||||
|
||||
dump.itemNames.put(location.toString(), stack.getHoverName().getString());
|
||||
renderer.captureRender(itemDir.resolve(location.getNamespace()).resolve(location.getPath() + ".png"),
|
||||
() -> Minecraft.getInstance().getItemRenderer().renderAndDecorateFakeItem(transform, stack, 0, 0)
|
||||
() -> {
|
||||
// TODO: Minecraft.getInstance().getItemRenderer().ren(transform, stack, 0, 0)
|
||||
}
|
||||
);
|
||||
}
|
||||
renderer.clearState();
|
||||
|
@@ -7,6 +7,7 @@ package dan200.computercraft.export;
|
||||
import com.mojang.blaze3d.pipeline.TextureTarget;
|
||||
import com.mojang.blaze3d.platform.NativeImage;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.VertexSorting;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.FogRenderer;
|
||||
import org.joml.Matrix4f;
|
||||
@@ -36,7 +37,7 @@ public class ImageRenderer implements AutoCloseable {
|
||||
|
||||
public void setupState() {
|
||||
projectionMatrix = RenderSystem.getProjectionMatrix();
|
||||
RenderSystem.setProjectionMatrix(new Matrix4f().identity().ortho(0, 16, 0, 16, 1000, 3000));
|
||||
RenderSystem.setProjectionMatrix(new Matrix4f().identity().ortho(0, 16, 0, 16, 1000, 3000), VertexSorting.DISTANCE_TO_ORIGIN);
|
||||
|
||||
var transform = RenderSystem.getModelViewStack();
|
||||
transform.pushPose();
|
||||
@@ -48,7 +49,7 @@ public class ImageRenderer implements AutoCloseable {
|
||||
|
||||
public void clearState() {
|
||||
if (projectionMatrix == null) throw new IllegalStateException("Not currently rendering");
|
||||
RenderSystem.setProjectionMatrix(projectionMatrix);
|
||||
RenderSystem.setProjectionMatrix(projectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN);
|
||||
RenderSystem.getModelViewStack().popPose();
|
||||
}
|
||||
|
||||
|
@@ -58,36 +58,36 @@ class CCTestCommand {
|
||||
|
||||
.then(literal("marker").executes(context -> {
|
||||
var player = context.getSource().getPlayerOrException();
|
||||
var pos = StructureUtils.findNearestStructureBlock(player.blockPosition(), 15, player.getLevel());
|
||||
var pos = StructureUtils.findNearestStructureBlock(player.blockPosition(), 15, player.serverLevel());
|
||||
if (pos == null) return error(context.getSource(), "No nearby test");
|
||||
|
||||
var structureBlock = (StructureBlockEntity) player.getLevel().getBlockEntity(pos);
|
||||
var structureBlock = (StructureBlockEntity) player.level().getBlockEntity(pos);
|
||||
if (structureBlock == null) return error(context.getSource(), "No nearby structure block");
|
||||
var info = GameTestRegistry.getTestFunction(structureBlock.getStructurePath());
|
||||
|
||||
// Kill the existing armor stand
|
||||
player
|
||||
.getLevel().getEntities(EntityType.ARMOR_STAND, x -> x.isAlive() && x.getName().getString().equals(info.getTestName()))
|
||||
.serverLevel().getEntities(EntityType.ARMOR_STAND, x -> x.isAlive() && x.getName().getString().equals(info.getTestName()))
|
||||
.forEach(Entity::kill);
|
||||
|
||||
// And create a new one
|
||||
var nbt = new CompoundTag();
|
||||
nbt.putBoolean("Marker", true);
|
||||
nbt.putBoolean("Invisible", true);
|
||||
var armorStand = assertNonNull(EntityType.ARMOR_STAND.create(player.getLevel()));
|
||||
var armorStand = assertNonNull(EntityType.ARMOR_STAND.create(player.level()));
|
||||
armorStand.readAdditionalSaveData(nbt);
|
||||
armorStand.copyPosition(player);
|
||||
armorStand.setCustomName(Component.literal(info.getTestName()));
|
||||
player.getLevel().addFreshEntity(armorStand);
|
||||
player.level().addFreshEntity(armorStand);
|
||||
return 0;
|
||||
}))
|
||||
|
||||
.then(literal("give-computer").executes(context -> {
|
||||
var player = context.getSource().getPlayerOrException();
|
||||
var pos = StructureUtils.findNearestStructureBlock(player.blockPosition(), 15, player.getLevel());
|
||||
var pos = StructureUtils.findNearestStructureBlock(player.blockPosition(), 15, player.serverLevel());
|
||||
if (pos == null) return error(context.getSource(), "No nearby test");
|
||||
|
||||
var structureBlock = (StructureBlockEntity) player.getLevel().getBlockEntity(pos);
|
||||
var structureBlock = (StructureBlockEntity) player.level().getBlockEntity(pos);
|
||||
if (structureBlock == null) return error(context.getSource(), "No nearby structure block");
|
||||
var info = GameTestRegistry.getTestFunction(structureBlock.getStructurePath());
|
||||
|
||||
|
@@ -22,7 +22,6 @@ import net.minecraft.world.level.block.RedstoneLampBlock
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.lwjgl.glfw.GLFW
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
|
||||
class Computer_Test {
|
||||
/**
|
||||
@@ -72,24 +71,6 @@ class Computer_Test {
|
||||
thenExecute { context.assertBlockHas(lamp, RedstoneLampBlock.LIT, false, "Lamp should not be lit") }
|
||||
}
|
||||
|
||||
/**
|
||||
* Check computers pick up propagated redstone to surrounding blocks.
|
||||
*
|
||||
* @see [#1520](https://github.com/cc-tweaked/CC-Tweaked/issues/1520)
|
||||
*/
|
||||
@GameTest
|
||||
fun Self_output_update(context: GameTestHelper) = context.sequence {
|
||||
thenOnComputer {
|
||||
getApi<RedstoneAPI>().setOutput(ComputerSide.BACK, true)
|
||||
sleep(100.milliseconds)
|
||||
assertEquals(true, getApi<RedstoneAPI>().getInput(ComputerSide.BACK), "Input should be on")
|
||||
|
||||
getApi<RedstoneAPI>().setOutput(ComputerSide.BACK, false)
|
||||
sleep(100.milliseconds)
|
||||
assertEquals(false, getApi<RedstoneAPI>().getInput(ComputerSide.BACK), "Input should be off")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check computers and turtles expose peripherals.
|
||||
*/
|
||||
|
@@ -13,8 +13,8 @@ import net.minecraft.gametest.framework.GameTestHelper
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu
|
||||
import net.minecraft.world.inventory.CraftingContainer
|
||||
import net.minecraft.world.inventory.MenuType
|
||||
import net.minecraft.world.inventory.TransientCraftingContainer
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.crafting.CraftingRecipe
|
||||
@@ -31,7 +31,7 @@ class Recipe_Test {
|
||||
@GameTest(template = Structures.DEFAULT)
|
||||
fun Craft_result_has_nbt(context: GameTestHelper) = context.sequence {
|
||||
thenExecute {
|
||||
val container = CraftingContainer(DummyMenu, 3, 3)
|
||||
val container = TransientCraftingContainer(DummyMenu, 3, 3)
|
||||
container.setItem(0, ItemStack(Items.SKELETON_SKULL))
|
||||
container.setItem(1, ItemStack(ModRegistry.Items.COMPUTER_ADVANCED.get()))
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user