mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-01-21 06:26:55 +00:00
Turtle flags
- Add a new recipe type for turtle overlays, and recipe generator support for this recipe. - Add trans and rainbow flags. - Exclude .license files from the generated jar. I'm not thrilled on the whole .license file system, but it's kinda the easiest way. - Regenerate data. Yes, this is 90% of the commit :D.
This commit is contained in:
parent
a9547d1d6f
commit
081953655c
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,6 +10,7 @@
|
||||
/projects/*/build
|
||||
/buildSrc/build
|
||||
/out
|
||||
/buildSrc/out
|
||||
/jars
|
||||
/doc/out/
|
||||
/node_modules
|
||||
|
@ -102,6 +102,10 @@ tasks.withType(JavaCompile::class.java).configureEach {
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
tasks.processResources {
|
||||
exclude("**/*.license")
|
||||
}
|
||||
|
||||
tasks.withType(AbstractArchiveTask::class.java).configureEach {
|
||||
isPreserveFileTimestamps = false
|
||||
isReproducibleFileOrder = true
|
||||
|
@ -127,6 +127,8 @@ public final class ClientRegistry {
|
||||
// Turtle block renderer
|
||||
"block/turtle_colour",
|
||||
"block/turtle_elf_overlay",
|
||||
"block/turtle_rainbow_overlay",
|
||||
"block/turtle_trans_overlay",
|
||||
};
|
||||
|
||||
public static void registerExtraModels(Consumer<ResourceLocation> register) {
|
||||
|
@ -17,6 +17,7 @@ import dan200.computercraft.shared.platform.RecipeIngredients;
|
||||
import dan200.computercraft.shared.platform.RegistryWrappers;
|
||||
import dan200.computercraft.shared.pocket.items.PocketComputerItemFactory;
|
||||
import dan200.computercraft.shared.turtle.items.TurtleItemFactory;
|
||||
import dan200.computercraft.shared.util.ColourUtils;
|
||||
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
|
||||
import net.minecraft.advancements.critereon.ItemPredicate;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
@ -60,6 +61,7 @@ class RecipeProvider extends net.minecraft.data.recipes.RecipeProvider {
|
||||
diskColours(add);
|
||||
pocketUpgrades(add);
|
||||
turtleUpgrades(add);
|
||||
turtleOverlays(add);
|
||||
|
||||
addSpecial(add, ModRegistry.RecipeSerializers.PRINTOUT.get());
|
||||
addSpecial(add, ModRegistry.RecipeSerializers.DISK.get());
|
||||
@ -156,6 +158,51 @@ class RecipeProvider extends net.minecraft.data.recipes.RecipeProvider {
|
||||
}
|
||||
}
|
||||
|
||||
private void turtleOverlays(Consumer<FinishedRecipe> add) {
|
||||
turtleOverlay(add, "turtle_trans_overlay", x -> x
|
||||
.unlockedBy("has_dye", inventoryChange(itemPredicate(ingredients.dye())))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.LIGHT_BLUE))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.PINK))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.WHITE))
|
||||
.requires(Items.STICK)
|
||||
);
|
||||
|
||||
turtleOverlay(add, "turtle_rainbow_overlay", x -> x
|
||||
.unlockedBy("has_dye", inventoryChange(itemPredicate(ingredients.dye())))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.RED))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.ORANGE))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.YELLOW))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.GREEN))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.BLUE))
|
||||
.requires(ColourUtils.getDyeTag(DyeColor.PURPLE))
|
||||
.requires(Items.STICK)
|
||||
);
|
||||
}
|
||||
|
||||
private void turtleOverlay(Consumer<FinishedRecipe> add, String overlay, Consumer<ShapelessRecipeBuilder> build) {
|
||||
for (var family : ComputerFamily.values()) {
|
||||
var base = TurtleItemFactory.create(-1, null, -1, family, null, null, 0, null);
|
||||
if (base.isEmpty()) continue;
|
||||
|
||||
var nameId = family.name().toLowerCase(Locale.ROOT);
|
||||
var group = "%s:turtle_%s_overlay".formatted(ComputerCraftAPI.MOD_ID, nameId);
|
||||
|
||||
var builder = ShapelessRecipeBuilder.shapeless(RecipeCategory.REDSTONE, base.getItem())
|
||||
.group(group)
|
||||
.unlockedBy("has_turtle", inventoryChange(base.getItem()));
|
||||
build.accept(builder);
|
||||
builder
|
||||
.requires(base.getItem())
|
||||
.save(
|
||||
RecipeWrapper
|
||||
.wrap(ModRegistry.RecipeSerializers.TURTLE_OVERLAY.get(), add)
|
||||
.withExtraData(x -> x.addProperty("overlay", new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/" + overlay).toString())),
|
||||
new ResourceLocation(ComputerCraftAPI.MOD_ID, "turtle_%s_overlays/%s".formatted(nameId, overlay))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void basicRecipes(Consumer<FinishedRecipe> add) {
|
||||
ShapedRecipeBuilder
|
||||
.shaped(RecipeCategory.REDSTONE, ModRegistry.Items.CABLE.get(), 6)
|
||||
|
@ -70,6 +70,7 @@ import dan200.computercraft.shared.turtle.blocks.TurtleBlock;
|
||||
import dan200.computercraft.shared.turtle.blocks.TurtleBlockEntity;
|
||||
import dan200.computercraft.shared.turtle.inventory.TurtleMenu;
|
||||
import dan200.computercraft.shared.turtle.items.TurtleItem;
|
||||
import dan200.computercraft.shared.turtle.recipes.TurtleOverlayRecipe;
|
||||
import dan200.computercraft.shared.turtle.recipes.TurtleRecipe;
|
||||
import dan200.computercraft.shared.turtle.recipes.TurtleUpgradeRecipe;
|
||||
import dan200.computercraft.shared.turtle.upgrades.*;
|
||||
@ -355,6 +356,7 @@ public final class ModRegistry {
|
||||
public static final RegistryEntry<SimpleCraftingRecipeSerializer<ClearColourRecipe>> DYEABLE_ITEM_CLEAR = simple("clear_colour", ClearColourRecipe::new);
|
||||
public static final RegistryEntry<TurtleRecipe.Serializer> TURTLE = REGISTRY.register("turtle", TurtleRecipe.Serializer::new);
|
||||
public static final RegistryEntry<SimpleCraftingRecipeSerializer<TurtleUpgradeRecipe>> TURTLE_UPGRADE = simple("turtle_upgrade", TurtleUpgradeRecipe::new);
|
||||
public static final RegistryEntry<TurtleOverlayRecipe.Serializer> TURTLE_OVERLAY = REGISTRY.register("turtle_overlay", TurtleOverlayRecipe.Serializer::new);
|
||||
public static final RegistryEntry<SimpleCraftingRecipeSerializer<PocketComputerUpgradeRecipe>> POCKET_COMPUTER_UPGRADE = simple("pocket_computer_upgrade", PocketComputerUpgradeRecipe::new);
|
||||
public static final RegistryEntry<SimpleCraftingRecipeSerializer<PrintoutRecipe>> PRINTOUT = simple("printout", PrintoutRecipe::new);
|
||||
public static final RegistryEntry<SimpleCraftingRecipeSerializer<DiskRecipe>> DISK = simple("disk", DiskRecipe::new);
|
||||
|
@ -0,0 +1,122 @@
|
||||
// SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
//
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package dan200.computercraft.shared.turtle.recipes;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import dan200.computercraft.api.turtle.TurtleSide;
|
||||
import dan200.computercraft.shared.ModRegistry;
|
||||
import dan200.computercraft.shared.turtle.items.ITurtleItem;
|
||||
import dan200.computercraft.shared.turtle.items.TurtleItem;
|
||||
import dan200.computercraft.shared.turtle.items.TurtleItemFactory;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.core.RegistryAccess;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.GsonHelper;
|
||||
import net.minecraft.world.inventory.CraftingContainer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.*;
|
||||
|
||||
/**
|
||||
* A {@link ShapelessRecipe} which sets the {@linkplain ITurtleItem#getOverlay(ItemStack)} turtle's overlay} instead.
|
||||
*/
|
||||
public class TurtleOverlayRecipe extends ShapelessRecipe {
|
||||
private final ResourceLocation overlay;
|
||||
private final ItemStack result;
|
||||
|
||||
public TurtleOverlayRecipe(ResourceLocation id, String group, CraftingBookCategory category, ItemStack result, NonNullList<Ingredient> ingredients, ResourceLocation overlay) {
|
||||
super(id, group, category, result, ingredients);
|
||||
this.overlay = overlay;
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
private static ItemStack make(ItemStack stack, ResourceLocation overlay) {
|
||||
var turtle = (ITurtleItem) stack.getItem();
|
||||
return TurtleItemFactory.create(
|
||||
turtle.getComputerID(stack),
|
||||
turtle.getLabel(stack),
|
||||
turtle.getColour(stack),
|
||||
turtle.getFamily(),
|
||||
turtle.getUpgrade(stack, TurtleSide.LEFT),
|
||||
turtle.getUpgrade(stack, TurtleSide.RIGHT),
|
||||
turtle.getFuelLevel(stack),
|
||||
overlay
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack assemble(CraftingContainer inventory, RegistryAccess registryAccess) {
|
||||
for (var i = 0; i < inventory.getContainerSize(); i++) {
|
||||
var stack = inventory.getItem(i);
|
||||
if (stack.getItem() instanceof TurtleItem) return make(stack, overlay);
|
||||
}
|
||||
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecipeSerializer<?> getSerializer() {
|
||||
return ModRegistry.RecipeSerializers.TURTLE_OVERLAY.get();
|
||||
}
|
||||
|
||||
public static class Serializer implements RecipeSerializer<TurtleOverlayRecipe> {
|
||||
@Override
|
||||
public TurtleOverlayRecipe fromJson(ResourceLocation id, JsonObject json) {
|
||||
var group = GsonHelper.getAsString(json, "group", "");
|
||||
var category = CraftingBookCategory.CODEC.byName(GsonHelper.getAsString(json, "category", null), CraftingBookCategory.MISC);
|
||||
var ingredients = readIngredients(GsonHelper.getAsJsonArray(json, "ingredients"));
|
||||
|
||||
if (ingredients.isEmpty()) throw new JsonParseException("No ingredients for shapeless recipe");
|
||||
if (ingredients.size() > 9) {
|
||||
throw new JsonParseException("Too many ingredients for shapeless recipe the max is 9");
|
||||
}
|
||||
|
||||
var overlay = new ResourceLocation(GsonHelper.getAsString(json, "overlay"));
|
||||
|
||||
// We could derive this from the ingredients, but we want to avoid evaluating the ingredients too early, so
|
||||
// it's easier to do this.
|
||||
var result = make(ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")), overlay);
|
||||
|
||||
return new TurtleOverlayRecipe(id, group, category, result, ingredients, overlay);
|
||||
}
|
||||
|
||||
private NonNullList<Ingredient> readIngredients(JsonArray arrays) {
|
||||
NonNullList<Ingredient> items = NonNullList.create();
|
||||
for (var i = 0; i < arrays.size(); ++i) {
|
||||
var ingredient = Ingredient.fromJson(arrays.get(i));
|
||||
if (!ingredient.isEmpty()) items.add(ingredient);
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TurtleOverlayRecipe fromNetwork(ResourceLocation id, FriendlyByteBuf buffer) {
|
||||
var group = buffer.readUtf();
|
||||
var category = buffer.readEnum(CraftingBookCategory.class);
|
||||
var count = buffer.readVarInt();
|
||||
var items = NonNullList.withSize(count, Ingredient.EMPTY);
|
||||
|
||||
for (var j = 0; j < items.size(); j++) items.set(j, Ingredient.fromNetwork(buffer));
|
||||
var result = buffer.readItem();
|
||||
var overlay = buffer.readResourceLocation();
|
||||
|
||||
return new TurtleOverlayRecipe(id, group, category, result, items, overlay);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toNetwork(FriendlyByteBuf buffer, TurtleOverlayRecipe recipe) {
|
||||
buffer.writeUtf(recipe.getGroup());
|
||||
buffer.writeEnum(recipe.category());
|
||||
buffer.writeVarInt(recipe.getIngredients().size());
|
||||
|
||||
for (var ingredient : recipe.getIngredients()) ingredient.toNetwork(buffer);
|
||||
buffer.writeItem(recipe.result);
|
||||
buffer.writeResourceLocation(recipe.overlay);
|
||||
}
|
||||
}
|
||||
}
|
@ -19,6 +19,10 @@ public final class ColourUtils {
|
||||
private ColourUtils() {
|
||||
}
|
||||
|
||||
public static TagKey<Item> getDyeTag(DyeColor color) {
|
||||
return DYES.get(color.getId());
|
||||
}
|
||||
|
||||
public static @Nullable DyeColor getStackColour(ItemStack stack) {
|
||||
if (stack.isEmpty()) return null;
|
||||
|
||||
|
@ -0,0 +1,38 @@
|
||||
{
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"particle": "computercraft:block/turtle_rainbow_overlay",
|
||||
"texture": "computercraft:block/turtle_rainbow_overlay"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Flag",
|
||||
"from": [1.5, 13, 10.5],
|
||||
"to": [2, 16.5, 15.5],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [2, 11, 10.75]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 1, 6], "texture": "#texture"},
|
||||
"east": {"uv": [0, 0, 7, 6], "texture": "#texture"},
|
||||
"south": {"uv": [0, 0, 1, 6], "texture": "#texture"},
|
||||
"west": {"uv": [0, 0, 7, 6], "texture": "#texture"},
|
||||
"up": {"uv": [15, 0, 16, 6], "texture": "#texture"},
|
||||
"down": {"uv": [8, 0, 9, 6], "texture": "#texture"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Stick",
|
||||
"from": [1.5, 10.5, 10.5],
|
||||
"to": [2, 13, 11],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [2, 11, 10.75]},
|
||||
"faces": {
|
||||
"north": {"uv": [12, 0, 13, 6], "texture": "#texture"},
|
||||
"east": {"uv": [13, 0, 14, 6], "texture": "#texture"},
|
||||
"south": {"uv": [12, 0, 13, 6], "texture": "#texture"},
|
||||
"west": {"uv": [13, 0, 14, 6], "texture": "#texture"},
|
||||
"up": {"uv": [12, 6, 13, 7], "texture": "#texture"},
|
||||
"down": {"uv": [13, 6, 14, 7], "texture": "#texture"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
|
||||
SPDX-License-Identifier: MPL-2.0
|
@ -0,0 +1,38 @@
|
||||
{
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"particle": "computercraft:block/turtle_trans_overlay",
|
||||
"texture": "computercraft:block/turtle_trans_overlay"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Flag",
|
||||
"from": [1.5, 13.5, 10.5],
|
||||
"to": [2, 16.5, 15.5],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [2, 11, 10.75]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 1, 5], "texture": "#texture"},
|
||||
"east": {"uv": [0, 0, 7, 5], "texture": "#texture"},
|
||||
"south": {"uv": [0, 0, 1, 5], "texture": "#texture"},
|
||||
"west": {"uv": [0, 0, 7, 5], "texture": "#texture"},
|
||||
"up": {"uv": [15, 0, 16, 5], "texture": "#texture"},
|
||||
"down": {"uv": [15, 0, 16, 5], "texture": "#texture"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Stick",
|
||||
"from": [1.5, 10.5, 10.5],
|
||||
"to": [2, 13.5, 11],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [2, 11, 10.75]},
|
||||
"faces": {
|
||||
"north": {"uv": [12, 0, 13, 6], "texture": "#texture"},
|
||||
"east": {"uv": [13, 0, 14, 6], "texture": "#texture"},
|
||||
"south": {"uv": [12, 0, 13, 6], "texture": "#texture"},
|
||||
"west": {"uv": [13, 0, 14, 6], "texture": "#texture"},
|
||||
"up": {"uv": [12, 6, 13, 7], "texture": "#texture"},
|
||||
"down": {"uv": [13, 6, 14, 7], "texture": "#texture"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
|
||||
SPDX-License-Identifier: MPL-2.0
|
Binary file not shown.
After Width: | Height: | Size: 596 B |
@ -0,0 +1,3 @@
|
||||
SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
|
||||
SPDX-License-Identifier: MPL-2.0
|
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,3 @@
|
||||
SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
|
||||
SPDX-License-Identifier: MPL-2.0
|
@ -196,8 +196,6 @@
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.avg": "%s (avg)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Tasks",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Coroutines created",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Coroutines disposed",
|
||||
"tracking_field.computercraft.count": "%s (count)",
|
||||
"tracking_field.computercraft.fs.name": "Filesystem operations",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP download",
|
||||
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "c:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_advanced_overlays/turtle_rainbow_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_advanced"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_advanced_overlays/turtle_rainbow_overlay"]}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "c:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_advanced_overlays/turtle_trans_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_advanced"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_advanced_overlays/turtle_trans_overlay"]}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "c:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_normal_overlays/turtle_rainbow_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_normal"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_normal_overlays/turtle_rainbow_overlay"]}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "c:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_normal_overlays/turtle_trans_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_normal"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_normal_overlays/turtle_trans_overlay"]}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_advanced_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "c:red_dyes"},
|
||||
{"tag": "c:orange_dyes"},
|
||||
{"tag": "c:yellow_dyes"},
|
||||
{"tag": "c:green_dyes"},
|
||||
{"tag": "c:blue_dyes"},
|
||||
{"tag": "c:purple_dyes"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_advanced"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_rainbow_overlay",
|
||||
"result": {"item": "computercraft:turtle_advanced"}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_advanced_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "c:light_blue_dyes"},
|
||||
{"tag": "c:pink_dyes"},
|
||||
{"tag": "c:white_dyes"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_advanced"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_trans_overlay",
|
||||
"result": {"item": "computercraft:turtle_advanced"}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_normal_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "c:red_dyes"},
|
||||
{"tag": "c:orange_dyes"},
|
||||
{"tag": "c:yellow_dyes"},
|
||||
{"tag": "c:green_dyes"},
|
||||
{"tag": "c:blue_dyes"},
|
||||
{"tag": "c:purple_dyes"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_normal"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_rainbow_overlay",
|
||||
"result": {"item": "computercraft:turtle_normal"}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_normal_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "c:light_blue_dyes"},
|
||||
{"tag": "c:pink_dyes"},
|
||||
{"tag": "c:white_dyes"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_normal"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_trans_overlay",
|
||||
"result": {"item": "computercraft:turtle_normal"}
|
||||
}
|
@ -196,8 +196,6 @@
|
||||
"itemGroup.computercraft": "ComputerCraft",
|
||||
"tracking_field.computercraft.avg": "%s (avg)",
|
||||
"tracking_field.computercraft.computer_tasks.name": "Tasks",
|
||||
"tracking_field.computercraft.coroutines_created.name": "Coroutines created",
|
||||
"tracking_field.computercraft.coroutines_dead.name": "Coroutines disposed",
|
||||
"tracking_field.computercraft.count": "%s (count)",
|
||||
"tracking_field.computercraft.fs.name": "Filesystem operations",
|
||||
"tracking_field.computercraft.http_download.name": "HTTP download",
|
||||
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "forge:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_advanced_overlays/turtle_rainbow_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_advanced"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_advanced_overlays/turtle_rainbow_overlay"]}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "forge:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_advanced_overlays/turtle_trans_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_advanced"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_advanced_overlays/turtle_trans_overlay"]}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "forge:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_normal_overlays/turtle_rainbow_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_normal"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_normal_overlays/turtle_rainbow_overlay"]}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_dye": {"conditions": {"items": [{"tag": "forge:dyes"}]}, "trigger": "minecraft:inventory_changed"},
|
||||
"has_the_recipe": {
|
||||
"conditions": {"recipe": "computercraft:turtle_normal_overlays/turtle_trans_overlay"},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
},
|
||||
"has_turtle": {
|
||||
"conditions": {"items": [{"items": ["computercraft:turtle_normal"]}]},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"requirements": [["has_turtle", "has_dye", "has_the_recipe"]],
|
||||
"rewards": {"recipes": ["computercraft:turtle_normal_overlays/turtle_trans_overlay"]}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_advanced_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "forge:dyes/red"},
|
||||
{"tag": "forge:dyes/orange"},
|
||||
{"tag": "forge:dyes/yellow"},
|
||||
{"tag": "forge:dyes/green"},
|
||||
{"tag": "forge:dyes/blue"},
|
||||
{"tag": "forge:dyes/purple"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_advanced"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_rainbow_overlay",
|
||||
"result": {"item": "computercraft:turtle_advanced"}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_advanced_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "forge:dyes/light_blue"},
|
||||
{"tag": "forge:dyes/pink"},
|
||||
{"tag": "forge:dyes/white"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_advanced"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_trans_overlay",
|
||||
"result": {"item": "computercraft:turtle_advanced"}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_normal_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "forge:dyes/red"},
|
||||
{"tag": "forge:dyes/orange"},
|
||||
{"tag": "forge:dyes/yellow"},
|
||||
{"tag": "forge:dyes/green"},
|
||||
{"tag": "forge:dyes/blue"},
|
||||
{"tag": "forge:dyes/purple"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_normal"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_rainbow_overlay",
|
||||
"result": {"item": "computercraft:turtle_normal"}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"type": "computercraft:turtle_overlay",
|
||||
"category": "redstone",
|
||||
"group": "computercraft:turtle_normal_overlay",
|
||||
"ingredients": [
|
||||
{"tag": "forge:dyes/light_blue"},
|
||||
{"tag": "forge:dyes/pink"},
|
||||
{"tag": "forge:dyes/white"},
|
||||
{"item": "minecraft:stick"},
|
||||
{"item": "computercraft:turtle_normal"}
|
||||
],
|
||||
"overlay": "computercraft:block/turtle_trans_overlay",
|
||||
"result": {"item": "computercraft:turtle_normal"}
|
||||
}
|
Loading…
Reference in New Issue
Block a user