mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-01-23 23:46:55 +00:00
Merge branch 'mc-1.19.x' into mc-1.20.x
This commit is contained in:
commit
1ece2aa23b
1
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
1
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@ -11,6 +11,7 @@ body:
|
|||||||
- 1.16.x
|
- 1.16.x
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
|
- 1.20.x
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: input
|
- type: input
|
||||||
|
@ -33,7 +33,6 @@ val publishCurseForge by tasks.registering(TaskPublishCurseForge::class) {
|
|||||||
enabled = apiToken != ""
|
enabled = apiToken != ""
|
||||||
|
|
||||||
val mainFile = upload("282001", modPublishing.output.get().archiveFile)
|
val mainFile = upload("282001", modPublishing.output.get().archiveFile)
|
||||||
dependsOn(modPublishing.output) // See https://github.com/Darkhax/CurseForgeGradle/pull/7.
|
|
||||||
mainFile.changelog =
|
mainFile.changelog =
|
||||||
"Release notes can be found on the [GitHub repository](https://github.com/cc-tweaked/CC-Tweaked/releases/tag/v$mcVersion-$modVersion)."
|
"Release notes can be found on the [GitHub repository](https://github.com/cc-tweaked/CC-Tweaked/releases/tag/v$mcVersion-$modVersion)."
|
||||||
mainFile.changelogType = "markdown"
|
mainFile.changelogType = "markdown"
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
//
|
//
|
||||||
// SPDX-License-Identifier: MPL-2.0
|
// SPDX-License-Identifier: MPL-2.0
|
||||||
|
|
||||||
import org.gradle.kotlin.dsl.`maven-publish`
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
`java-library`
|
`java-library`
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
|
@ -10,7 +10,7 @@ kotlin.jvm.target.validation.mode=error
|
|||||||
|
|
||||||
# Mod properties
|
# Mod properties
|
||||||
isUnstable=false
|
isUnstable=false
|
||||||
modVersion=1.104.0
|
modVersion=1.105.0
|
||||||
|
|
||||||
# Minecraft properties: We want to configure this here so we can read it in settings.gradle
|
# Minecraft properties: We want to configure this here so we can read it in settings.gradle
|
||||||
mcVersion=1.20
|
mcVersion=1.20
|
||||||
|
@ -50,7 +50,7 @@ junit = "5.9.2"
|
|||||||
# Build tools
|
# Build tools
|
||||||
cctJavadoc = "1.7.0"
|
cctJavadoc = "1.7.0"
|
||||||
checkstyle = "10.3.4"
|
checkstyle = "10.3.4"
|
||||||
curseForgeGradle = "1.0.11"
|
curseForgeGradle = "1.0.14"
|
||||||
errorProne-core = "2.18.0"
|
errorProne-core = "2.18.0"
|
||||||
errorProne-plugin = "3.0.1"
|
errorProne-plugin = "3.0.1"
|
||||||
fabric-loom = "1.1.10"
|
fabric-loom = "1.1.10"
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
package dan200.computercraft.api.pocket;
|
package dan200.computercraft.api.pocket;
|
||||||
|
|
||||||
import dan200.computercraft.api.ComputerCraftAPI;
|
|
||||||
import dan200.computercraft.api.upgrades.UpgradeBase;
|
import dan200.computercraft.api.upgrades.UpgradeBase;
|
||||||
import dan200.computercraft.api.upgrades.UpgradeSerialiser;
|
import dan200.computercraft.api.upgrades.UpgradeSerialiser;
|
||||||
import dan200.computercraft.impl.ComputerCraftAPIService;
|
import dan200.computercraft.impl.ComputerCraftAPIService;
|
||||||
@ -30,14 +29,6 @@ import java.util.function.Function;
|
|||||||
* @see PocketUpgradeDataProvider
|
* @see PocketUpgradeDataProvider
|
||||||
*/
|
*/
|
||||||
public interface PocketUpgradeSerialiser<T extends IPocketUpgrade> extends UpgradeSerialiser<T> {
|
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.
|
* The ID for the associated registry.
|
||||||
*
|
*
|
||||||
|
@ -13,7 +13,6 @@ import net.minecraft.core.Direction;
|
|||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.world.Container;
|
import net.minecraft.world.Container;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.phys.Vec3;
|
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@ -68,25 +67,6 @@ public interface ITurtleAccess {
|
|||||||
*/
|
*/
|
||||||
boolean teleportTo(Level world, BlockPos pos);
|
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)
|
|
||||||
*/
|
|
||||||
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)
|
|
||||||
*/
|
|
||||||
float getVisualYaw(float f);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the world direction the turtle is currently facing.
|
* Returns the world direction the turtle is currently facing.
|
||||||
*
|
*
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
package dan200.computercraft.api.turtle;
|
package dan200.computercraft.api.turtle;
|
||||||
|
|
||||||
import dan200.computercraft.api.ComputerCraftAPI;
|
|
||||||
import dan200.computercraft.api.upgrades.UpgradeBase;
|
import dan200.computercraft.api.upgrades.UpgradeBase;
|
||||||
import dan200.computercraft.api.upgrades.UpgradeSerialiser;
|
import dan200.computercraft.api.upgrades.UpgradeSerialiser;
|
||||||
import dan200.computercraft.impl.ComputerCraftAPIService;
|
import dan200.computercraft.impl.ComputerCraftAPIService;
|
||||||
@ -65,14 +64,6 @@ import java.util.function.Function;
|
|||||||
* @see dan200.computercraft.api.client.turtle.TurtleUpgradeModeller
|
* @see dan200.computercraft.api.client.turtle.TurtleUpgradeModeller
|
||||||
*/
|
*/
|
||||||
public interface TurtleUpgradeSerialiser<T extends ITurtleUpgrade> extends UpgradeSerialiser<T> {
|
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.
|
* The ID for the associated registry.
|
||||||
*
|
*
|
||||||
|
@ -23,7 +23,7 @@ import java.util.Objects;
|
|||||||
* A {@link TableFormatter} subclass which writes directly to {@linkplain ChatComponent the chat GUI}.
|
* A {@link TableFormatter} subclass which writes directly to {@linkplain ChatComponent the chat GUI}.
|
||||||
* <p>
|
* <p>
|
||||||
* Each message written gets a special {@link GuiMessageTag}, so we can remove the previous table of the same
|
* Each message written gets a special {@link GuiMessageTag}, so we can remove the previous table of the same
|
||||||
* {@link TableBuilder#getId() id}.
|
* {@linkplain TableBuilder#getId() id}.
|
||||||
*/
|
*/
|
||||||
public class ClientTableFormatter implements TableFormatter {
|
public class ClientTableFormatter implements TableFormatter {
|
||||||
public static final ClientTableFormatter INSTANCE = new ClientTableFormatter();
|
public static final ClientTableFormatter INSTANCE = new ClientTableFormatter();
|
||||||
|
@ -15,6 +15,7 @@ import net.minecraft.client.gui.GuiGraphics;
|
|||||||
import net.minecraft.client.gui.components.AbstractWidget;
|
import net.minecraft.client.gui.components.AbstractWidget;
|
||||||
import net.minecraft.client.gui.narration.NarratedElementType;
|
import net.minecraft.client.gui.narration.NarratedElementType;
|
||||||
import net.minecraft.client.gui.narration.NarrationElementOutput;
|
import net.minecraft.client.gui.narration.NarrationElementOutput;
|
||||||
|
import net.minecraft.client.gui.screens.Screen;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
@ -81,6 +82,11 @@ public class TerminalWidget extends AbstractWidget {
|
|||||||
@Override
|
@Override
|
||||||
public boolean keyPressed(int key, int scancode, int modifiers) {
|
public boolean keyPressed(int key, int scancode, int modifiers) {
|
||||||
if (key == GLFW.GLFW_KEY_ESCAPE) return false;
|
if (key == GLFW.GLFW_KEY_ESCAPE) return false;
|
||||||
|
if (Screen.isPaste(key)) {
|
||||||
|
paste();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ((modifiers & GLFW.GLFW_MOD_CONTROL) != 0) {
|
if ((modifiers & GLFW.GLFW_MOD_CONTROL) != 0) {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case GLFW.GLFW_KEY_T -> {
|
case GLFW.GLFW_KEY_T -> {
|
||||||
@ -92,13 +98,25 @@ public class TerminalWidget extends AbstractWidget {
|
|||||||
case GLFW.GLFW_KEY_R -> {
|
case GLFW.GLFW_KEY_R -> {
|
||||||
if (rebootTimer < 0) rebootTimer = 0;
|
if (rebootTimer < 0) rebootTimer = 0;
|
||||||
}
|
}
|
||||||
case GLFW.GLFW_KEY_V -> {
|
}
|
||||||
// Ctrl+V for paste
|
}
|
||||||
|
|
||||||
|
if (key >= 0 && terminateTimer < KEY_SUPPRESS_DELAY && rebootTimer < KEY_SUPPRESS_DELAY && shutdownTimer < KEY_SUPPRESS_DELAY) {
|
||||||
|
// Queue the "key" event and add to the down set
|
||||||
|
var repeat = keysDown.get(key);
|
||||||
|
keysDown.set(key);
|
||||||
|
computer.keyDown(key, repeat);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void paste() {
|
||||||
var clipboard = Minecraft.getInstance().keyboardHandler.getClipboard();
|
var clipboard = Minecraft.getInstance().keyboardHandler.getClipboard();
|
||||||
if (clipboard != null) {
|
|
||||||
// Clip to the first occurrence of \r or \n
|
// Clip to the first occurrence of \r or \n
|
||||||
var newLineIndex1 = clipboard.indexOf("\r");
|
var newLineIndex1 = clipboard.indexOf('\r');
|
||||||
var newLineIndex2 = clipboard.indexOf("\n");
|
var newLineIndex2 = clipboard.indexOf('\n');
|
||||||
if (newLineIndex1 >= 0 && newLineIndex2 >= 0) {
|
if (newLineIndex1 >= 0 && newLineIndex2 >= 0) {
|
||||||
clipboard = clipboard.substring(0, Math.min(newLineIndex1, newLineIndex2));
|
clipboard = clipboard.substring(0, Math.min(newLineIndex1, newLineIndex2));
|
||||||
} else if (newLineIndex1 >= 0) {
|
} else if (newLineIndex1 >= 0) {
|
||||||
@ -114,21 +132,6 @@ public class TerminalWidget extends AbstractWidget {
|
|||||||
if (clipboard.length() > 512) clipboard = clipboard.substring(0, 512);
|
if (clipboard.length() > 512) clipboard = clipboard.substring(0, 512);
|
||||||
computer.queueEvent("paste", new Object[]{ clipboard });
|
computer.queueEvent("paste", new Object[]{ clipboard });
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key >= 0 && terminateTimer < KEY_SUPPRESS_DELAY && rebootTimer < KEY_SUPPRESS_DELAY && shutdownTimer < KEY_SUPPRESS_DELAY) {
|
|
||||||
// Queue the "key" event and add to the down set
|
|
||||||
var repeat = keysDown.get(key);
|
|
||||||
keysDown.set(key);
|
|
||||||
computer.keyDown(key, repeat);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -5,15 +5,11 @@
|
|||||||
package dan200.computercraft.shared.details;
|
package dan200.computercraft.shared.details;
|
||||||
|
|
||||||
import com.google.gson.JsonParseException;
|
import com.google.gson.JsonParseException;
|
||||||
import dan200.computercraft.shared.platform.PlatformHelper;
|
|
||||||
import dan200.computercraft.shared.platform.RegistryWrappers;
|
import dan200.computercraft.shared.platform.RegistryWrappers;
|
||||||
import dan200.computercraft.shared.util.NBTUtil;
|
import dan200.computercraft.shared.util.NBTUtil;
|
||||||
import net.minecraft.core.registries.Registries;
|
|
||||||
import net.minecraft.nbt.ListTag;
|
import net.minecraft.nbt.ListTag;
|
||||||
import net.minecraft.nbt.Tag;
|
import net.minecraft.nbt.Tag;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
|
||||||
import net.minecraft.world.item.CreativeModeTabs;
|
|
||||||
import net.minecraft.world.item.EnchantedBookItem;
|
import net.minecraft.world.item.EnchantedBookItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||||
@ -46,7 +42,9 @@ public class ItemDetails {
|
|||||||
}
|
}
|
||||||
|
|
||||||
data.put("tags", DetailHelpers.getTags(stack.getTags()));
|
data.put("tags", DetailHelpers.getTags(stack.getTags()));
|
||||||
data.put("itemGroups", getItemGroups(stack));
|
|
||||||
|
// Include deprecated itemGroups field
|
||||||
|
data.put("itemGroups", List.of());
|
||||||
|
|
||||||
var tag = stack.getTag();
|
var tag = stack.getTag();
|
||||||
if (tag != null && tag.contains("display", Tag.TAG_COMPOUND)) {
|
if (tag != null && tag.contains("display", Tag.TAG_COMPOUND)) {
|
||||||
@ -85,25 +83,6 @@ public class ItemDetails {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve all item groups an item stack pertains to.
|
|
||||||
*
|
|
||||||
* @param stack Stack to analyse
|
|
||||||
* @return A filled list that contains pairs of item group IDs and their display names.
|
|
||||||
*/
|
|
||||||
private static List<Map<String, Object>> getItemGroups(ItemStack stack) {
|
|
||||||
return CreativeModeTabs.allTabs().stream()
|
|
||||||
.filter(x -> x.shouldDisplay() && x.getType() == CreativeModeTab.Type.CATEGORY && x.contains(stack))
|
|
||||||
.map(group -> {
|
|
||||||
Map<String, Object> groupData = new HashMap<>(2);
|
|
||||||
|
|
||||||
groupData.put("id", PlatformHelper.get().getRegistryKey(Registries.CREATIVE_MODE_TAB, group).toString());
|
|
||||||
groupData.put("displayName", group.getDisplayName().getString());
|
|
||||||
return groupData;
|
|
||||||
})
|
|
||||||
.toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve all visible enchantments from given stack. Try to follow all tooltip rules : order and visibility.
|
* Retrieve all visible enchantments from given stack. Try to follow all tooltip rules : order and visibility.
|
||||||
*
|
*
|
||||||
|
@ -319,7 +319,6 @@ public class TurtleBrain implements TurtleAccessInternal {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getVisualPosition(float f) {
|
public Vec3 getVisualPosition(float f) {
|
||||||
var offset = getRenderOffset(f);
|
var offset = getRenderOffset(f);
|
||||||
var pos = owner.getBlockPos();
|
var pos = owner.getBlockPos();
|
||||||
@ -330,7 +329,6 @@ public class TurtleBrain implements TurtleAccessInternal {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getVisualYaw(float f) {
|
public float getVisualYaw(float f) {
|
||||||
var yaw = getDirection().toYRot();
|
var yaw = getDirection().toYRot();
|
||||||
switch (animation) {
|
switch (animation) {
|
||||||
|
@ -169,7 +169,7 @@ public class TurtlePlaceCommand implements TurtleCommand {
|
|||||||
if (Math.abs(hitY - 0.5f) < 0.01f) hitY = 0.45f;
|
if (Math.abs(hitY - 0.5f) < 0.01f) hitY = 0.45f;
|
||||||
|
|
||||||
// Check if there's something suitable to place onto
|
// Check if there's something suitable to place onto
|
||||||
var hit = new BlockHitResult(new Vec3(hitX, hitY, hitZ), side, position, false);
|
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);
|
var context = new UseOnContext(turtlePlayer.player(), InteractionHand.MAIN_HAND, hit);
|
||||||
if (!canDeployOnBlock(new BlockPlaceContext(context), turtle, turtlePlayer, position, side, adjacent, outErrorMessage)) {
|
if (!canDeployOnBlock(new BlockPlaceContext(context), turtle, turtlePlayer, position, side, adjacent, outErrorMessage)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,3 +1,27 @@
|
|||||||
|
# New features in CC: Tweaked 1.105.0
|
||||||
|
|
||||||
|
* Optimise JSON string parsing.
|
||||||
|
* Add `colors.fromBlit` (Erb3).
|
||||||
|
* Upload file size limit is now configurable (khankul).
|
||||||
|
* Wired cables no longer have a distance limit.
|
||||||
|
* Java methods now coerce values to strings consistently with Lua.
|
||||||
|
* Add custom timeout support to the HTTP API.
|
||||||
|
* Support custom proxies for HTTP requests (Lemmmy).
|
||||||
|
* The `speaker` program now errors when playing HTTP files.
|
||||||
|
* `edit` now shows an error message when editing read-only files.
|
||||||
|
* Update Ukranian translation (SirEdvin).
|
||||||
|
|
||||||
|
Several bug fixes:
|
||||||
|
* Allow GPS hosts to only be 1 block apart.
|
||||||
|
* Fix "Turn On"/"Turn Off" buttons being inverted in the computer GUI (Erb3).
|
||||||
|
* Fix arrow keys not working in the printout UI.
|
||||||
|
* Several documentation fixes (zyxkad, Lupus590, Commandcracker).
|
||||||
|
* Fix monitor renderer debug text always being visible on Forge.
|
||||||
|
* Fix crash when another mod changes the LoggerContext.
|
||||||
|
* Fix the `monitor_renderer` option not being present in Fabric config files.
|
||||||
|
* Pasting on MacOS/OSX now uses Cmd+V rather than Ctrl+V.
|
||||||
|
* Fix turtles placing blocks upside down when at y<0.
|
||||||
|
|
||||||
# New features in CC: Tweaked 1.104.0
|
# New features in CC: Tweaked 1.104.0
|
||||||
|
|
||||||
* Update to Minecraft 1.19.4.
|
* Update to Minecraft 1.19.4.
|
||||||
|
@ -1,31 +1,25 @@
|
|||||||
New features in CC: Tweaked 1.104.0
|
New features in CC: Tweaked 1.105.0
|
||||||
|
|
||||||
* Update to Minecraft 1.19.4.
|
* Optimise JSON string parsing.
|
||||||
* Turtles can now right click items "into" certain blocks (cauldrons and hives by default, configurable with the `computercraft:turtle_can_use` block tag).
|
* Add `colors.fromBlit` (Erb3).
|
||||||
* Update Cobalt to 0.7:
|
* Upload file size limit is now configurable (khankul).
|
||||||
* `table` methods and `ipairs` now use metamethods.
|
* Wired cables no longer have a distance limit.
|
||||||
* Type errors now use the `__name` metatag.
|
* Java methods now coerce values to strings consistently with Lua.
|
||||||
* Coroutines no longer run on multiple threads.
|
* Add custom timeout support to the HTTP API.
|
||||||
* Timeout errors should be thrown more reliably.
|
* Support custom proxies for HTTP requests (Lemmmy).
|
||||||
* `speaker` program now reports an error on common unsupported audio formats.
|
* The `speaker` program now errors when playing HTTP files.
|
||||||
* `multishell` now hides the implementation details of its terminal redirect from programs.
|
* `edit` now shows an error message when editing read-only files.
|
||||||
* Use VBO monitor renderer by default.
|
* Update Ukranian translation (SirEdvin).
|
||||||
* Improve syntax errors when missing commas in tables, and on trailing commas in parameter lists.
|
|
||||||
* Turtles can now hold flags.
|
|
||||||
* Update several translations (Alessandro, chesiren, Erlend, RomanPlayer22).
|
|
||||||
|
|
||||||
Several bug fixes:
|
Several bug fixes:
|
||||||
* `settings.load` now ignores malformed values created by editing the `.settings` file by hand.
|
* Allow GPS hosts to only be 1 block apart.
|
||||||
* Fix introduction dates on `os.cancelAlarm` and `os.cancelTimer` (MCJack123).
|
* Fix "Turn On"/"Turn Off" buttons being inverted in the computer GUI (Erb3).
|
||||||
* Fix the REPL syntax reporting crashing on valid parses.
|
* Fix arrow keys not working in the printout UI.
|
||||||
* Make writes to the ID file atomic.
|
* Several documentation fixes (zyxkad, Lupus590, Commandcracker).
|
||||||
* Obey stack limits when transferring items with Fabric's APIs.
|
* Fix monitor renderer debug text always being visible on Forge.
|
||||||
* Ignore metatables in `textutils.serialize`.
|
* Fix crash when another mod changes the LoggerContext.
|
||||||
* Correctly recurse into NBT lists when computing the NBT hash (Lemmmy).
|
* Fix the `monitor_renderer` option not being present in Fabric config files.
|
||||||
* Fix advanced pocket computers rendering as greyscale.
|
* Pasting on MacOS/OSX now uses Cmd+V rather than Ctrl+V.
|
||||||
* Fix stack overflow when using `shell` as a hashbang program.
|
* Fix turtles placing blocks upside down when at y<0.
|
||||||
* Fix websocket messages being empty when using a non-default compression settings.
|
|
||||||
* Fix `gps.locate` returning `nan` when receiving a duplicate location (Wojbie).
|
|
||||||
* Remove several thread safety issues inside Java-side argument parsing code.
|
|
||||||
|
|
||||||
Type "help changelog" to see the full version history.
|
Type "help changelog" to see the full version history.
|
||||||
|
@ -254,3 +254,7 @@ publishing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
modrinth {
|
||||||
|
required.project("fabric-api")
|
||||||
|
}
|
||||||
|
@ -96,13 +96,18 @@ public class InventoryMethods implements GenericPeripheral {
|
|||||||
* <p>
|
* <p>
|
||||||
* The returned information contains the same information as each item in
|
* The returned information contains the same information as each item in
|
||||||
* {@link #list}, as well as additional details like the display name
|
* {@link #list}, as well as additional details like the display name
|
||||||
* (`displayName`), item groups (`itemGroups`), which are the creative tabs
|
* (`displayName`), and item and item durability (`damage`, `maxDamage`, `durability`).
|
||||||
* an item will appear under, and item and item durability (`damage`,
|
|
||||||
* `maxDamage`, `durability`).
|
|
||||||
* <p>
|
* <p>
|
||||||
* Some items include more information (such as enchantments) - it is
|
* Some items include more information (such as enchantments) - it is
|
||||||
* recommended to print it out using @{textutils.serialize} or in the Lua
|
* recommended to print it out using @{textutils.serialize} or in the Lua
|
||||||
* REPL, to explore what is available.
|
* REPL, to explore what is available.
|
||||||
|
* <p>
|
||||||
|
* :::info Deprecated fields
|
||||||
|
* Older versions of CC: Tweaked exposed an {@code itemGroups} field, listing the
|
||||||
|
* creative tabs an item was available under. This information is no longer available on
|
||||||
|
* more recent versions of the game, and so this field will always be empty. Do not use this
|
||||||
|
* field in new code!
|
||||||
|
* :::
|
||||||
*
|
*
|
||||||
* @param inventory The current inventory.
|
* @param inventory The current inventory.
|
||||||
* @param slot The slot to get information about.
|
* @param slot The slot to get information about.
|
||||||
@ -119,10 +124,6 @@ public class InventoryMethods implements GenericPeripheral {
|
|||||||
* print(("%s (%s)"):format(item.displayName, item.name))
|
* print(("%s (%s)"):format(item.displayName, item.name))
|
||||||
* print(("Count: %d/%d"):format(item.count, item.maxCount))
|
* print(("Count: %d/%d"):format(item.count, item.maxCount))
|
||||||
*
|
*
|
||||||
* for _, group in pairs(item.itemGroups) do
|
|
||||||
* print(("Group: %s"):format(group.displayName))
|
|
||||||
* end
|
|
||||||
*
|
|
||||||
* if item.damage then
|
* if item.damage then
|
||||||
* print(("Damage: %d/%d"):format(item.damage, item.maxDamage))
|
* print(("Damage: %d/%d"):format(item.damage, item.maxDamage))
|
||||||
* end
|
* end
|
||||||
|
@ -257,7 +257,6 @@ public class PlatformHelperImpl implements PlatformHelper {
|
|||||||
return ForgeHooks.getBurnTime(stack, null);
|
return ForgeHooks.getBurnTime(stack, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CreativeModeTab.Builder newCreativeModeTab() {
|
public CreativeModeTab.Builder newCreativeModeTab() {
|
||||||
return CreativeModeTab.builder();
|
return CreativeModeTab.builder();
|
||||||
|
Loading…
Reference in New Issue
Block a user