From c3f781b76288133d892b295b53ccf0d4f4bc26dd Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 26 Mar 2020 23:03:56 +0100 Subject: [PATCH] The Millstone - Added Millstone - Added Milling recipe type - Crushing wheels can apply milling recipes - Added a command for clearing the buffer cache - Any cog-containing machine can now connect to large cogwheels - Added French localization by Kiro - Removed unused lang entries --- .../com/simibubi/create/AllBlockPartials.java | 1 + .../java/com/simibubi/create/AllBlocks.java | 2 + .../java/com/simibubi/create/AllRecipes.java | 2 + .../com/simibubi/create/AllTileEntities.java | 5 + .../simibubi/create/compat/jei/CreateJEI.java | 2 + .../compat/jei/category/CrushingCategory.java | 14 +- .../create/config/StressConfigDefaults.java | 1 + .../command/ClearBufferCacheCommand.java | 27 + .../foundation/command/CreateCommand.java | 9 +- .../create/foundation/utility/AllShapes.java | 30 +- .../contraptions/RotationPropagator.java | 32 +- .../modules/contraptions/base/IRotate.java | 4 +- .../contraptions/base/KineticBlock.java | 2 +- .../crafter/MechanicalCrafterBlock.java | 4 +- .../crusher/AbstractCrushingRecipe.java | 20 + .../components/crusher/CrushingRecipe.java | 3 +- .../CrushingWheelControllerTileEntity.java | 15 +- .../components/millstone/MillingRecipe.java | 33 + .../components/millstone/MillstoneBlock.java | 53 + .../millstone/MillstoneRenderer.java | 16 + .../millstone/MillstoneTileEntity.java | 175 +++ .../mixer/MechanicalMixerBlock.java | 4 +- .../relays/elementary/CogWheelBlock.java | 6 +- .../assets/create/blockstates/millstone.json | 5 + .../resources/assets/create/lang/en_us.json | 41 +- .../resources/assets/create/lang/fr_fr.json | 1174 +++++++++++++++++ .../create/models/block/millstone/casing.json | 163 +++ .../create/models/block/millstone/inner.json | 150 +++ .../create/models/block/millstone/item.json | 211 +++ .../assets/create/models/item/millstone.json | 3 + .../create/textures/block/millstone.png | Bin 0 -> 933 bytes .../create/loot_tables/blocks/millstone.json | 19 + .../contraptions/millstone.json | 32 + .../recipes/{crushing => milling}/allium.json | 2 +- .../{crushing => milling}/andesite.json | 2 +- .../{crushing => milling}/azure_bluet.json | 2 +- .../{crushing => milling}/blue_orchid.json | 2 +- .../recipes/{crushing => milling}/bone.json | 2 +- .../{crushing => milling}/bone_meal.json | 2 +- .../recipes/{crushing => milling}/cactus.json | 2 +- .../{crushing => milling}/charcoal.json | 2 +- .../recipes/{crushing => milling}/clay.json | 2 +- .../recipes/{crushing => milling}/coal.json | 2 +- .../{crushing => milling}/cobblestone.json | 2 +- .../{crushing => milling}/cocoa_beans.json | 2 +- .../{crushing => milling}/cornflower.json | 2 +- .../{crushing => milling}/dandelion.json | 2 +- .../diamond_horse_armor.json | 2 +- .../{crushing => milling}/diorite.json | 2 +- .../recipes/{crushing => milling}/fern.json | 2 +- .../golden_horse_armor.json | 2 +- .../{crushing => milling}/granite.json | 2 +- .../recipes/{crushing => milling}/grass.json | 2 +- .../recipes/{crushing => milling}/gravel.json | 2 +- .../{crushing => milling}/ink_sac.json | 2 +- .../iron_horse_armor.json | 2 +- .../{crushing => milling}/lapis_lazuli.json | 2 +- .../{crushing => milling}/large_fern.json | 2 +- .../leather_horse_armor.json | 2 +- .../recipes/{crushing => milling}/lilac.json | 2 +- .../lily_of_the_valley.json | 2 +- .../{crushing => milling}/orange_tulip.json | 2 +- .../{crushing => milling}/oxeye_daisy.json | 2 +- .../recipes/{crushing => milling}/peony.json | 2 +- .../{crushing => milling}/pink_tulip.json | 2 +- .../recipes/{crushing => milling}/poppy.json | 2 +- .../{crushing => milling}/red_tulip.json | 2 +- .../{crushing => milling}/rose_bush.json | 2 +- .../recipes/{crushing => milling}/saddle.json | 2 +- .../recipes/{crushing => milling}/sand.json | 2 +- .../{crushing => milling}/sugar_cane.json | 2 +- .../{crushing => milling}/sunflower.json | 2 +- .../{crushing => milling}/tall_grass.json | 2 +- .../{crushing => milling}/terracotta.json | 2 +- .../recipes/{crushing => milling}/wheat.json | 2 +- .../{crushing => milling}/white_tulip.json | 2 +- .../{crushing => milling}/wither_rose.json | 2 +- .../recipes/{crushing => milling}/wool.json | 2 +- 78 files changed, 2212 insertions(+), 136 deletions(-) create mode 100644 src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java create mode 100644 src/main/java/com/simibubi/create/modules/contraptions/components/crusher/AbstractCrushingRecipe.java create mode 100644 src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillingRecipe.java create mode 100644 src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneBlock.java create mode 100644 src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneRenderer.java create mode 100644 src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneTileEntity.java create mode 100644 src/main/resources/assets/create/blockstates/millstone.json create mode 100644 src/main/resources/assets/create/lang/fr_fr.json create mode 100644 src/main/resources/assets/create/models/block/millstone/casing.json create mode 100644 src/main/resources/assets/create/models/block/millstone/inner.json create mode 100644 src/main/resources/assets/create/models/block/millstone/item.json create mode 100644 src/main/resources/assets/create/models/item/millstone.json create mode 100644 src/main/resources/assets/create/textures/block/millstone.png create mode 100644 src/main/resources/data/create/loot_tables/blocks/millstone.json create mode 100644 src/main/resources/data/create/recipes/crafting_shaped/contraptions/millstone.json rename src/main/resources/data/create/recipes/{crushing => milling}/allium.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/andesite.json (85%) rename src/main/resources/data/create/recipes/{crushing => milling}/azure_bluet.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/blue_orchid.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/bone.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/bone_meal.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/cactus.json (93%) rename src/main/resources/data/create/recipes/{crushing => milling}/charcoal.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/clay.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/coal.json (88%) rename src/main/resources/data/create/recipes/{crushing => milling}/cobblestone.json (85%) rename src/main/resources/data/create/recipes/{crushing => milling}/cocoa_beans.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/cornflower.json (85%) rename src/main/resources/data/create/recipes/{crushing => milling}/dandelion.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/diamond_horse_armor.json (92%) rename src/main/resources/data/create/recipes/{crushing => milling}/diorite.json (84%) rename src/main/resources/data/create/recipes/{crushing => milling}/fern.json (88%) rename src/main/resources/data/create/recipes/{crushing => milling}/golden_horse_armor.json (94%) rename src/main/resources/data/create/recipes/{crushing => milling}/granite.json (85%) rename src/main/resources/data/create/recipes/{crushing => milling}/grass.json (86%) rename src/main/resources/data/create/recipes/{crushing => milling}/gravel.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/ink_sac.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/iron_horse_armor.json (94%) rename src/main/resources/data/create/recipes/{crushing => milling}/lapis_lazuli.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/large_fern.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/leather_horse_armor.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/lilac.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/lily_of_the_valley.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/orange_tulip.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/oxeye_daisy.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/peony.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/pink_tulip.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/poppy.json (88%) rename src/main/resources/data/create/recipes/{crushing => milling}/red_tulip.json (88%) rename src/main/resources/data/create/recipes/{crushing => milling}/rose_bush.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/saddle.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/sand.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/sugar_cane.json (88%) rename src/main/resources/data/create/recipes/{crushing => milling}/sunflower.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/tall_grass.json (86%) rename src/main/resources/data/create/recipes/{crushing => milling}/terracotta.json (85%) rename src/main/resources/data/create/recipes/{crushing => milling}/wheat.json (91%) rename src/main/resources/data/create/recipes/{crushing => milling}/white_tulip.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/wither_rose.json (89%) rename src/main/resources/data/create/recipes/{crushing => milling}/wool.json (88%) diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index 6b8f9ace1..667f577ca 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -67,6 +67,7 @@ public enum AllBlockPartials { ROPE_COIL("pulley/rope_coil"), ROPE_HALF("pulley/rope_half"), ROPE_HALF_MAGNET("pulley/rope_half_magnet"), + MILL_STONE_COG("millstone/inner"), ; diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index bdc476dce..0ccf8401c 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -31,6 +31,7 @@ import com.simibubi.create.modules.contraptions.components.fan.EncasedFanBlock; import com.simibubi.create.modules.contraptions.components.fan.NozzleBlock; import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelBlock; import com.simibubi.create.modules.contraptions.components.flywheel.engine.FurnaceEngineBlock; +import com.simibubi.create.modules.contraptions.components.millstone.MillstoneBlock; import com.simibubi.create.modules.contraptions.components.mixer.MechanicalMixerBlock; import com.simibubi.create.modules.contraptions.components.motor.MotorBlock; import com.simibubi.create.modules.contraptions.components.press.MechanicalPressBlock; @@ -131,6 +132,7 @@ public enum AllBlocks { CUCKOO_CLOCK(new CuckooClockBlock(false)), MYSTERIOUS_CUCKOO_CLOCK(new CuckooClockBlock(true)), + MILLSTONE(new MillstoneBlock()), CRUSHING_WHEEL(new CrushingWheelBlock()), CRUSHING_WHEEL_CONTROLLER(new CrushingWheelControllerBlock()), MECHANICAL_PRESS(new MechanicalPressBlock()), diff --git a/src/main/java/com/simibubi/create/AllRecipes.java b/src/main/java/com/simibubi/create/AllRecipes.java index fea4f12fc..b92c1ccdd 100644 --- a/src/main/java/com/simibubi/create/AllRecipes.java +++ b/src/main/java/com/simibubi/create/AllRecipes.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.modules.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.modules.contraptions.components.crusher.CrushingRecipe; import com.simibubi.create.modules.contraptions.components.fan.SplashingRecipe; +import com.simibubi.create.modules.contraptions.components.millstone.MillingRecipe; import com.simibubi.create.modules.contraptions.components.mixer.MixingRecipe; import com.simibubi.create.modules.contraptions.components.press.PressingRecipe; import com.simibubi.create.modules.contraptions.components.saw.CuttingRecipe; @@ -30,6 +31,7 @@ public enum AllRecipes { BLOCKZAPPER_UPGRADE(BlockzapperUpgradeRecipe.Serializer::new, IRecipeType.CRAFTING), MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), CRUSHING(processingSerializer(CrushingRecipe::new)), + MILLING(processingSerializer(MillingRecipe::new)), SPLASHING(processingSerializer(SplashingRecipe::new)), PRESSING(processingSerializer(PressingRecipe::new)), CUTTING(processingSerializer(CuttingRecipe::new)), diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index f23f5cd83..6ed91379b 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -34,6 +34,8 @@ import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelRend import com.simibubi.create.modules.contraptions.components.flywheel.FlywheelTileEntity; import com.simibubi.create.modules.contraptions.components.flywheel.engine.EngineRenderer; import com.simibubi.create.modules.contraptions.components.flywheel.engine.FurnaceEngineTileEntity; +import com.simibubi.create.modules.contraptions.components.millstone.MillstoneRenderer; +import com.simibubi.create.modules.contraptions.components.millstone.MillstoneTileEntity; import com.simibubi.create.modules.contraptions.components.mixer.MechanicalMixerTileEntity; import com.simibubi.create.modules.contraptions.components.mixer.MechanicalMixerTileEntityRenderer; import com.simibubi.create.modules.contraptions.components.motor.MotorTileEntity; @@ -129,6 +131,8 @@ public enum AllTileEntities { HARVESTER(HarvesterTileEntity::new, AllBlocks.HARVESTER), FLYWHEEL(FlywheelTileEntity::new, AllBlocks.FLYWHEEL), FURNACE_ENGINE(FurnaceEngineTileEntity::new, AllBlocks.FURNACE_ENGINE), + + MILLSTONE(MillstoneTileEntity::new, AllBlocks.MILLSTONE), CRUSHING_WHEEL(CrushingWheelTileEntity::new, AllBlocks.CRUSHING_WHEEL), CRUSHING_WHEEL_CONTROLLER(CrushingWheelControllerTileEntity::new, AllBlocks.CRUSHING_WHEEL_CONTROLLER), WATER_WHEEL(WaterWheelTileEntity::new, AllBlocks.WATER_WHEEL), @@ -216,6 +220,7 @@ public enum AllTileEntities { bind(PulleyTileEntity.class, new PulleyRenderer()); bind(HarvesterTileEntity.class, new HarvesterTileEntityRenderer()); + bind(MillstoneTileEntity.class, new MillstoneRenderer()); bind(CrushingWheelTileEntity.class, new KineticTileEntityRenderer()); bind(MechanicalPressTileEntity.class, new MechanicalPressTileEntityRenderer()); bind(MechanicalMixerTileEntity.class, new MechanicalMixerTileEntityRenderer()); diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index e6104d6d6..61a021107 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -108,6 +108,8 @@ public class CreateJEI implements IModPlugin { @Override public void registerRecipes(IRecipeRegistration registration) { registration.addRecipes(findRecipes(AllRecipes.CRUSHING), crushingCategory.getUid()); + registration.addRecipes(findRecipesByTypeExcluding(AllRecipes.MILLING.getType(), AllRecipes.CRUSHING.getType()), + crushingCategory.getUid()); registration.addRecipes(findRecipes(AllRecipes.SPLASHING), splashingCategory.getUid()); registration.addRecipes(findRecipes(AllRecipes.PRESSING), pressingCategory.getUid()); registration.addRecipes(findRecipesById(AllRecipes.BLOCKZAPPER_UPGRADE.serializer.getRegistryName()), diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java index 28f23f364..8a4da5a26 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java @@ -12,7 +12,7 @@ import com.simibubi.create.compat.jei.DoubleItemIcon; import com.simibubi.create.compat.jei.EmptyBackground; import com.simibubi.create.compat.jei.category.animations.AnimatedCrushingWheels; import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.modules.contraptions.components.crusher.CrushingRecipe; +import com.simibubi.create.modules.contraptions.components.crusher.AbstractCrushingRecipe; import com.simibubi.create.modules.contraptions.processing.ProcessingOutput; import mezz.jei.api.constants.VanillaTypes; @@ -24,7 +24,7 @@ import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -public class CrushingCategory implements IRecipeCategory { +public class CrushingCategory implements IRecipeCategory { private static ResourceLocation ID = new ResourceLocation(Create.ID, "crushing"); private AnimatedCrushingWheels crushingWheels = new AnimatedCrushingWheels(); @@ -47,8 +47,8 @@ public class CrushingCategory implements IRecipeCategory { } @Override - public Class getRecipeClass() { - return CrushingRecipe.class; + public Class getRecipeClass() { + return AbstractCrushingRecipe.class; } @Override @@ -62,13 +62,13 @@ public class CrushingCategory implements IRecipeCategory { } @Override - public void setIngredients(CrushingRecipe recipe, IIngredients ingredients) { + public void setIngredients(AbstractCrushingRecipe recipe, IIngredients ingredients) { ingredients.setInputIngredients(recipe.getIngredients()); ingredients.setOutputs(VanillaTypes.ITEM, recipe.getPossibleOutputs()); } @Override - public void setRecipe(IRecipeLayout recipeLayout, CrushingRecipe recipe, IIngredients ingredients) { + public void setRecipe(IRecipeLayout recipeLayout, AbstractCrushingRecipe recipe, IIngredients ingredients) { IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); itemStacks.init(0, true, 50, 2); itemStacks.set(0, Arrays.asList(recipe.getIngredients().get(0).getMatchingStacks())); @@ -85,7 +85,7 @@ public class CrushingCategory implements IRecipeCategory { } @Override - public void draw(CrushingRecipe recipe, double mouseX, double mouseY) { + public void draw(AbstractCrushingRecipe recipe, double mouseX, double mouseY) { List results = recipe.getRollableResults(); ScreenResources.JEI_SLOT.draw(50, 2); ScreenResources.JEI_DOWN_ARROW.draw(72, 7); diff --git a/src/main/java/com/simibubi/create/config/StressConfigDefaults.java b/src/main/java/com/simibubi/create/config/StressConfigDefaults.java index 84fa82524..9887d95dc 100644 --- a/src/main/java/com/simibubi/create/config/StressConfigDefaults.java +++ b/src/main/java/com/simibubi/create/config/StressConfigDefaults.java @@ -40,6 +40,7 @@ public class StressConfigDefaults { case SAW: case DEPLOYER: case MECHANICAL_MIXER: + case MILLSTONE: return 4; case MECHANICAL_CRAFTER: diff --git a/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java b/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java new file mode 100644 index 000000000..2398d9406 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java @@ -0,0 +1,27 @@ +package com.simibubi.create.foundation.command; + +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.simibubi.create.CreateClient; + +import net.minecraft.command.CommandSource; +import net.minecraft.command.Commands; +import net.minecraft.util.text.StringTextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.DistExecutor; + +public class ClearBufferCacheCommand { + + static ArgumentBuilder register() { + return Commands.literal("clearRenderBuffers").requires(cs -> cs.hasPermissionLevel(0)).executes(ctx -> { + DistExecutor.runWhenOn(Dist.CLIENT, () -> ClearBufferCacheCommand::execute); + ctx.getSource().sendFeedback(new StringTextComponent("Cleared rendering buffers."), true); + return 1; + }); + } + + @OnlyIn(Dist.CLIENT) + private static void execute() { + CreateClient.bufferCache.invalidate(); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java b/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java index f8b7b747e..cc55eb455 100644 --- a/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java @@ -1,6 +1,7 @@ package com.simibubi.create.foundation.command; import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.builder.ArgumentBuilder; import net.minecraft.command.CommandSource; import net.minecraft.command.Commands; @@ -9,6 +10,12 @@ public class CreateCommand { public CreateCommand(CommandDispatcher dispatcher) { // KillTPSCommand.register(dispatcher); Commented out for release - dispatcher.register(Commands.literal("create").then(ToggleDebugCommand.register())); + addCreateCommand(dispatcher, ToggleDebugCommand.register()); + addCreateCommand(dispatcher, ClearBufferCacheCommand.register()); + } + + public void addCreateCommand(CommandDispatcher dispatcher, + ArgumentBuilder register) { + dispatcher.register(Commands.literal("create").then(register)); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java b/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java index c0ac78e51..ed2d7f670 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java +++ b/src/main/java/com/simibubi/create/foundation/utility/AllShapes.java @@ -29,10 +29,10 @@ public class AllShapes { SIX_VOXEL_POLE = shape(5, 0, 5, 11, 16, 11).forAxis(), BELT_FUNNEL = shape(3, -4, 11, 13, 8, 17).forHorizontal(SOUTH), FUNNEL = shape(1, 1, 13, 15, 15, 17).forDirectional(SOUTH), - EXTRACTOR = shape(4, 2, 11, 12, 10, 17).forDirectional(SOUTH) - .withVerticalShapes(cuboid(4, 11, 4, 12, 17, 12)), - TRANSPOSER = shape(4, 4, -1, 12, 12, 1).add(5, 5, 0, 11, 11, 16).add(4, 4, 11, 12, 12, 17) - .forDirectional(SOUTH), + EXTRACTOR = + shape(4, 2, 11, 12, 10, 17).forDirectional(SOUTH).withVerticalShapes(cuboid(4, 11, 4, 12, 17, 12)), + TRANSPOSER = + shape(4, 4, -1, 12, 12, 1).add(5, 5, 0, 11, 11, 16).add(4, 4, 11, 12, 12, 17).forDirectional(SOUTH), FURNACE_ENGINE = shape(1, 1, 0, 15, 15, 16).add(0, 0, 9, 16, 16, 14).forHorizontal(Direction.SOUTH), PORTABLE_STORAGE_INTERFACE = shape(0, 0, 0, 16, 12, 16).add(3, 12, 3, 13, 16, 13).forDirectional(), PULLEY = shape(0, 0, 0, 16, 16, 2).add(1, 1, 2, 15, 15, 14).add(0, 0, 14, 16, 16, 16).forHorizontalAxis(), @@ -57,6 +57,7 @@ public class AllShapes { BELT_COLLISION_MASK = cuboid(0, 0, 0, 16, 19, 16), SCHEMATICANNON_SHAPE = shape(1, 0, 1, 15, 8, 15).add(0.5, 8, 0.5, 15.5, 11, 15.5).build(), PULLEY_MAGNET = shape(3, 0, 3, 13, 2, 13).add(FOUR_VOXEL_POLE.get(UP)).build(), + MILLSTONE = shape(0, 0, 0, 16, 6, 16).add(2, 6, 2, 14, 13, 14).add(3, 13, 3, 13, 16, 13).build(), GAUGE_SHAPE_UP = shape(1, 0, 0, 15, 2, 16).add(2, 2, 1, 14, 14, 15).build() ; @@ -64,15 +65,16 @@ public class AllShapes { // Internally Shared Shapes private static final VoxelShape - PISTON_HEAD = Blocks.PISTON_HEAD.getDefaultState().with(DirectionalBlock.FACING, UP) - .with(PistonHeadBlock.SHORT, true).getShape(null, null), + PISTON_HEAD = + Blocks.PISTON_HEAD.getDefaultState().with(DirectionalBlock.FACING, UP).with(PistonHeadBlock.SHORT, true) + .getShape(null, null), PISTON_EXTENDED = shape(CASING_12PX.get(UP)).add(FOUR_VOXEL_POLE.get(Axis.Y)).build(), SMALL_GEAR_SHAPE = cuboid(2, 6, 2, 14, 10, 14), LARGE_GEAR_SHAPE = cuboid(0, 6, 0, 16, 10, 16), VERTICAL_TABLET_SHAPE = cuboid(3, 1, -1, 13, 15, 3), SQUARE_TABLET_SHAPE = cuboid(2, 2, -1, 14, 14, 3), - LOGISTICS_TABLE_SLOPE = shape(0, 10, 15, 16, 14, 10.667).add(0, 12, 10.667, 16, 16, 6.333) - .add(0, 14, 6.333, 16, 18, 2).build(), - SCHEMATICS_TABLE_SLOPE = shape(0, 10, 16, 16, 14, 11).add(0, 12, 11, 16, 16, 6).add(0, 14, 6, 16, 18, 1) - .build() + LOGISTICS_TABLE_SLOPE = + shape(0, 10, 15, 16, 14, 10.667).add(0, 12, 10.667, 16, 16, 6.333).add(0, 14, 6.333, 16, 18, 2).build(), + SCHEMATICS_TABLE_SLOPE = + shape(0, 10, 16, 16, 14, 11).add(0, 12, 11, 16, 16, 6).add(0, 14, 6, 16, 18, 1).build() ; @@ -84,8 +86,8 @@ public class AllShapes { SMALL_GEAR = shape(SMALL_GEAR_SHAPE).add(SIX_VOXEL_POLE.get(Axis.Y)).forAxis(), LARGE_GEAR = shape(LARGE_GEAR_SHAPE).add(SIX_VOXEL_POLE.get(Axis.Y)).forAxis(), LOGISTICAL_CONTROLLER = shape(SQUARE_TABLET_SHAPE).forDirectional(SOUTH), - REDSTONE_BRIDGE = shape(VERTICAL_TABLET_SHAPE).forDirectional(SOUTH) - .withVerticalShapes(LOGISTICAL_CONTROLLER.get(UP)), + REDSTONE_BRIDGE = + shape(VERTICAL_TABLET_SHAPE).forDirectional(SOUTH).withVerticalShapes(LOGISTICAL_CONTROLLER.get(UP)), LOGISTICS_TABLE = shape(TABLE_POLE_SHAPE).add(LOGISTICS_TABLE_SLOPE).forHorizontal(SOUTH), SCHEMATICS_TABLE = shape(TABLE_POLE_SHAPE).add(SCHEMATICS_TABLE_SLOPE).forDirectional(SOUTH) @@ -120,8 +122,8 @@ public class AllShapes { } Builder erase(double x1, double y1, double z1, double x2, double y2, double z2) { - this.shape = VoxelShapes.combineAndSimplify(shape, cuboid(x1, y1, z1, x2, y2, z2), - IBooleanFunction.ONLY_FIRST); + this.shape = + VoxelShapes.combineAndSimplify(shape, cuboid(x1, y1, z1, x2, y2, z2), IBooleanFunction.ONLY_FIRST); return this; } diff --git a/src/main/java/com/simibubi/create/modules/contraptions/RotationPropagator.java b/src/main/java/com/simibubi/create/modules/contraptions/RotationPropagator.java index 0e4252954..15bfe06ba 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/RotationPropagator.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/RotationPropagator.java @@ -1,7 +1,6 @@ package com.simibubi.create.modules.contraptions; import static com.simibubi.create.AllBlocks.BELT; -import static com.simibubi.create.AllBlocks.COGWHEEL; import static com.simibubi.create.AllBlocks.LARGE_COGWHEEL; import static net.minecraft.state.properties.BlockStateProperties.AXIS; @@ -58,8 +57,8 @@ public class RotationPropagator { alignedAxes && definitionFrom.hasShaftTowards(world, from.getPos(), stateFrom, direction) && definitionTo.hasShaftTowards(world, to.getPos(), stateTo, direction.getOpposite()); - boolean connectedByGears = definitionFrom.hasCogsTowards(world, from.getPos(), stateFrom, direction) - && definitionTo.hasCogsTowards(world, to.getPos(), stateTo, direction.getOpposite()); + boolean connectedByGears = definitionFrom.hasIntegratedCogwheel(world, from.getPos(), stateFrom) + && definitionTo.hasIntegratedCogwheel(world, to.getPos(), stateTo); // Belt <-> Belt if (from instanceof BeltTileEntity && to instanceof BeltTileEntity && !connectedByAxis) { @@ -91,10 +90,12 @@ public class RotationPropagator { } // Gear <-> Large Gear - if (isLargeToSmallGear(stateFrom, stateTo, diff)) - return -2f; - if (isLargeToSmallGear(stateTo, stateFrom, diff)) - return -.5f; + if (LARGE_COGWHEEL.typeOf(stateFrom) && definitionTo.hasIntegratedCogwheel(world, to.getPos(), stateTo)) + if (isLargeToSmallGear(stateFrom, stateTo, definitionTo, diff)) + return -2f; + if (LARGE_COGWHEEL.typeOf(stateTo) && definitionFrom.hasIntegratedCogwheel(world, from.getPos(), stateFrom)) + if (isLargeToSmallGear(stateTo, stateFrom, definitionFrom, diff)) + return -.5f; // Gear <-> Gear if (connectedByGears) { @@ -102,6 +103,8 @@ public class RotationPropagator { return 0; if (LARGE_COGWHEEL.typeOf(stateTo)) return 0; + if (direction.getAxis() == definitionFrom.getRotationAxis(stateFrom)) + return 0; if (definitionFrom.getRotationAxis(stateFrom) == definitionTo.getRotationAxis(stateTo)) return -1; } @@ -157,11 +160,9 @@ public class RotationPropagator { return 1; } - private static boolean isLargeToSmallGear(BlockState from, BlockState to, BlockPos diff) { - if (!LARGE_COGWHEEL.typeOf(from) || !COGWHEEL.typeOf(to)) - return false; + private static boolean isLargeToSmallGear(BlockState from, BlockState to, IRotate defTo, BlockPos diff) { Axis axisFrom = from.get(AXIS); - if (axisFrom != to.get(AXIS)) + if (axisFrom != defTo.getRotationAxis(to)) return false; if (axisFrom.getCoordinate(diff.getX(), diff.getY(), diff.getZ()) != 0) return false; @@ -407,8 +408,13 @@ public class RotationPropagator { BlockState blockState = te.getBlockState(); boolean isLargeWheel = LARGE_COGWHEEL.typeOf(blockState); - if (COGWHEEL.typeOf(blockState) || isLargeWheel || BELT.typeOf(blockState)) { - Axis axis = ((IRotate) blockState.getBlock()).getRotationAxis(blockState); + if (!(blockState.getBlock() instanceof IRotate)) + return neighbours; + IRotate block = (IRotate) blockState.getBlock(); + + if (block.hasIntegratedCogwheel(te.getWorld(), te.getPos(), blockState) || isLargeWheel + || BELT.typeOf(blockState)) { + Axis axis = block.getRotationAxis(blockState); BlockPos.getAllInBox(new BlockPos(-1, -1, -1), new BlockPos(1, 1, 1)).forEach(offset -> { if (!isLargeWheel && axis.getCoordinate(offset.getX(), offset.getY(), offset.getZ()) != 0) diff --git a/src/main/java/com/simibubi/create/modules/contraptions/base/IRotate.java b/src/main/java/com/simibubi/create/modules/contraptions/base/IRotate.java index 917ac8c56..2c1ea85bb 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/base/IRotate.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/base/IRotate.java @@ -118,8 +118,8 @@ public interface IRotate extends IWrenchable { } public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face); - - public boolean hasCogsTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face); + + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state); public Axis getRotationAxis(BlockState state); diff --git a/src/main/java/com/simibubi/create/modules/contraptions/base/KineticBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/base/KineticBlock.java index 215172baa..f74aab4f4 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/base/KineticBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/base/KineticBlock.java @@ -55,7 +55,7 @@ public abstract class KineticBlock extends Block implements IRotate { } @Override - public boolean hasCogsTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { return false; } diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crafter/MechanicalCrafterBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crafter/MechanicalCrafterBlock.java index 9f13847b3..78c0f96d4 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/crafter/MechanicalCrafterBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crafter/MechanicalCrafterBlock.java @@ -67,8 +67,8 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock } @Override - public boolean hasCogsTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return state.get(HORIZONTAL_FACING).getAxis() != face.getAxis(); + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { + return true; } @Override diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/AbstractCrushingRecipe.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/AbstractCrushingRecipe.java new file mode 100644 index 000000000..a3bc18aa2 --- /dev/null +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/AbstractCrushingRecipe.java @@ -0,0 +1,20 @@ +package com.simibubi.create.modules.contraptions.components.crusher; + +import java.util.List; + +import com.simibubi.create.AllRecipes; +import com.simibubi.create.modules.contraptions.processing.ProcessingIngredient; +import com.simibubi.create.modules.contraptions.processing.ProcessingOutput; +import com.simibubi.create.modules.contraptions.processing.ProcessingRecipe; + +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.items.wrapper.RecipeWrapper; + +public abstract class AbstractCrushingRecipe extends ProcessingRecipe { + + public AbstractCrushingRecipe(AllRecipes recipeType, ResourceLocation id, String group, + List ingredients, List results, int processingDuration) { + super(recipeType, id, group, ingredients, results, processingDuration); + } + +} diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingRecipe.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingRecipe.java index 0d424da82..159056b95 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingRecipe.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingRecipe.java @@ -5,13 +5,12 @@ import java.util.List; import com.simibubi.create.AllRecipes; import com.simibubi.create.modules.contraptions.processing.ProcessingIngredient; import com.simibubi.create.modules.contraptions.processing.ProcessingOutput; -import com.simibubi.create.modules.contraptions.processing.ProcessingRecipe; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.items.wrapper.RecipeWrapper; -public class CrushingRecipe extends ProcessingRecipe { +public class CrushingRecipe extends AbstractCrushingRecipe { public CrushingRecipe(ResourceLocation id, String group, List ingredients, List results, int processingDuration) { diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java index 71f35b7f6..9f2feb3af 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/crusher/CrushingWheelControllerTileEntity.java @@ -13,6 +13,7 @@ import com.simibubi.create.foundation.block.SyncedTileEntity; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.modules.contraptions.processing.ProcessingInventory; +import com.simibubi.create.modules.contraptions.processing.ProcessingRecipe; import net.minecraft.entity.Entity; import net.minecraft.entity.item.ItemEntity; @@ -172,8 +173,7 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen } private void applyRecipe() { - Optional recipe = - world.getRecipeManager().getRecipe(AllRecipes.CRUSHING.getType(), wrapper, world); + Optional> recipe = findRecipe(); List list = new ArrayList<>(); if (recipe.isPresent()) { @@ -194,6 +194,14 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen } + public Optional> findRecipe() { + Optional> crushingRecipe = + world.getRecipeManager().getRecipe(AllRecipes.CRUSHING.getType(), wrapper, world); + if (!crushingRecipe.isPresent()) + crushingRecipe = world.getRecipeManager().getRecipe(AllRecipes.MILLING.getType(), wrapper, world); + return crushingRecipe; + } + @Override public CompoundNBT write(CompoundNBT compound) { if (hasEntity() && !isFrozen()) @@ -222,8 +230,7 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen } private void itemInserted(ItemStack stack) { - Optional recipe = - world.getRecipeManager().getRecipe(AllRecipes.CRUSHING.getType(), wrapper, world); + Optional> recipe = findRecipe(); inventory.remainingTime = recipe.isPresent() ? recipe.get().getProcessingDuration() : 100; inventory.appliedRecipe = false; } diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillingRecipe.java b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillingRecipe.java new file mode 100644 index 000000000..c9a480b35 --- /dev/null +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillingRecipe.java @@ -0,0 +1,33 @@ +package com.simibubi.create.modules.contraptions.components.millstone; + +import java.util.List; + +import com.simibubi.create.AllRecipes; +import com.simibubi.create.modules.contraptions.components.crusher.AbstractCrushingRecipe; +import com.simibubi.create.modules.contraptions.processing.ProcessingIngredient; +import com.simibubi.create.modules.contraptions.processing.ProcessingOutput; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.items.wrapper.RecipeWrapper; + +public class MillingRecipe extends AbstractCrushingRecipe { + + public MillingRecipe(ResourceLocation id, String group, List ingredients, + List results, int processingDuration) { + super(AllRecipes.MILLING, id, group, ingredients, results, processingDuration); + } + + @Override + public boolean matches(RecipeWrapper inv, World worldIn) { + if (inv.isEmpty()) + return false; + return ingredients.get(0).test(inv.getStackInSlot(0)); + } + + @Override + protected int getMaxOutputCount() { + return 7; + } + +} diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneBlock.java new file mode 100644 index 000000000..28adb70db --- /dev/null +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneBlock.java @@ -0,0 +1,53 @@ +package com.simibubi.create.modules.contraptions.components.millstone; + +import com.simibubi.create.foundation.utility.AllShapes; +import com.simibubi.create.modules.contraptions.base.KineticBlock; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; + +public class MillstoneBlock extends KineticBlock { + + public MillstoneBlock() { + super(Properties.from(Blocks.ANDESITE)); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return new MillstoneTileEntity(); + } + + @Override + protected boolean hasStaticPart() { + return true; + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return AllShapes.MILLSTONE; + } + + @Override + public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { + return face == Direction.DOWN; + } + + @Override + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { + return true; + } + + @Override + public Axis getRotationAxis(BlockState state) { + return Axis.Y; + } + +} diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneRenderer.java b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneRenderer.java new file mode 100644 index 000000000..ff8b12d84 --- /dev/null +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneRenderer.java @@ -0,0 +1,16 @@ +package com.simibubi.create.modules.contraptions.components.millstone; + +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.utility.SuperByteBuffer; +import com.simibubi.create.modules.contraptions.base.KineticTileEntity; +import com.simibubi.create.modules.contraptions.base.KineticTileEntityRenderer; + +public class MillstoneRenderer extends KineticTileEntityRenderer { + + @Override + protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { + return CreateClient.bufferCache.renderPartial(AllBlockPartials.MILL_STONE_COG, te.getBlockState()); + } + +} diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneTileEntity.java b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneTileEntity.java new file mode 100644 index 000000000..0059bb366 --- /dev/null +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/millstone/MillstoneTileEntity.java @@ -0,0 +1,175 @@ +package com.simibubi.create.modules.contraptions.components.millstone; + +import java.util.Optional; + +import com.simibubi.create.AllRecipes; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.foundation.utility.VecHelper; +import com.simibubi.create.modules.contraptions.base.KineticTileEntity; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.particles.ItemParticleData; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.wrapper.RecipeWrapper; + +public class MillstoneTileEntity extends KineticTileEntity { + + public ItemStackHandler inputInv; + public ItemStackHandler outputInv; + public int timer; + private MillingRecipe lastRecipe; + + public MillstoneTileEntity() { + super(AllTileEntities.MILLSTONE.type); + inputInv = new ItemStackHandler(1); + outputInv = new ItemStackHandler(9); + } + + @Override + public void tick() { + super.tick(); + + if (getSpeed() == 0) + return; + for (int i = 0; i < outputInv.getSlots(); i++) + if (outputInv.getStackInSlot(i).getCount() == outputInv.getSlotLimit(i)) + return; + + if (timer > 0) { + timer -= getProcessingSpeed(); + + if (world.isRemote) { + spawnParticles(); + return; + } + if (timer <= 0) + process(); + return; + } + + if (inputInv.getStackInSlot(0).isEmpty()) + return; + + RecipeWrapper inventoryIn = new RecipeWrapper(inputInv); + if (lastRecipe == null || !lastRecipe.matches(inventoryIn, world)) { + Optional recipe = + world.getRecipeManager().getRecipe(AllRecipes.MILLING.getType(), inventoryIn, world); + inputInv.getStackInSlot(0).shrink(1); + if (!recipe.isPresent()) { + timer = 100; + sendData(); + } else { + lastRecipe = recipe.get(); + timer = lastRecipe.getProcessingDuration(); + sendData(); + } + return; + } + + timer = lastRecipe.getProcessingDuration(); + sendData(); + } + + private void process() { + RecipeWrapper inventoryIn = new RecipeWrapper(inputInv); + ItemStack stackInSlot = inputInv.getStackInSlot(0); + stackInSlot.shrink(1); + inputInv.setStackInSlot(0, stackInSlot); + + if (lastRecipe == null || !lastRecipe.matches(inventoryIn, world)) { + Optional recipe = + world.getRecipeManager().getRecipe(AllRecipes.MILLING.getType(), inventoryIn, world); + if (!recipe.isPresent()) + return; + lastRecipe = recipe.get(); + } + + lastRecipe.rollResults().forEach(stack -> ItemHandlerHelper.insertItemStacked(outputInv, stack, false)); + sendData(); + markDirty(); + } + + public void spawnParticles() { + ItemStack stackInSlot = inputInv.getStackInSlot(0); + if (stackInSlot.isEmpty()) + return; + + ItemParticleData data = new ItemParticleData(ParticleTypes.ITEM, stackInSlot); + float angle = world.rand.nextFloat() * 360; + Vec3d offset = new Vec3d(0, 0, 0.5f); + offset = VecHelper.rotate(offset, angle, Axis.Y); + Vec3d target = VecHelper.rotate(offset, getSpeed() > 0 ? 25 : -25, Axis.Y); + + Vec3d center = offset.add(VecHelper.getCenterOf(pos)); + target = VecHelper.offsetRandomly(target.subtract(offset), world.rand, 1 / 128f); + world.addParticle(data, center.x, center.y, center.z, target.x, target.y, target.z); + } + + @Override + public CompoundNBT write(CompoundNBT compound) { + compound.putInt("Timer", timer); + compound.put("InputInventory", inputInv.serializeNBT()); + compound.put("OutputInventory", outputInv.serializeNBT()); + return super.write(compound); + } + + @Override + public void read(CompoundNBT compound) { + timer = compound.getInt("Timer"); + inputInv.deserializeNBT(compound.getCompound("InputInventory")); + outputInv.deserializeNBT(compound.getCompound("OutputInventory")); + super.read(compound); + } + + public int getProcessingSpeed() { + return MathHelper.clamp((int) Math.abs(getSpeed() / 16f), 1, 512); + } + + @Override + public LazyOptional getCapability(Capability cap, Direction side) { + if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) + return LazyOptional.of(MillstoneInventoryHandler::new).cast(); + return super.getCapability(cap, side); + } + + private class MillstoneInventoryHandler extends CombinedInvWrapper { + + public MillstoneInventoryHandler() { + super(inputInv, outputInv); + } + + @Override + public boolean isItemValid(int slot, ItemStack stack) { + if (outputInv == getHandlerFromIndex(getIndexForSlot(slot))) + return false; + return super.isItemValid(slot, stack); + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + if (outputInv == getHandlerFromIndex(getIndexForSlot(slot))) + return stack; + return super.insertItem(slot, stack, simulate); + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + if (inputInv == getHandlerFromIndex(getIndexForSlot(slot))) + return ItemStack.EMPTY; + return super.extractItem(slot, amount, simulate); + } + + } + +} diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/mixer/MechanicalMixerBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/components/mixer/MechanicalMixerBlock.java index cd1985525..f4558e1e4 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/mixer/MechanicalMixerBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/mixer/MechanicalMixerBlock.java @@ -66,8 +66,8 @@ public class MechanicalMixerBlock extends KineticBlock } @Override - public boolean hasCogsTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis().isHorizontal(); + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { + return true; } @Override diff --git a/src/main/java/com/simibubi/create/modules/contraptions/relays/elementary/CogWheelBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/relays/elementary/CogWheelBlock.java index 08f271c46..34edfe075 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/relays/elementary/CogWheelBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/relays/elementary/CogWheelBlock.java @@ -64,7 +64,7 @@ public class CogWheelBlock extends ShaftBlock implements IHaveCustomBlockItem { } if (!(block instanceof IRotate) - || !(((IRotate) block).hasCogsTowards(world, placedOnPos, placedAgainst, context.getFace()))) { + || !(((IRotate) block).hasIntegratedCogwheel(world, placedOnPos, placedAgainst))) { Axis preferredAxis = getPreferredAxis(context); if (preferredAxis != null) return this.getDefaultState().with(AXIS, preferredAxis); @@ -91,8 +91,8 @@ public class CogWheelBlock extends ShaftBlock implements IHaveCustomBlockItem { // IRotate @Override - public boolean hasCogsTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return !isLarge && face.getAxis() != state.get(AXIS); + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { + return !isLarge; } @Override diff --git a/src/main/resources/assets/create/blockstates/millstone.json b/src/main/resources/assets/create/blockstates/millstone.json new file mode 100644 index 000000000..4d78d4cab --- /dev/null +++ b/src/main/resources/assets/create/blockstates/millstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "create:block/millstone/casing" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/lang/en_us.json b/src/main/resources/assets/create/lang/en_us.json index 1c22e1a43..9b03596d7 100644 --- a/src/main/resources/assets/create/lang/en_us.json +++ b/src/main/resources/assets/create/lang/en_us.json @@ -16,7 +16,6 @@ "item.create.goggles": "Engineer's Goggles", "item.create.filter": "Filter", "item.create.property_filter": "Attribute Filter", - "item.create.logistical_filter": "Address Filter", "item.create.rose_quartz": "Rose Quartz", "item.create.polished_rose_quartz": "Polished Rose Quartz", "item.create.refined_radiance": "Refined Radiance", @@ -53,13 +52,6 @@ "item.create.electron_tube": "Electron Tube", "item.create.integrated_circuit": "Integrated Circuit", - "item.create.logistical_controller_supply": "Item Supply", - "item.create.logistical_controller_request": "Item Request", - "item.create.logistical_controller_storage": "Item Storage", - "item.create.logistical_controller_calculation": "Ingredient Calculator", - "item.create.logistical_controller_transactions": "Task Manager", - "item.create.logistical_dial": "Logistical Dial", - "item.create.blazing_pickaxe": "Blazing Pickaxe", "item.create.blazing_shovel": "Blazing Shovel", "item.create.blazing_axe": "Blazing Axe", @@ -101,6 +93,7 @@ "block.create.cuckoo_clock": "Cuckoo Clock", "block.create.creative_motor": "Motor", "block.create.belt": "Mechanical Belt", + "block.create.millstone": "Millstone", "block.create.crushing_wheel": "Crushing Wheel", "block.create.drill": "Mechanical Drill", "block.create.portable_storage_interface": "Portable Storage Interface", @@ -147,11 +140,6 @@ "block.create.toggle_latch": "Powered Toggle Latch", "block.create.flexpeater": "Adjustable Repeater", "block.create.entity_detector": "Belt Observer", - "block.create.logistical_casing": "Logistical Casing", - "block.create.logistical_controller": "Logistical Controller", - "block.create.logistical_index": "Logistical Index", - "block.create.logisticians_table": "Logistician's Table", - "block.create.package_funnel": "Package Funnel", "block.create.belt_tunnel": "Conveyor Tunnel", "block.create.sequenced_gearshift": "Sequenced Gearshift", @@ -269,8 +257,6 @@ "block.create.cocoa_log": "Cocoa Jungle Log", - "block.create.shop_shelf": "Shelf", - "_comment": "-------------------------] UI & MESSAGES [------------------------------------------------", "death.attack.create.crush": "%1$s was processed by Crushing Wheels", @@ -544,20 +530,6 @@ "create.schematicannon.status.schematicNotPlaced": "Schematic Not Deployed", "create.schematicannon.status.schematicExpired": "Schematic File Expired", - "create.gui.index.title": "Logistical Index", - "create.gui.index.targetAddressSelect": "Destination Address", - "create.gui.index.confirmOrder": "Confirm Order", - - "create.logistics.priority": "Priority", - "create.logistics.priority.lowest": "Lowest", - "create.logistics.priority.low": "Low", - "create.logistics.priority.high": "High", - "create.logistics.priority.highest": "Highest", - "create.gui.logistical_controller.active_mode": "Active Mode", - "create.gui.logistical_controller.passive_mode": "Passive Mode", - "create.gui.requester.requestedItemCount": "Requested Amount", - "create.gui.storage.passiveModeOnly": "Item Storage is Passive Only", - "create.gui.filter.blacklist": "Blacklist", "create.gui.filter.blacklist.description": "Items pass if they do NOT match any of the above. An empty Blacklist accepts everything.", "create.gui.filter.whitelist": "Whitelist", @@ -1161,16 +1133,5 @@ "tool.create.rose_quartz.tooltip": "ROSE QUARTZ TOOLS", "tool.create.rose_quartz.tooltip.summary": "This tool grants you a _greater_ _reach_ for _breaking_ _blocks_ or _placing_ _blocks_ from the off-hand.", - "item.create.logistical_controller_calculation.tooltip": "WIP", - "item.create.logistical_controller_request.tooltip": "WIP", - "item.create.logistical_controller_storage.tooltip": "WIP", - "item.create.logistical_controller_supply.tooltip": "WIP", - "item.create.logistical_controller_transactions.tooltip": "WIP", - "block.create.logistical_index.tooltip": "WIP", - "block.create.package_funnel.tooltip": "WIP", - "block.create.logisticians_table.tooltip": "WIP", - "item.create.logistical_dial.tooltip": "WIP", - "item.create.logistical_filter.tooltip": "WIP", - "itemGroup.create": "Create" } diff --git a/src/main/resources/assets/create/lang/fr_fr.json b/src/main/resources/assets/create/lang/fr_fr.json new file mode 100644 index 000000000..ae456fc26 --- /dev/null +++ b/src/main/resources/assets/create/lang/fr_fr.json @@ -0,0 +1,1174 @@ +{ + + "_comment": "-------------------------] GAME ELEMENTS [------------------------------------------------", + + "item.create.symmetry_wand": "Bâton de symétrie", + "item.create.placement_handgun": "Blockzappeur portable", + "item.create.terrain_zapper": "Térraformeur portable", + "item.create.tree_fertilizer": "Engrais pour arbre", + "item.create.empty_blueprint": "Schéma vide", + "item.create.andesite_alloy": "Alliage d'andésite", + "item.create.chromatic_compound": "Composé chromatique", + "item.create.shadow_steel": "Acier sombre", + "item.create.blueprint_and_quill": "Schéma et plume", + "item.create.blueprint": "Schéma", + "item.create.belt_connector": "Tapis roulant", + "item.create.goggles": "Lunettes d'ingénieur", + "item.create.filter": "Filtre", + "item.create.property_filter": "Filtre d'attribut", + "item.create.logistical_filter": "Filtre d'adresses", + "item.create.rose_quartz": "Quartz rose", + "item.create.polished_rose_quartz": "Quartz rose poli", + "item.create.refined_radiance": "Éclat raffiné", + "item.create.iron_sheet": "Plaque de Fer", + "item.create.gold_sheet": "Plaque d'Or", + "item.create.lapis_plate": "Plaque de Lapis", + "item.create.obsidian_dust": "Obsidienne en poudre", + "item.create.propeller": "Hélice", + "item.create.whisk": "Fouet", + "item.create.brass_hand": "Main", + "item.create.slot_cover": "Couvercle", + "item.create.zinc_handle": "Poignée d'outil de qualité", + "item.create.flour": "Farine de blé", + "item.create.dough": "Pâte", + "item.create.wrench": "Clé", + "item.create.deforester": "Déforesteur", + "item.create.crushed_iron": "Minerai de fer concassé", + "item.create.crushed_gold": "Minerai d'or concassé", + "item.create.sand_paper": "Papier de verre", + "item.create.red_sand_paper": "Papier de verre rouge", + + "item.create.brass_ingot": "Lingot de laiton", + "item.create.brass_sheet": "Plaques de laiton", + "item.create.brass_nugget": "Pépite de laiton", + "item.create.crushed_brass": "Laiton concassé", + "item.create.zinc_ingot": "Barre de zinc", + "item.create.zinc_nugget": "Pépite de zinc", + "item.create.crushed_zinc": "Zinc concassé", + "item.create.copper_sheet": "Plaques de cuivre", + "item.create.copper_ingot": "Lingot de cuivre", + "item.create.copper_nugget": "Pépite de cuivre", + "item.create.crushed_copper": "Cuivre concassé", + + "item.create.electron_tube": "Tube électronique", + "item.create.integrated_circuit": "Circuit intégré", + + "item.create.logistical_controller_supply": "Fourniture d'objets", + "item.create.logistical_controller_request": "Demande d'objets", + "item.create.logistical_controller_storage": "Stockage d'objets", + "item.create.logistical_controller_calculation": "Calculateur d'ingrédients", + "item.create.logistical_controller_transactions": "Gestionnaire des tâches", + "item.create.logistical_dial": "Cadran logistique", + + "item.create.blazing_pickaxe": "Pioche flamboyante", + "item.create.blazing_shovel": "Pelle flamboyante", + "item.create.blazing_axe": "Hache flamboyante", + "item.create.blazing_sword": "Épée flamboyante", + + "item.create.shadow_steel_pickaxe": "Pioche en acier sombre", + "item.create.shadow_steel_mattock": "Hoyau en acier sombre", + "item.create.shadow_steel_sword": "Épée en acier sombre", + + "item.create.rose_quartz_pickaxe": "Pioche en quartz doré", + "item.create.rose_quartz_shovel": "Pelle en quartz doré", + "item.create.rose_quartz_axe": "Hache en quartz doré", + "item.create.rose_quartz_sword": "Épée en quartz doré", + + "block.create.copper_ore": "Minerai de cuivre", + "block.create.copper_block": "Bloc de cuivre", + "block.create.copper_shingles": "Bardeaux de cuivre", + "block.create.zinc_ore": "Minerai de zinc", + + "block.create.andesite_casing": "Boîtier en andésite", + "block.create.brass_casing": "Boîtier en laiton", + "block.create.copper_casing": "Boîtier en cuivre", + + "block.create.cogwheel": "Roue dentée", + "block.create.large_cogwheel": "Grande roue dentée", + "block.create.turntable": "Plaque tournante", + "block.create.gearbox": "Boîte à roue dentée", + "block.create.gearshift": "Décaleur de rotation", + "block.create.clutch": "Embrayage", + "block.create.shaft": "Arbre mécanique", + "block.create.encased_belt": "Tapis roulant enfermé", + "block.create.encased_shaft": "Arbre mécanique enfermé", + "block.create.encased_fan": "Ventilateur enfermé", + "block.create.adjustable_pulley": "Poulie de tapis roulant analogique", + "block.create.nozzle": "Buse", + "block.create.hand_crank": "Manivelle", + "block.create.cuckoo_clock": "Horloge à coucou", + "block.create.creative_motor": "Moteur", + "block.create.belt": "Tapis roulant", + "block.create.crushing_wheel": "Roue de concassage", + "block.create.drill": "Perceuse mécanique", + "block.create.portable_storage_interface": "Interface de stockage portable", + "block.create.harvester": "Récolteuse mécanique", + "block.create.saw": "Scie mécanique", + "block.create.water_wheel": "Roue à eau", + "block.create.mechanical_press": "Presse mécanique", + "block.create.mechanical_mixer": "Mixeur mécanique", + "block.create.deployer": "Déployeur", + "block.create.basin": "Bassin", + "block.create.mechanical_crafter": "Établi mécanique", + "block.create.flywheel": "Volant d'inertie", + "block.create.furnace_engine": "Moteur de four", + "block.create.speed_gauge": "Compteur de vitesse", + "block.create.stress_gauge": "Stressomètre", + "block.create.cart_assembler": "Assembleur de wagon", + "block.create.analog_lever": "Levier analogique", + "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", + + "block.create.sticky_mechanical_piston": "Piston mécanique collant", + "block.create.mechanical_piston": "Piston mécanique", + "block.create.mechanical_piston_head": "Tête de piston mécanique", + "block.create.piston_pole": "Pôle d'extension de piston", + "block.create.mechanical_bearing": "Roulement mécanique", + "block.create.clockwork_bearing": "Roulement mécanique horloger", + "block.create.rope_pulley": "Poulie à corde", + "block.create.rope": "Corde", + "block.create.pulley_magnet": "Aimant de poulie", + "block.create.translation_chassis": "Châssis linéaire", + "block.create.rotation_chassis": "Châssis radial", + + "block.create.contact": "Contact Redstone", + "block.create.redstone_bridge": "Liaison Redstone", + "block.create.stockswitch": "Détecteur de stockage", + "block.create.flexcrate": "Caisse ajustable", + "block.create.extractor": "Extracteur", + "block.create.belt_funnel": "Entonnoir amélioré", + "block.create.linked_extractor": "Extracteur lié", + "block.create.transposer": "Transposeur", + "block.create.linked_transposer": "Transposeur lié", + "block.create.pulse_repeater": "Répéteur d'impulsions", + "block.create.flexpulsepeater": "Répéteur d'impulsions réglable", + "block.create.redstone_latch": "Verrou alimenté", + "block.create.toggle_latch": "Verrou alimenté à bascule", + "block.create.flexpeater": "Répéteur réglable", + "block.create.entity_detector": "Observateur d'entité", + "block.create.logistical_casing": "Enveloppe logistique", + "block.create.logistical_controller": "Controlleur logistique", + "block.create.logistical_index": "Index Logistique", + "block.create.logisticians_table": "Table du Logisticien", + "block.create.package_funnel": "Entonnoir de paquets", + "block.create.belt_tunnel": "Tunnel de convoyeur", + "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", + + "block.create.tiled_glass": "Verre carrelé", + "block.create.framed_glass": "Grande fenêtre en verre", + "block.create.vertical_framed_glass": "Fenêtre en verre verticale", + "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", + "block.create.oak_glass": "Fenêtre en chêne", + "block.create.spruce_glass": "Fenêtre en sapin", + "block.create.birch_glass": "Fenêtre en bouleau", + "block.create.jungle_glass": "Fenêtre en acajou", + "block.create.dark_oak_glass": "Fenêtre en chêne noir", + "block.create.acacia_glass": "Fenêtre en acacia", + "block.create.iron_glass": "Fenêtre ornée en fer", + + "block.create.tiled_glass_pane": "Vitre carrelé", + "block.create.framed_glass_pane": "Grande vitre encadrée", + "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", + "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", + "block.create.oak_glass_pane": "Vitre encadrée en chêne", + "block.create.spruce_glass_pane": "Vitre encadrée en sapin", + "block.create.birch_glass_pane": "Vitre encadrée en bouleau", + "block.create.jungle_glass_pane": "Vitre encadrée en acajou", + "block.create.dark_oak_glass_pane": "Vitre encadrée en chêne noir", + "block.create.acacia_glass_pane": "Vitre encadrée en acacia", + "block.create.iron_glass_pane": "Vitre encadrée ornée en fer", + + "block.create.window_in_a_block": "Fenêtre dans un bloc", + "block.create.andesite_bricks": "Briques d'andésite", + "block.create.andesite_layers": "Andesite en couches", + "block.create.diorite_bricks": "Briques de diorite", + "block.create.diorite_layers": "Diorite en couches", + "block.create.granite_bricks": "Briques de granite", + "block.create.granite_layers": "Granite en couches", + + "block.create.gabbro": "Gabbro", + "block.create.gabbro_stairs": "Escaliers de gabbro", + "block.create.gabbro_slab": "Dalle de gabbro", + "block.create.gabbro_wall": "Muret de gabbro", + "block.create.polished_gabbro": "Gabbro poli", + "block.create.gabbro_bricks": "Briques de gabbro", + "block.create.gabbro_bricks_stairs": "Escaliers en briques de gabbro", + "block.create.gabbro_bricks_wall": "Muret en briques de gabbro", + "block.create.paved_gabbro_bricks": "Briques de gabbro pavées", + "block.create.paved_gabbro_bricks_slab": "Dalle en briques de gabbro pavées", + "block.create.indented_gabbro": "Tuiles de gabbro", + "block.create.indented_gabbro_slab": "Dalle de tuiles de gabbro", + "block.create.slightly_mossy_gabbro_bricks": "Briques de gabbro légèrement moussues", + "block.create.mossy_gabbro_bricks": "Briques de gabbro moussues", + "block.create.gabbro_layers": "Gabbro en couches", + + "block.create.weathered_limestone": "Calcaire patinées", + "block.create.weathered_limestone_stairs": "Escaliers de calcaire patinées", + "block.create.weathered_limestone_wall": "Muret de calcaire patinées", + "block.create.weathered_limestone_slab": "Dalle de calcaire patinées", + "block.create.polished_weathered_limestone": "Calcaire patinées polies", + "block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées", + "block.create.weathered_limestone_bricks": "Briques de calcaire patinées", + "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées", + "block.create.weathered_limestone_pillar": "Pillier de calcaire patinées", + "block.create.weathered_limestone_layers": "Calcaire patinées en couches", + + "block.create.dolomite_pillar": "Pillier de dolomie", + "block.create.dolomite": "Dolomie", + "block.create.dolomite_stairs": "Escaliers de dolomie", + "block.create.dolomite_wall": "Muret de dolomie", + "block.create.dolomite_slab": "Dalle de dolomie", + "block.create.dolomite_bricks": "Briques de dolomie", + "block.create.dolomite_bricks_wall": "Muret de briques de dolomie", + "block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomie", + "block.create.dolomite_bricks_slab": "Dalle de briques de dolomie", + "block.create.polished_dolomite": "Dolomie polie", + "block.create.dolomite_layers": "Dolomie en couches", + + "block.create.limesand": "Chaux", + "block.create.limestone": "Calcaire", + "block.create.limestone_stairs": "Escaliers de calcaire", + "block.create.limestone_slab": "Dalle de calcaire", + "block.create.limestone_wall": "Muret de calcaire", + "block.create.limestone_bricks": "Briques de calcaire", + "block.create.limestone_bricks_stairs": "Escaliers de briques de calcaire", + "block.create.limestone_bricks_slab": "Dalle de briques de calcaire", + "block.create.limestone_bricks_wall": "Muret de briques de calcaire", + "block.create.polished_limestone": "Calcaire poli", + "block.create.polished_limestone_slab": "Dalle de calcaire polie", + "block.create.limestone_pillar": "Pillier de calcaire", + "block.create.limestone_layers": "Calcaire en couches", + + "block.create.natural_scoria": "Scorie naturelle", + "block.create.scoria": "Scorie", + "block.create.scoria_stairs": "Escaliers de scorie", + "block.create.scoria_slab": "Dalle de scorie", + "block.create.scoria_wall": "Muret de scorie", + "block.create.scoria_bricks": "Briques de scorie", + "block.create.polished_scoria": "Scorie polie", + "block.create.polished_scoria_slab": "Dalle de scorie polie", + "block.create.scoria_pillar": "Pillier de scorie", + "block.create.scoria_layers": "Scorie en couches", + + "block.create.dark_scoria": "Scorie sombre", + "block.create.polished_dark_scoria": "Scorie sombre polie", + "block.create.dark_scoria_tiles": "Tuiles de scorie sombre", + "block.create.dark_scoria_tiles_stairs": "Escaliers de tuiles de scorie sombre", + "block.create.dark_scoria_tiles_slab": "Dalle de tuiles de scorie sombre", + "block.create.dark_scoria_bricks": "Briques de scorie sombre", + "block.create.dark_scoria_bricks_stairs": "Escaliers de briques de scorie sombre", + "block.create.dark_scoria_bricks_slab": "Dalles de briques de scorie sombre", + "block.create.dark_scoria_bricks_wall": "Muret de briques de scorie sombre", + + "block.create.schematicannon": "Schémacanon", + "block.create.schematic_table": "Table à schéma", + "block.create.creative_crate": "Créateur de schémacanon", + + "block.create.cocoa_log": "Bûche d'acajou de cacao", + + "block.create.shop_shelf": "Étagère", + + "_comment": "-------------------------] UI & MESSAGES [------------------------------------------------", + + "death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage", + "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", + "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", + "death.attack.create.drill": "%1$s a été empalé par une perceuse mécanique", + "death.attack.create.saw": "%1$s a été coupé en deux par une scie mécanique", + "create.block.deployer.damage_source_name": "un déployeur voyou", + "death.attack.create.curse_polish": "%1$s a essayé de polir un objet maudit", + "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", + + "create.recipe.crushing": "Ecrasement", + "create.recipe.splashing": "Lavage en vrac", + "create.recipe.splashing.fan": "Ventilateur derrière de l'eau qui coule", + "create.recipe.smokingViaFan": "Fumer en vrac", + "create.recipe.smokingViaFan.fan": "Fan behind Fire", + "create.recipe.blastingViaFan": "Ventilateur derrière du feu", + "create.recipe.blastingViaFan.fan": "Ventilateur derrière de la lave", + "create.recipe.pressing": "Pressage", + "create.recipe.mixing": "Mixage", + "create.recipe.packing": "Compactage", + "create.recipe.sawing": "Sciage", + "create.recipe.mechanical_crafting": "Fabrication mécanique", + "create.recipe.block_cutting": "Coupe de bloc", + "create.recipe.blockzapperUpgrade": "Blockzappeur portable", + "create.recipe.sandpaper_polishing": "Polissage au papier de verre", + "create.recipe.mystery_conversion": "Métamorphose chromatique", + "create.recipe.processing.catalyst": "Catalyseur", + "create.recipe.processing.chance": "%1$s%% de chance", + "create.recipe.processing.chanceToReturn": "%1$s%% de chance de retour", + + "create.generic.range": "Portée", + "create.generic.radius": "Rayon", + "create.generic.width": "Largeur", + "create.generic.height": "Hauteur", + "create.generic.length": "Longueur", + "create.generic.speed": "Vitesse", + "create.generic.delay": "Delai", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "Secondes", + "create.generic.unit.minutes": "Minutes", + "create.generic.unit.rpm": "tr/min", + "create.generic.unit.stress": "us", + "create.generic.unit.degrees": "°", + + "create.action.scroll": "Faire défiler", + "create.action.confirm": "Confirmer", + "create.action.abort": "Abandonner", + "create.action.saveToFile": "Sauvegarder", + "create.action.discard": "Annuler", + + "create.keyinfo.toolmenu": "Focus sur le menu de l'outil", + + "create.gui.scrollInput.defaultTitle": "Choisissez une option:", + "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", + "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", + "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", + "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", + + "create.gui.toolmenu.focusKey": "Enfoncez [%1$s] pour focus", + "create.gui.toolmenu.cycle": "[SCROLL] pour cycler", + + "create.gui.symmetryWand.mirrorType": "Mirroir", + "create.gui.symmetryWand.orientation": "Orientation", + "create.symmetry.mirror.plane": "Miroir une fois", + "create.symmetry.mirror.doublePlane": "Rectangulaire", + "create.symmetry.mirror.triplePlane": "Octogonal", + "create.orientation.orthogonal": "Orthogonal", + "create.orientation.diagonal": "Diagonal", + "create.orientation.horizontal": "Horizontal", + "create.orientation.alongZ": "Sur Z", + "create.orientation.alongX": "Sur X", + + "create.gui.blockzapper.title": "Blockzappeur portable", + "create.gui.blockzapper.replaceMode": "Mode de remplacement", + "create.gui.blockzapper.searchDiagonal": "Suivez les diagonales", + "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", + "create.gui.blockzapper.range": "Plage de propagation", + "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", + "create.gui.blockzapper.patternSection": "Motif", + "create.gui.blockzapper.pattern.solid": "Solide", + "create.gui.blockzapper.pattern.checkered": "Quadrillage", + "create.gui.blockzapper.pattern.inversecheckered": "Quadrillage inversé", + "create.gui.blockzapper.pattern.chance25": "25%", + "create.gui.blockzapper.pattern.chance50": "50%", + "create.gui.blockzapper.pattern.chance75": "75%", + + "create.gui.terrainzapper.title": "Térraformeur portable", + "create.gui.terrainzapper.placement": "Placement", + "create.gui.terrainzapper.placement.merged": "Fusionner", + "create.gui.terrainzapper.placement.attached": "Attacher", + "create.gui.terrainzapper.placement.inserted": "Inserer", + "create.gui.terrainzapper.brush": "Pinceau", + "create.gui.terrainzapper.brush.cuboid": "Cuboïde", + "create.gui.terrainzapper.brush.sphere": "Sphère", + "create.gui.terrainzapper.brush.cylinder": "Cylindre", + "create.gui.terrainzapper.tool": "Outil", + "create.gui.terrainzapper.tool.fill": "Remplir", + "create.gui.terrainzapper.tool.place": "Placer", + "create.gui.terrainzapper.tool.replace": "Remplacer", + "create.gui.terrainzapper.tool.clear": "Effacer", + "create.gui.terrainzapper.tool.overlay": "Recouvrir", + "create.gui.terrainzapper.tool.flatten": "Applatir", + "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", + + "create.blockzapper.usingBlock": "Utilisation: %1$s", + "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", + "create.blockzapper.component.body": "Corps", + "create.blockzapper.component.amplifier": "Amplifieur", + "create.blockzapper.component.accelerator": "Accélérateur", + "create.blockzapper.component.retriever": "Récupérateur", + "create.blockzapper.component.scope": "Lunette", + "create.blockzapper.componentTier.none": "Aucun", + "create.blockzapper.componentTier.brass": "Laiton", + "create.blockzapper.componentTier.chromatic": "Chromatique", + "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", + "create.blockzapper.empty": "Plus de blocs!", + + "create.contraptions.movement_mode": "Mode de mouvement", + "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", + "create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite", + "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", + "create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite", + + "create.logistics.filter": "Filtre", + "create.logistics.firstFrequency": "Freq. #1", + "create.logistics.secondFrequency": "Freq. #2", + + "create.gui.goggles.generator_stats": "Statistiques du générateur:", + "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", + "create.gui.goggles.at_current_speed": "À la vitesse actuelle", + "create.gui.goggles.base_value": "Valeur de base", + + "create.gui.gauge.info_header": "Informations sur la jauge:", + "create.gui.speed_gauge.title": "Vitesse de rotation", + "create.gui.stress_gauge.title": "Stress du réseau", + "create.gui.stress_gauge.capacity": "Capacité restante", + "create.gui.stress_gauge.overstressed": "Surmenée", + "create.gui.stress_gauge.no_rotation": "Pas de rotation", + + "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", + + "create.gui.flexcrate.title": "Caisse réglable", + "create.gui.flexcrate.storageSpace": "Espace de stockage", + + "create.gui.stockswitch.title": "Commutateur de stockage", + "create.gui.stockswitch.lowerLimit": "Seuil inférieur", + "create.gui.stockswitch.upperLimit": "Seuil supérieur", + "create.gui.stockswitch.startAt": "Signal de départ à", + "create.gui.stockswitch.startAbove": "Signal de démarrage au-dessus", + "create.gui.stockswitch.stopAt": "Signal d'arrêt à", + "create.gui.stockswitch.stopBelow": "Signal d'arrêt en-dessous", + + "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", + "create.gui.sequenced_gearshift.instruction": "Instructions", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Tourner", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", + "create.gui.sequenced_gearshift.instruction.wait": "Attente", + "create.gui.sequenced_gearshift.instruction.wait.duration": "Durée", + "create.gui.sequenced_gearshift.instruction.end": "Fin", + "create.gui.sequenced_gearshift.speed": "Vitesse, direction", + "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", + "create.gui.sequenced_gearshift.speed.forward_fast": "Vitesse double, normal", + "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", + "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", + + "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Première position définie.", + "create.schematicAndQuill.secondPos": "Seconde position définie.", + "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", + "create.schematicAndQuill.abort": "Sélection supprimée.", + "create.schematicAndQuill.prompt": "Entrez un nom pour le schéma:", + "create.schematicAndQuill.fallbackName": "Mon schéma", + "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", + + "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", + "create.schematic.position": "Position", + "create.schematic.rotation": "Rotation", + "create.schematic.rotation.none": "Aucune", + "create.schematic.rotation.cw90": "Sens horaire 90", + "create.schematic.rotation.cw180": "Sens horaire 180", + "create.schematic.rotation.cw270": "Sens horaire 270", + "create.schematic.mirror": "Mirroir", + "create.schematic.mirror.none": "Aucun", + "create.schematic.mirror.frontBack": "Avant-Arrière", + "create.schematic.mirror.leftRight": "Gauche-Droite", + + "create.schematic.tool.deploy": "Déployer", + "create.schematic.tool.move": "Déplacer XZ", + "create.schematic.tool.movey": "Déplacer Y", + "create.schematic.tool.rotate": "Tourner", + "create.schematic.tool.print": "Imprimer", + "create.schematic.tool.flip": "Retourner", + + "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", + "create.schematic.tool.deploy.description.1": "Clic droit sur le sol pour placer.", + "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", + "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", + "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", + "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", + "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", + "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", + "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Synchronisation...", + "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", + "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", + + "create.gui.schematicTable.title": "Table à schéma", + "create.gui.schematicTable.availableSchematics": "Schémas disponibles", + "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", + "create.gui.schematicTable.uploading": "Téléchargement...", + "create.gui.schematicTable.finished": "Téléchargement terminé!", + + "create.gui.schematicannon.title": "Schémacanon", + "create.gui.schematicannon.settingsTitle": "Options de placement", + "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", + "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Tirs restants: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Avec sauvegarde: %1$s", + "create.gui.schematicannon.optionEnabled": "Actuellement activé", + "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", + "create.gui.schematicannon.option.dontReplaceSolid": "Ne remplacez pas les blocs solides", + "create.gui.schematicannon.option.replaceWithSolid": "Remplacer solide par solide", + "create.gui.schematicannon.option.replaceWithAny": "Remplacer le solide par n'importe quoi", + "create.gui.schematicannon.option.replaceWithEmpty": "Remplacer le solide par rien", + "create.gui.schematicannon.option.skipMissing": "Ignorer les blocs manquants", + "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", + + "create.gui.schematicannon.option.skipMissing.description": "Si le canon ne peut pas trouver un bloc requis pour le placement, il continuera au prochain emplacement.", + "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Le canon ne remplacera jamais les blocs solides dans sa zone de travail, seulement non solides et air.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", + "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", + + "create.schematicannon.status.idle": "Repos", + "create.schematicannon.status.ready": "Prêt", + "create.schematicannon.status.running": "En cours", + "create.schematicannon.status.finished": "Terminé", + "create.schematicannon.status.paused": "Pausé", + "create.schematicannon.status.stopped": "Arrêté", + "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", + "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", + "create.schematicannon.status.targetOutsideRange": "Cible trop lointaine", + "create.schematicannon.status.searching": "Recherche", + "create.schematicannon.status.skipping": "Saut", + "create.schematicannon.status.missingBlock": "Blocs manquants:", + "create.schematicannon.status.placing": "Placement", + "create.schematicannon.status.clearing": "Suppression des blocs", + "create.schematicannon.status.schematicInvalid": "Schéma non valide", + "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", + "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", + + "create.gui.index.title": "Index logistique", + "create.gui.index.targetAddressSelect": "Adresse de destination", + "create.gui.index.confirmOrder": "Confirmer la commande", + + "create.logistics.priority": "Priorité", + "create.logistics.priority.lowest": "Minimum", + "create.logistics.priority.low": "Faible", + "create.logistics.priority.high": "Elevée", + "create.logistics.priority.highest": "Maximum", + "create.gui.logistical_controller.active_mode": "Mode actif", + "create.gui.logistical_controller.passive_mode": "Mode passif", + "create.gui.requester.requestedItemCount": "Quantité exigée", + "create.gui.storage.passiveModeOnly": "Le stockage des articles est passif uniquement", + + "create.gui.filter.blacklist": "Liste noire", + "create.gui.filter.blacklist.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", + "create.gui.filter.whitelist": "Liste blanche", + "create.gui.filter.whitelist.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", + "create.gui.filter.respect_data": "Respect des données", + "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", + "create.gui.filter.ignore_data": "Ignorer les données", + "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", + + "create.item_attributes.placeable": "est placeable", + "create.item_attributes.consumable": "peut être mangé", + "create.item_attributes.enchanted": "est enchanté", + "create.item_attributes.damaged": "est endommagé", + "create.item_attributes.badly_damaged": "est fortement damaged", + "create.item_attributes.not_stackable": "ne peut pas s'empiler", + "create.item_attributes.equipable": "peut être équipé", + "create.item_attributes.furnace_fuel": "est du combustible", + "create.item_attributes.in_tag": "est étiqueté %1$s", + "create.item_attributes.in_item_group": "appartient à %1$s", + "create.item_attributes.added_by": "a été ajouté par %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", + "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", + "create.gui.attribute_filter.whitelist_disjunctive": "Liste blanche (n'importe)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", + "create.gui.attribute_filter.whitelist_conjunctive": "Liste blanche (tout)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", + "create.gui.attribute_filter.blacklist": "Liste noire", + "create.gui.attribute_filter.blacklist.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", + "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", + + "create.tooltip.holdKey": "Enfoncez [%1$s]", + "create.tooltip.holdKeyOrKey": "Enfoncez [%1$s] ou [%2$s]", + "create.tooltip.keyShift": "Maj", + "create.tooltip.keyCtrl": "Ctrl", + + "create.tooltip.speedRequirement": "Vitesse requise: %1$s", + "create.tooltip.speedRequirement.none": "Aucune", + "create.tooltip.speedRequirement.medium": "Modérée", + "create.tooltip.speedRequirement.high": "Rapide", + + "create.tooltip.stressImpact": "Impact du stress: %1$s", + "create.tooltip.stressImpact.low": "Faible", + "create.tooltip.stressImpact.medium": "Modéré", + "create.tooltip.stressImpact.high": "Elevé", + "create.tooltip.stressImpact.overstressed": "Surmené", + + "create.tooltip.capacityProvided": "Capacité de stress: %1$s", + "create.tooltip.capacityProvided.low": "Petite", + "create.tooltip.capacityProvided.medium": "Moyenne", + "create.tooltip.capacityProvided.high": "Grande", + "create.tooltip.capacityProvided.asGenerator": "(En tant que générateur)", + "create.tooltip.generationSpeed" : "Génère à %1$s %2$s", + + "create.tooltip.analogStrength": "Force analogique: %1$s/15", + + "create.tooltip.wip": "En cours", + "create.tooltip.workInProgress": "En cours!", + + "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", + "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", + "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", + "create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agites les doigts* veuillez vous disperser.", + "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.", + "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", + "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", + "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", + + "create.mechanical_mixer.min_ingredients": "Ingrédients min.", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "advancement.create:root": "Au début, Créons!", + "advancement.create:root.desc": "Il est temps de commencer à construire des Contraptions incroyables!", + "advancement.create:andesite_alloy": "Allitérations en abondance", + "advancement.create:andesite_alloy.desc": "Les matériaux de Create ont des noms étranges, l'alliage d'Andésite en fait partie.", + "advancement.create:andesite_casing": "L'âge d'andésite ", + "advancement.create:andesite_casing.desc": "Utilisez de l'andésite, du méta et du bois pour créer un boîtier de base.", + "advancement.create:crushing_wheel": "Une paire de géants", + "advancement.create:crushing_wheel.desc": "Créez des roues de concassage pour décomposer les matériaux.", + "advancement.create:rotation": "C'est vivant!", + "advancement.create:rotation.desc": "Regardez votre premier composant cinétique tourner.", + "advancement.create:overstressed": "Surchargé", + "advancement.create:overstressed.desc": "Découvrez les lois de la physique de première main.", + "advancement.create:sand_paper": "Polissage puissant", + "advancement.create:sand_paper.desc": "Créez du papier de verre pour rendre les choses jolies.", + "advancement.create:polished_rose_quartz": "Diamants roses", + "advancement.create:polished_rose_quartz.desc": "Polissez le quartz rose jusqu'à ce que vous puissiez voir à travers.", + "advancement.create:sand_paper_secret": "Poliception", + "advancement.create:sand_paper_secret.desc": "Utilisez votre papier de verre pour poncer du papier de verre.", + "advancement.create:press": "'Bonk!' ", + "advancement.create:press.desc": "Faire une presse mécanique et l'utiliser pour créer des plaques.", + "advancement.create:mixer": "Le mixer", + "advancement.create:mixer.desc": "Créer un mixeur mécanique.", + "advancement.create:brass": "Un véritable alliage", + "advancement.create:brass.desc": "Utilisez du cuivre et du zinc pour créer du laiton.", + "advancement.create:brass_casing": "L'âge de laiton", + "advancement.create:brass_casing.desc": "Utilisez du laiton et du bois nouvellement obtenus pour créer un boîtier plus avancé.", + "advancement.create:deployer": "Piquer, placer et attaquer", + "advancement.create:deployer.desc": "Créez un déployeur, le reflet parfait de vous-même.", + "advancement.create:deployer_secret": "Frappe-le, frère!", + "advancement.create:deployer_secret.desc": "Faites deux déployeurs coup de poing.", + "advancement.create:chromatic_compound": "Matériaux bipolaires", + "advancement.create:chromatic_compound.desc": "Fabriquer une barre de composé chromatique.", + "advancement.create:shadow_steel": "Retourneur du néant", + "advancement.create:shadow_steel.desc": "Créez de l'acier sombre, une barre métallique de néant.", + "advancement.create:refined_radiance": "Lumineux et inspirant", + "advancement.create:refined_radiance.desc": "Créer un éclat raffiné, une substance chromatique puissante.", + "advancement.create:refined_radiance_secret": "Forgé par le faisceau de lumière", + "advancement.create:refined_radiance_secret.desc": "Trouvez une autre façon de créer un éclat raffiné.", + "advancement.create:speed_secret": "Bien ", + "advancement.create:speed_secret.desc": "Regardez un compteur de vitesse atteindre exactement 69 tr/min.", + + "create.subtitle.schematicannon_launch_block": "Tire de schémacanon", + "create.subtitle.schematicannon_finish": "Fin de schémacanon", + "create.subtitle.slime_added": "Bruit de slime", + "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", + "create.subtitle.mechanical_press_item_break": "Cliquetis de métal", + "create.subtitle.blockzapper_place": "Blocs se zappant en place", + "create.subtitle.blockzapper_confirm": "Ding d'affirmation", + "create.subtitle.blockzapper_deny": "Boop de déclin", + "create.subtitle.block_funnel_eat": "Croc d'entonoir", + + "_comment": "-------------------------] ITEM DESCRIPTIONS [------------------------------------------------", + + "item.create.example_item.tooltip": "OBJET EXEMPLE (juste une indication que cette info-bulle existe)", + "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", + "item.create.example_item.tooltip.condition1": "Quand ceci", + "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", + "item.create.example_item.tooltip.condition2": "Et quand cela", + "item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez", + "item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé", + "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", + + "item.create.symmetry_wand.tooltip": "BÂTON DE SYMÉTRIE", + "item.create.symmetry_wand.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", + "item.create.symmetry_wand.tooltip.condition1": "Lorsque positionné dans la barre active", + "item.create.symmetry_wand.tooltip.behaviour1": "Reste actif", + "item.create.symmetry_wand.tooltip.control1": "Clic droit au sol", + "item.create.symmetry_wand.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", + "item.create.symmetry_wand.tooltip.control2": "Clic droit dans les airs", + "item.create.symmetry_wand.tooltip.action2": "_Retire_ le mirroir actif", + "item.create.symmetry_wand.tooltip.control3": "Clic droit en étant accroupi", + "item.create.symmetry_wand.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", + + "item.create.placement_handgun.tooltip": "BLOCKZAPPEUR", + "item.create.placement_handgun.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", + "item.create.placement_handgun.tooltip.control1": "Clic gauche sur un bloc", + "item.create.placement_handgun.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.placement_handgun.tooltip.control2": "Clic droit sur un bloc", + "item.create.placement_handgun.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", + "item.create.placement_handgun.tooltip.control3": "Clic droit en étant accroupi", + "item.create.placement_handgun.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_.", + + "item.create.terrain_zapper.tooltip": "TERRAFORMEUR", + "item.create.terrain_zapper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", + "item.create.terrain_zapper.tooltip.control1": "Clic gauche sur un bloc", + "item.create.terrain_zapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.terrain_zapper.tooltip.control2": "Clic droit sur un bloc", + "item.create.terrain_zapper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", + "item.create.terrain_zapper.tooltip.control3": "Clic droit en étant accroupi", + "item.create.terrain_zapper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", + + "item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRE", + "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.", + "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre", + "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_", + + "item.create.deforester.tooltip": "DÉFORESTEUR", + "item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des arbres en une fraction de seconde.", + + "item.create.filter.tooltip": "FILTRE", + "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", + "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.filter.tooltip.condition2": "Clic droit", + "item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", + + "item.create.property_filter.tooltip": "FILTRE D'ATTRIBUTS", + "item.create.property_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.property_filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", + "item.create.property_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.property_filter.tooltip.condition2": "Clic droit", + "item.create.property_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", + + "block.create.cocoa_log.tooltip": "TRONC D'ACAJOU DE CACAO", + "block.create.cocoa_log.tooltip.summary": "Un tronc d'acajou amélioré permettant une automatisation plus facile de _fèves_ _de_ _cacao_.", + "block.create.cocoa_log.tooltip.condition1": "Lorsque mature", + "block.create.cocoa_log.tooltip.behaviour1": "Fait pousser des _fèves_ _de_ _cacao_ sur tous les côtés.", + + "item.create.empty_blueprint.tooltip": "SCHÉMA VIDE", + "item.create.empty_blueprint.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", + + "item.create.blueprint.tooltip": "SCHÉMA", + "item.create.blueprint.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", + "item.create.blueprint.tooltip.condition1": "Lorsque tenu en main", + "item.create.blueprint.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", + "item.create.blueprint.tooltip.control1": "Clic droit en étant accroupi", + "item.create.blueprint.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", + + "item.create.blueprint_and_quill.tooltip": "SCHÉMA ET PLUME", + "item.create.blueprint_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", + "item.create.blueprint_and_quill.tooltip.condition1": "Étape 1", + "item.create.blueprint_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", + "item.create.blueprint_and_quill.tooltip.condition2": "Étape 2", + "item.create.blueprint_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", + "item.create.blueprint_and_quill.tooltip.control1": "Clic droit", + "item.create.blueprint_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", + "item.create.blueprint_and_quill.tooltip.control2": "Ctrl maintenu", + "item.create.blueprint_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", + "item.create.blueprint_and_quill.tooltip.control3": "Clic droit en étant accroupi", + "item.create.blueprint_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", + + "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", + "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", + + "block.create.schematicannon.tooltip": "SCHÉMACANON", + "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", + "block.create.schematicannon.tooltip.control1": "Clic droit", + "block.create.schematicannon.tooltip.action1": "Ouvre l'_Interface_", + + "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", + "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", + "block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide", + "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", + + "block.create.shaft.tooltip": "ARBRE MÉCANIQUE", + "block.create.shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite.", + + "block.create.cogwheel.tooltip": "ROUE DENTÉE", + "block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.", + + "block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE", + "block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.", + + "block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÎTÉ", + "block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.", + + "block.create.gearbox.tooltip": "BOÎTE DE VITESSES", + "block.create.gearbox.tooltip.summary": "_Relais_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.", + + "block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION", + "block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.", + "block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté", + "block.create.gearshift.tooltip.behaviour1": "_Inverse_ la rotation sortante.", + + "block.create.clutch.tooltip": "EMBRAYAGE", + "block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.", + "block.create.clutch.tooltip.condition1": "Lorsqu'alimenté", + "block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.", + + "block.create.encased_belt.tooltip": "TAPIS ROULANT ENFERMÉ", + "block.create.encased_belt.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés.", + "block.create.encased_belt.tooltip.condition1": "Lorsque connecté", + "block.create.encased_belt.tooltip.behaviour1": "Les blocs attachés auront la _même_ _vitesse_ _de_ _rotation_ et direction. Ils n'ont pas besoin de regarder dans la même direction.", + + "block.create.adjustable_pulley.tooltip": "POULIE DE TAPIS ROULANT ANALOGIQUE", + "block.create.adjustable_pulley.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés. Les _tapis_ _roulants_ _enfermés_ attachés _tourneront_ _plus_ _vite_ en fonction du _signal_ _de_ _redstone_ _analogique_ que ce bloc reçoit.", + "block.create.adjustable_pulley.tooltip.condition1": "Contrôle Redstone", + "block.create.adjustable_pulley.tooltip.behaviour1": "Sans signal, il ne va pas _accélérer_ les tapis roulants connectées. Avec un tapis roulant connectée au signal de pleine puissance, vitesse _doublées_.", + + "item.create.belt_connector.tooltip": "CONNECTEUR DE TAPIS ROULANTS", + "item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.", + "item.create.belt_connector.tooltip.control1": "Clic droit sur arbre", + "item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.", + "item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi", + "item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.", + + "item.create.goggles.tooltip": "LUNETTES", + "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", + "item.create.goggles.tooltip.condition1": "Lorsque portées", + "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", + "item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge", + "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", + + "item.create.wrench.tooltip": "CLÉ", + "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", + "item.create.wrench.tooltip.control1": "Clic droit a kinetic block", + "item.create.wrench.tooltip.action1": "_Tourne_ les _composents_ proche ou loin de la face avec lequel vous avez interagi.", + "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", + "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", + + "block.create.creative_motor.tooltip": "MOTEUR CRÉATIF", + "block.create.creative_motor.tooltip.summary": "Une source configurable de _force_ _de_ _rotation_.", + + "block.create.water_wheel.tooltip": "ROUE À EAU", + "block.create.water_wheel.tooltip.summary": "Fournit une _force_ _de_ _rotation_ provenant de _courants_ _d'eau_ adjacents.", + + "block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ", + "block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.", + "block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.", + "block.create.encased_fan.tooltip.condition2": "Lorsque tourné", + "block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.", + "block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux", + "block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.", + + "block.create.nozzle.tooltip": "BUSE", + "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", + + "block.create.hand_crank.tooltip": "MANIVELLE", + "block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.", + "block.create.hand_crank.tooltip.condition1": "Lorsqu'utilisé", + "block.create.hand_crank.tooltip.behaviour1": "Fournit des _force_ _de_ _rotation_ à un objet attaché. _S'accroupir_ _pour_ _inverser_ la rotation.", + + "block.create.cuckoo_clock.tooltip": "COUCOU", + "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", + "block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné", + "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", + + "block.create.turntable.tooltip": "PLAQUE TOURNANTE", + "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.", + + "block.create.crushing_wheel.tooltip": "ROUE DE CONCASSAGE", + "block.create.crushing_wheel.tooltip.summary": "Grandes roues rotatives qui _cassent_ n'importe quoi.", + "block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage", + "block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.", + + "block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE", + "block.create.mechanical_press.tooltip.summary": "Un piston puissant pour comprimer les objets en dessous. Nécessite une _force_ _de_ _rotation_ constante.", + "block.create.mechanical_press.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_press.tooltip.behaviour1": "_Démarre_ pour compresser les éléments déposés en dessous.", + "block.create.mechanical_press.tooltip.condition2": "Lorsqu'au-dessus d'un tapis roulant mécanique", + "block.create.mechanical_press.tooltip.behaviour2": "Compresse _Automatiquement_ les éléments passant sur le tapis roulant.", + "block.create.mechanical_mixer.tooltip.condition3": "Lorsqu'au-dessus d'un bassin", + "block.create.mechanical_mixer.tooltip.behaviour3": "Commence à _compacter_ les _objets_ dans le bassin lorsque tous les ingrédients nécessaires sont présents.", + + "block.create.basin.tooltip": "BASSIN", + "block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.", + + "block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE", + "block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).", + "block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin", + "block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.", + "block.create.mechanical_mixer.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.mechanical_mixer.tooltip.behaviour2": "_Configure_ la quantité minimale du _total_ _d'ingredients_ pour les recettes appliquées. Utilisez cette option pour _exclure_ les _recettes_ _indésirables_ avec des ingrédients similaires mais moins.", + + "block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE", + "block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.", + "block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.", + "block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant", + "block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.", + "block.create.mechanical_crafter.tooltip.control2": "Lorsqu'utilisation de la clé à l'arrière", + "block.create.mechanical_crafter.tooltip.action2": "_Connecte_ _l'inventaire_ _d'entrée_ des établis adjacents. Utilisez ceci pour _combiner_ les _emplacements_ dans la grille de fabrication et pour _économiser_ _sur_ _le_ _travail_ _d'entrée_.", + + "block.create.furnace_engine.tooltip": "MOTEUR DE FOUR", + "block.create.furnace_engine.tooltip.summary": "Une source puissante de _puissance_ _de_ _rotation_ qui nécessite un _four_ _allumé_ pour fonctionner.", + "block.create.furnace_engine.tooltip.condition1": "Lorsqu'attaché à un four allumé", + "block.create.furnace_engine.tooltip.behaviour1": "_Commence_ _à_ _alimenter_ un _volant_ _d'inertie_ placé devant (à 1m de distance). Utilisez un haut fourneau pour des vitesses plus élevées.", + + "block.create.flywheel.tooltip": "VOLANT D'INERTIE", + "block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.", + "block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche", + "block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.", + + "block.create.portable_storage_interface.tooltip": "INTERFACE DE STOCKAGE PORTABLE", + "block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.", + "block.create.portable_storage_interface.tooltip.condition1": "Lorsqu'en mouvement", + "block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.", + + "block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION", + "block.create.rotation_speed_controller.tooltip.summary": "Un _relai_ _configurable_ capable d'accélérer ou de ralentir le composant cible à la vitesse souhaitée.", + "block.create.rotation_speed_controller.tooltip.condition1": "Lorsqu'attaché à une grande roue dentée", + "block.create.rotation_speed_controller.tooltip.behaviour1": "Relaie la force de rotation entrante vers la roue, essayant de faire _correspondre_ la _vitesse_ à laquelle elle est configurée. La _roue_ _dentée_ doit être _attachée_ _au_ _dessus_ du contrôleur.", + + "block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE", + "block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + + "block.create.sticky_mechanical_piston.tooltip": "PISTON MÉCANIQUE COLLANT", + "block.create.sticky_mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_ _collant_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + + "block.create.piston_pole.tooltip": "PÔLE DE PISTON", + "block.create.piston_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.", + "block.create.piston_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique", + "block.create.piston_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc", + + "block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE", + "block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.", + "block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.mechanical_bearing.tooltip.condition2": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_bearing.tooltip.behaviour2": "Commence à fournir une _force_ _de_ rotation_ générée à partir de la rotation de la structure attachée. La structure doit inclure des _blocs_ _de_ _voiles_ appropriés (actuellement n'importe quel bloc de laine).", + + "block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER", + "block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.", + "block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.", + + "block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ", + "block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.", + "block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.", + "block.create.sequenced_gearshift.tooltip.condition2": "Clic droit", + "block.create.sequenced_gearshift.tooltip.behaviour2": "Ouvre _l'interface_ _de_ _configuration_", + + "block.create.cart_assembler.tooltip": "ASSEMBLEUR DE CHARIOT", + "block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.", + "block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.", + + "block.create.rope_pulley.tooltip": "POULIE DE CORDE", + "block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.rope_pulley.tooltip.condition1": "Lorsque tourné", + "block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + + "block.create.translation_chassis.tooltip": "CHÂSSIS DE TRADUCTION", + "block.create.translation_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", + "block.create.translation_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.translation_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).", + "block.create.translation_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.translation_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.", + "block.create.translation_chassis.tooltip.control1": "Clic droit avec une boule de slime", + "block.create.translation_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.", + + "block.create.rotation_chassis.tooltip": "CHÂSSIS DE ROTATION", + "block.create.rotation_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", + "block.create.rotation_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.rotation_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).", + "block.create.rotation_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.rotation_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.", + "block.create.rotation_chassis.tooltip.control1": "Clic droit avec une boule de slime", + "block.create.rotation_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.", + + "block.create.drill.tooltip": "PERCEUSE MÉCANIQUE", + "block.create.drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.drill.tooltip.condition1": "Lorsque tourné", + "block.create.drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.", + "block.create.drill.tooltip.condition2": "Lorsqu'en mouvement", + "block.create.drill.tooltip.behaviour2": "Casse les blocs avec lesquels la perceuse entre en collision.", + + "block.create.harvester.tooltip": "RÉCOLTEUSE MÉCANIQUE", + "block.create.harvester.tooltip.summary": "Un coupe-plantes mécanique adapté à l'automatisation des cultures à moyenne échelle. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.harvester.tooltip.condition1": "Lorsqu'en mouvement", + "block.create.harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.", + + "block.create.saw.tooltip": "SCIE MÉCANIQUE", + "block.create.saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.", + "block.create.saw.tooltip.condition1": "Lorsque tourné vers le haut", + "block.create.saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.", + "block.create.saw.tooltip.condition2": "Lorsqu'à l'horizontal", + "block.create.saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un arbre, _l'arbre_ _tombera_ loin de la scie.", + "block.create.saw.tooltip.condition3": "Lorsqu'en mouvement", + "block.create.saw.tooltip.behaviour3": "_Coupe_ tous les _arbres_ avec lesquels la scie entre en collision.", + + "block.create.stockswitch.tooltip": "DÉTÉCTEUR DE STOCKAGE", + "block.create.stockswitch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", + "block.create.stockswitch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum", + "block.create.stockswitch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", + "block.create.stockswitch.tooltip.condition2": "Lorsqu'au dessus de la limite de stockage maximum", + "block.create.stockswitch.tooltip.behaviour2": "Commence à fournir de _l'énergie_ jusqu'à ce que la limite d'énergie soit réatteinte.", + "block.create.stockswitch.tooltip.control1": "Clic droit", + "block.create.stockswitch.tooltip.action1": "Ouvre l'_interface_ _de_ _configuration_.", + + "block.create.redstone_bridge.tooltip": "LIAISON REDSTONE", + "block.create.redstone_bridge.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.", + "block.create.redstone_bridge.tooltip.condition1": "Lorsqu'alimenté", + "block.create.redstone_bridge.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.", + "block.create.redstone_bridge.tooltip.control1": "Clic droit avec un objet", + "block.create.redstone_bridge.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.", + "block.create.redstone_bridge.tooltip.control2": "Clic droit en étant accroupi", + "block.create.redstone_bridge.tooltip.action2": "TBascule entre le mode _receveur_ et _transmetteur_.", + + "block.create.contact.tooltip": "CONTACT REDSTONE", + "block.create.contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.contact.tooltip.condition1": "Lorsque tourné vers un autre contact", + "block.create.contact.tooltip.behaviour1": "Fournit un _signal_ _redstone_.", + "block.create.contact.tooltip.condition2": "Lorsqu'en mouvement", + "block.create.contact.tooltip.behaviour2": "Déclenche tous les contacts fixes qu'il passe.", + + "block.create.flexcrate.tooltip": "CAISSE AJUSTABLE", + "block.create.flexcrate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.flexcrate.tooltip.control1": "Clic droit", + "block.create.flexcrate.tooltip.action1": "Ouvre _l'interface_.", + + "block.create.extractor.tooltip": "EXTRACTEUR", + "block.create.extractor.tooltip.summary": "_Prend_ des _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.extractor.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", + "block.create.extractor.tooltip.condition2": "Tirage actif du tapis roulant", + "block.create.extractor.tooltip.behaviour2": "Les extracteurs peuvent extraire les objets _de_ _tapis_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque l'extracteur est bloqué, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.extractor.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + + "block.create.transposer.tooltip": "TRANSPOSEUR", + "block.create.transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.transposer.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", + "block.create.transposer.tooltip.condition2": "Tirage actif du tapis roulant", + "block.create.transposer.tooltip.behaviour2": "Les transposeurs peuvent extraire des éléments _de_ _tapis_ _roulants_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque le transposeur est sauvegardé, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.transposer.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + + "block.create.deployer.tooltip": "DÉPLOYEUR", + "block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.", + "block.create.deployer.tooltip.condition1": "Lorsque tourné", + "block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.", + "block.create.deployer.tooltip.condition2": "Clic droit avec une clé", + "block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.", + + "block.create.linked_extractor.tooltip": "EXTRACTEUR LIÉ", + "block.create.linked_extractor.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être assigné une pile d'éléments en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_extractor.tooltip.condition1": "Lorsque la liaison redstone est active", + "block.create.linked_extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", + "block.create.linked_extractor.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.linked_extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + "block.create.linked_extractor.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_extractor.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, cet extracteur s'arrête.", + + "block.create.linked_transposer.tooltip": "TRANSPOSEUR LIÉ", + "block.create.linked_transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_transposer.tooltip.condition1": "Lorsque la liaison redstone est active", + "block.create.linked_transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", + "block.create.linked_transposer.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.linked_transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + "block.create.linked_transposer.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_transposer.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, ce transposeur s'arrête.", + + "block.create.belt_funnel.tooltip": "ENTONNOIR AMÉLIORÉ", + "block.create.belt_funnel.tooltip.summary": "_Collecte_ les _objets_ en _approche_ et les insère dans _l'inventaire_ attaché si possible. Peut collecter des objets dans le _monde_ et des objets sur un _tapis_ _roulant_.", + "block.create.belt_funnel.tooltip.condition1": "Passage de tapis roulant passif", + "block.create.belt_funnel.tooltip.behaviour1": "Les entonnoirs améliorés peuvent extraire des éléments _des_ _tapis_ _roulant_ lorsqu'ils sont placés au-dessus d'eux, latéralement ou à l'extrémité. Lorsqu'un entonnoir amélioré latéral est sauvegardé, les éléments sur le _tapis_ roulant_ _ne_ _vont_ _pas_ _caler_.", + + "block.create.belt_tunnel.tooltip": "TUNNEL DE TAPIS ROULANT", + "block.create.belt_tunnel.tooltip.summary": "Une option esthétique pour faire passer vos _tapis_ _roulants_ _mécaniques_ à travers les murs. Les tapis roulants doivent être renforcées avec des _boîtiers_ _en_ _laiton_. Les tunnels peuvent se _synchroniser_ avec _leurs_voisins_, ne laissant passer les éléments que si tous les tunnels du groupe ont un en attente. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "Clic droit avec une clé devant", + "block.create.belt_tunnel.tooltip.action1": "Active le _comportement_ _synchronisé_. Les tunnels synchronisés contiennent des objets jusqu'à ce que leurs voisins en aient également.", + "block.create.belt_tunnel.tooltip.control2": "Clic droit avec une clé sur les côtés", + "block.create.belt_tunnel.tooltip.action2": "_Ajuste_ _les_ _volets_ _des_ _fenêtres_ si le tunnel a une fenêtre sur cette face.", + + "block.create.brass_casing.tooltip": "BOÎTIER EN LAITON", + "block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.", + "block.create.brass_casing.tooltip.condition1": "Lorsqu'utilisé sur un tapis roulant mécanique", + "block.create.brass_casing.tooltip.behaviour1": "_Renforce_ les _tapis_ _roulants_ avec une fondation en laiton. Les tapis roulants renforcées peuvent prendre en charge les _tunnels_, _extracteurs_, _entonnoir améliorés_ et _transposeurs_ interagissant avec le tapis roulant sur les côtés et en dessous.", + + "block.create.entity_detector.tooltip": "OBSERVATEUR DE TAPIS ROULANT", + "block.create.entity_detector.tooltip.summary": "Détecte les éléments et les entités passant sur un _tapis_ _roulant_ _mécanique_ devant lui. Utilisez une _clé_ pour faire défiler son comportement. Les non-éléments seront toujours traités en mode détection quel que soit le paramètre.", + "block.create.entity_detector.tooltip.condition1": "Mode détection", + "block.create.entity_detector.tooltip.behaviour1": "Fournit un redstone _pendant_ qu'un _objet_ _correspondant_ _soit_ sur le segment de tapis roulant observé.", + "block.create.entity_detector.tooltip.condition2": "Mode impulsion", + "block.create.entity_detector.tooltip.behaviour2": "Émet une _impulsion_ lorsqu'un _objet_ _correspondant_ _passe_ au centre du segment de tapis roulant observé.", + "block.create.entity_detector.tooltip.condition3": "Mode éjection", + "block.create.entity_detector.tooltip.behaviour3": "_Éject_ les _objets_ _correspondants_ sur le côté. Si le tapis roulant ou l'espace cible est _occupé_, l'objet sera _tenu_ _en_ _place_.", + "block.create.entity_detector.tooltip.condition4": "Mode partage", + "block.create.entity_detector.tooltip.behaviour4": "_Partage_ une _pile_ _d'objets_ _correspondants_ et _éjecte_ _la_ _moitié_ de celui-ci sur le côté.", + + "block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS", + "block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.", + + "block.create.flexpeater.tooltip": "RÉPÉTEUR RÉGLABLE", + "block.create.flexpeater.tooltip.summary": "Un _répéteur_ _de_ _redstone_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + + "block.create.flexpulsepeater.tooltip": "RÉPÉTEUR D'IMPULSIONS RÉGLABLE", + "block.create.flexpulsepeater.tooltip.summary": "Un _répéteur_ _d'impulsions_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + + "block.create.analog_lever.tooltip": "LEVIER ANALOGIQUE", + "block.create.analog_lever.tooltip.summary": "Un levier avec un _contrôle_ plus _précis_ sur sa _puissance_ _de_ _signal_ émise.", + + "block.create.toggle_latch.tooltip": "LOQUET À BASCULE ALIMENTÉ", + "block.create.toggle_latch.tooltip.summary": "Un levier qui peut être basculé par une _pulsation_ _de_ _redstone_.", + + "block.create.redstone_latch.tooltip": "VERROU ALIMENTÉ", + "block.create.redstone_latch.tooltip.summary": "Un levier qui peut être contrôlé par un _signal_ _de_ _redstone_. Un signal sur _l'arrière_ _l'active_, un signal sur le _côté_ _va_ _le_ _réinitialiser_.", + + "block.create.speed_gauge.tooltip": "COMPTEUR DE VITESSE", + "block.create.speed_gauge.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.speed_gauge.tooltip.condition1": "Lorsque tourné", + "block.create.speed_gauge.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.", + + "block.create.stress_gauge.tooltip": "STRESSOMÈTRE", + "block.create.stress_gauge.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.stress_gauge.tooltip.condition1": "Lorsque tourné", + "block.create.stress_gauge.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.", + + "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", + "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", + + "item.create.shadow_steel.tooltip": "ACIER SOMBRE", + "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", + + "item.create.slot_cover.tooltip": "COUVERCLE D'EMPLACEMENT", + "item.create.slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.", + + "tool.create.shadow_steel.tooltip": "OUTILS D'ACIER SOMBRE", + "tool.create.shadow_steel.tooltip.summary": "Un outil rapide et puissant qui _détruit_ les _drops_ de n'importe quel bloc ou entité. Les monstres tués peuvent laisser tomber _plus_ _d'experience_ en fonction du modificateur de _loot_ de cet outil.", + + "tool.create.blazing.tooltip": "OUTILS FLAMBOYANTS", + "tool.create.blazing.tooltip.summary": "Cet outil va faire _fondre_ les _blocs_ _détruits_ et _enflamme_ les _entités_ _attaquées_. Il ne perdra pas sa durabilité lors de son utilisation dans le _Nether_.", + + "tool.create.rose_quartz.tooltip": "OUTILS EN QUARTZ ROSE", + "tool.create.rose_quartz.tooltip.summary": "Cet outil vous accorde une _meilleure_ _portée_ pour _détruire_ ou _placer_ les _blocs_ de votre seconde main.", + + "item.create.logistical_controller_calculation.tooltip": "WIP", + "item.create.logistical_controller_request.tooltip": "WIP", + "item.create.logistical_controller_storage.tooltip": "WIP", + "item.create.logistical_controller_supply.tooltip": "WIP", + "item.create.logistical_controller_transactions.tooltip": "WIP", + "block.create.logistical_index.tooltip": "WIP", + "block.create.package_funnel.tooltip": "WIP", + "block.create.logisticians_table.tooltip": "WIP", + "item.create.logistical_dial.tooltip": "WIP", + "item.create.logistical_filter.tooltip": "WIP", + + "itemGroup.create": "Create" +} diff --git a/src/main/resources/assets/create/models/block/millstone/casing.json b/src/main/resources/assets/create/models/block/millstone/casing.json new file mode 100644 index 000000000..68afc7d11 --- /dev/null +++ b/src/main/resources/assets/create/models/block/millstone/casing.json @@ -0,0 +1,163 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/gearbox", + "5": "create:block/millstone", + "6": "block/polished_andesite", + "13": "block/stripped_spruce_log", + "particle": "block/polished_andesite" + }, + "elements": [ + { + "from": [3, 13, 3], + "to": [5, 16, 13], + "faces": { + "north": {"uv": [0, 3, 3, 5], "rotation": 90, "texture": "#13"}, + "east": {"uv": [0, 0, 10, 3], "texture": "#13"}, + "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#13"}, + "west": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#13"}, + "up": {"uv": [5, 3, 7, 13], "texture": "#13"}, + "down": {"uv": [0, 0, 2, 10], "texture": "#13"} + } + }, + { + "from": [11, 13, 3], + "to": [13, 16, 13], + "faces": { + "north": {"uv": [0, 7, 3, 9], "rotation": 90, "texture": "#13"}, + "east": {"uv": [0, 10, 3, 0], "rotation": 90, "texture": "#13"}, + "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#13"}, + "west": {"uv": [10, 0, 0, 3], "texture": "#13"}, + "up": {"uv": [5, 2, 3, 12], "texture": "#13"}, + "down": {"uv": [2, 0, 0, 10], "texture": "#13"} + } + }, + { + "from": [5, 13, 11], + "to": [11, 16, 13], + "faces": { + "north": {"uv": [0, 0, 6, 3], "texture": "#13"}, + "east": {"uv": [0, 0, 2, 3], "texture": "#13"}, + "south": {"uv": [0, 3, 3, 9], "rotation": 90, "texture": "#13"}, + "west": {"uv": [0, 0, 2, 3], "texture": "#13"}, + "up": {"uv": [10, 4, 12, 10], "rotation": 90, "texture": "#13"}, + "down": {"uv": [0, 0, 6, 2], "texture": "#13"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 15, 11], + "faces": { + "up": {"uv": [6, 0, 9, 3], "rotation": 90, "texture": "#5"} + } + }, + { + "from": [5, 13, 3], + "to": [11, 16, 5], + "faces": { + "north": {"uv": [0, 9, 3, 3], "rotation": 90, "texture": "#13"}, + "east": {"uv": [2, 0, 0, 3], "texture": "#13"}, + "south": {"uv": [6, 0, 0, 3], "texture": "#13"}, + "west": {"uv": [2, 0, 0, 3], "texture": "#13"}, + "up": {"uv": [7, 3, 5, 9], "rotation": 270, "texture": "#13"}, + "down": {"uv": [0, 2, 6, 0], "texture": "#13"} + } + }, + { + "name": "bottom", + "from": [0, 0, 0], + "to": [16, 6, 2], + "faces": { + "north": {"uv": [0, 13, 8, 16], "texture": "#5"}, + "east": {"uv": [7, 13, 8, 16], "texture": "#5"}, + "south": {"uv": [0, 13, 8, 16], "texture": "#5"}, + "west": {"uv": [0, 13, 1, 16], "texture": "#5"}, + "up": {"uv": [0.5, 8.5, 8.5, 9.5], "texture": "#5"}, + "down": {"uv": [0, 14, 16, 16], "texture": "#0"} + } + }, + { + "name": "bottom", + "from": [0, 0, 14], + "to": [16, 6, 16], + "faces": { + "north": {"uv": [8, 13, 0, 16], "texture": "#5"}, + "east": {"uv": [8, 13, 7, 16], "texture": "#5"}, + "south": {"uv": [8, 13, 0, 16], "texture": "#5"}, + "west": {"uv": [1, 13, 0, 16], "texture": "#5"}, + "up": {"uv": [0.5, 9.5, 8.5, 8.5], "texture": "#5"}, + "down": {"uv": [0, 16, 16, 14], "texture": "#0"} + } + }, + { + "from": [0, 0, 2], + "to": [2, 6, 14], + "faces": { + "east": {"uv": [1, 13, 7, 16], "texture": "#5"}, + "west": {"uv": [1, 13, 7, 16], "texture": "#5"}, + "up": {"uv": [1.5, 8.5, 7.5, 9.5], "rotation": 270, "texture": "#5"}, + "down": {"uv": [0, 2, 2, 14], "texture": "#0"} + } + }, + { + "from": [14, 0, 2], + "to": [16, 6, 14], + "faces": { + "east": {"uv": [7, 13, 1, 16], "texture": "#5"}, + "west": {"uv": [7, 13, 1, 16], "texture": "#5"}, + "up": {"uv": [1.5, 9.5, 7.5, 8.5], "rotation": 270, "texture": "#5"}, + "down": {"uv": [2, 2, 0, 14], "texture": "#0"} + } + }, + { + "from": [2, 1, 2], + "to": [14, 6, 14], + "faces": { + "up": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#6"}, + "down": {"uv": [2, 2, 14, 14], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, -149, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, -149, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, -55, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -55, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 1.25], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [2.5, -0.5, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "rotation": [0, 180, 0], + "translation": [0, 1.75, -4.5], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [0, 1, 2, 3, 4, + { + "name": "bottom", + "origin": [8, 8, 8], + "children": [5, 6, 7, 8, 9] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/millstone/inner.json b/src/main/resources/assets/create/models/block/millstone/inner.json new file mode 100644 index 000000000..bb8230e10 --- /dev/null +++ b/src/main/resources/assets/create/models/block/millstone/inner.json @@ -0,0 +1,150 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "5": "create:block/millstone", + "particle": "create:block/axis", + "1_0": "create:block/axis", + "1_1": "create:block/axis_top" + }, + "elements": [ + { + "name": "Gear5", + "from": [6.5, 6.5, -1], + "to": [9.5, 12.5, 17], + "faces": { + "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "Gear6", + "from": [6.5, 6.5, -1], + "to": [9.5, 12.5, 17], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "Gear7", + "from": [-1, 6.5, 6.5], + "to": [17, 12.5, 9.5], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 180, "texture": "#5"} + } + }, + { + "name": "Gear7", + "from": [-1, 6.5, 6.5], + "to": [17, 12.5, 9.5], + "faces": { + "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 180, "texture": "#5"} + } + }, + { + "name": "GearCaseInner", + "from": [2, 6.6, 2], + "to": [14, 11.6, 14], + "faces": { + "north": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "east": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "south": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "west": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "up": {"uv": [0, 0, 6, 6], "texture": "#5"}, + "down": {"uv": [0, 0, 6, 6], "texture": "#5"} + } + }, + { + "name": "GearCaseOuter", + "from": [4, 6, 4], + "to": [12, 13, 12], + "faces": { + "north": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, + "east": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, + "south": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, + "west": {"uv": [1, 1.5, 5, 5], "texture": "#5"} + } + }, + { + "name": "Axis", + "from": [6, 0, 6], + "to": [10, 8, 10], + "shade": false, + "faces": { + "north": {"uv": [6, 0, 10, 8], "rotation": 180, "texture": "#1_0"}, + "east": {"uv": [6, 0, 10, 8], "rotation": 180, "texture": "#1_0"}, + "south": {"uv": [6, 0, 10, 8], "rotation": 180, "texture": "#1_0"}, + "west": {"uv": [6, 0, 10, 8], "rotation": 180, "texture": "#1_0"}, + "up": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, + "down": {"uv": [6, 6, 10, 10], "texture": "#1_1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, -149, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, -149, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, -55, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -55, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 1.25], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [2.5, -0.5, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "rotation": [0, 180, 0], + "translation": [0, 1.75, -4.5], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "cogwheel", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5] + }, + { + "name": "shaft_half", + "origin": [8, 8, 8], + "children": [6] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/millstone/item.json b/src/main/resources/assets/create/models/block/millstone/item.json new file mode 100644 index 000000000..643f75be3 --- /dev/null +++ b/src/main/resources/assets/create/models/block/millstone/item.json @@ -0,0 +1,211 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/gearbox", + "3": "block/stripped_spruce_log", + "5": "create:block/millstone", + "6": "block/polished_andesite", + "particle": "block/polished_andesite" + }, + "elements": [ + { + "name": "Gear5", + "from": [6.5, 6.5, -1], + "to": [9.5, 12.5, 17], + "faces": { + "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "Gear6", + "from": [6.5, 6.5, -1], + "to": [9.5, 12.5, 17], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "Gear7", + "from": [-1, 6.5, 6.5], + "to": [17, 12.5, 9.5], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 180, "texture": "#5"} + } + }, + { + "name": "Gear7", + "from": [-1, 6.5, 6.5], + "to": [17, 12.5, 9.5], + "faces": { + "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, + "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, + "up": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "down": {"uv": [0, 8.5, 9, 10], "rotation": 180, "texture": "#5"} + } + }, + { + "name": "GearCaseInner", + "from": [2, 6.6, 2], + "to": [14, 11.6, 14], + "faces": { + "north": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "east": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "south": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "west": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, + "up": {"uv": [0, 0, 6, 6], "texture": "#5"}, + "down": {"uv": [0, 0, 6, 6], "texture": "#5"} + } + }, + { + "name": "GearCaseOuter", + "from": [4, 6, 4], + "to": [12, 13, 12], + "faces": { + "north": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, + "east": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, + "south": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, + "west": {"uv": [1, 1.5, 5, 5], "texture": "#5"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 15, 11], + "faces": { + "up": {"uv": [6, 0, 9, 3], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "bottom", + "from": [0, 0, 0], + "to": [16, 6, 2], + "faces": { + "north": {"uv": [0, 13, 8, 16], "texture": "#5"}, + "east": {"uv": [7, 13, 8, 16], "texture": "#5"}, + "south": {"uv": [0, 13, 8, 16], "texture": "#5"}, + "west": {"uv": [0, 13, 1, 16], "texture": "#5"}, + "up": {"uv": [0.5, 8.5, 8.5, 9.5], "texture": "#5"}, + "down": {"uv": [0, 14, 16, 16], "texture": "#0"} + } + }, + { + "name": "bottom", + "from": [0, 0, 14], + "to": [16, 6, 16], + "faces": { + "north": {"uv": [8, 13, 0, 16], "texture": "#5"}, + "east": {"uv": [8, 13, 7, 16], "texture": "#5"}, + "south": {"uv": [8, 13, 0, 16], "texture": "#5"}, + "west": {"uv": [1, 13, 0, 16], "texture": "#5"}, + "up": {"uv": [0.5, 9.5, 8.5, 8.5], "texture": "#5"}, + "down": {"uv": [0, 16, 16, 14], "texture": "#0"} + } + }, + { + "from": [0, 0, 2], + "to": [2, 6, 14], + "faces": { + "east": {"uv": [1, 13, 7, 16], "texture": "#5"}, + "west": {"uv": [1, 13, 7, 16], "texture": "#5"}, + "up": {"uv": [1.5, 8.5, 7.5, 9.5], "rotation": 270, "texture": "#5"}, + "down": {"uv": [0, 2, 2, 14], "texture": "#0"} + } + }, + { + "from": [14, 0, 2], + "to": [16, 6, 14], + "faces": { + "east": {"uv": [7, 13, 1, 16], "texture": "#5"}, + "west": {"uv": [7, 13, 1, 16], "texture": "#5"}, + "up": {"uv": [1.5, 9.5, 7.5, 8.5], "rotation": 270, "texture": "#5"}, + "down": {"uv": [2, 2, 0, 14], "texture": "#0"} + } + }, + { + "from": [2, 1, 2], + "to": [14, 6, 14], + "faces": { + "up": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#6"}, + "down": {"uv": [2, 2, 14, 14], "texture": "#0"} + } + }, + { + "from": [11, 13, 3], + "to": [13, 16, 13], + "faces": { + "north": {"uv": [0, 7, 3, 9], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 10, 3, 0], "rotation": 90, "texture": "#3"}, + "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#3"}, + "west": {"uv": [10, 0, 0, 3], "texture": "#3"}, + "up": {"uv": [5, 2, 3, 12], "texture": "#3"}, + "down": {"uv": [2, 0, 0, 10], "texture": "#3"} + } + }, + { + "from": [5, 13, 11], + "to": [11, 16, 13], + "faces": { + "north": {"uv": [0, 0, 6, 3], "texture": "#3"}, + "east": {"uv": [0, 0, 2, 3], "texture": "#3"}, + "south": {"uv": [0, 3, 3, 9], "rotation": 90, "texture": "#3"}, + "west": {"uv": [0, 0, 2, 3], "texture": "#3"}, + "up": {"uv": [10, 4, 12, 10], "rotation": 90, "texture": "#3"}, + "down": {"uv": [0, 0, 6, 2], "texture": "#3"} + } + }, + { + "from": [5, 13, 3], + "to": [11, 16, 5], + "faces": { + "north": {"uv": [0, 9, 3, 3], "rotation": 90, "texture": "#3"}, + "east": {"uv": [2, 0, 0, 3], "texture": "#3"}, + "south": {"uv": [6, 0, 0, 3], "texture": "#3"}, + "west": {"uv": [2, 0, 0, 3], "texture": "#3"}, + "up": {"uv": [7, 3, 5, 9], "rotation": 270, "texture": "#3"}, + "down": {"uv": [0, 2, 6, 0], "texture": "#3"} + } + }, + { + "from": [3, 13, 3], + "to": [5, 16, 13], + "faces": { + "north": {"uv": [0, 3, 3, 5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 0, 10, 3], "texture": "#3"}, + "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#3"}, + "west": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#3"}, + "up": {"uv": [5, 3, 7, 13], "texture": "#3"}, + "down": {"uv": [0, 0, 2, 10], "texture": "#3"} + } + } + ], + "groups": [ + { + "name": "cogwheel", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5] + }, 6, + { + "name": "bottom", + "origin": [8, 8, 8], + "children": [7, 8, 9, 10, 11] + }, 12, 13, 14, 15] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/millstone.json b/src/main/resources/assets/create/models/item/millstone.json new file mode 100644 index 000000000..971e3a7a4 --- /dev/null +++ b/src/main/resources/assets/create/models/item/millstone.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/millstone/item" +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/millstone.png b/src/main/resources/assets/create/textures/block/millstone.png new file mode 100644 index 0000000000000000000000000000000000000000..cac9a112adf419fc230c7ec79c1a2019cc98e54c GIT binary patch literal 933 zcmV;W16urvP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D13F1WK~z{rwUA;!_yVb5fnu$# z^p+M1LcHGp&^bA6?#1@f{*uW#J?FMFXJ*dKt?_L3i4`4*l36tgqo9A5`FzHtsRy@t zE#UX@C}ayYqcQCWWA60}>%*4}ZP#}jOGJaA0Uoiou~DUXe1z9Nef~)A=3Y^;T&I10 zf~en?o2B>2|fyk+Jg8G9Y3df?9N{;cG7>JXLa)5a#05iPdgL^@4y~IkPd|@$1 z`#bh2ZNVCV5x_}V{f}-^XZR$}I4Kmat`*gZA)95hDLhc7o8bNI2XF{Pnee+@QsEG= zAB~Q)2N3hq4Z-{;X0a@fQ#VB%huG5O}2* zumOm_D1spFFbZym5hoMFbbLI`U+6aK8p?^G9PU1IHcgRmij9z4(F>ZA5F$WfWi!Wf z$&X%OJe;1kvP)~6U^>Wn(7HbRbk=jiIni-1xOeAfcMa&Y7j)YLDhZ)LSB%?$B!u!_ z!oA>oc2!BCP_WDGF0HR*X)*JjKUX(R9(#fBN3lkJ{~&E`Rg~m&E3~)Yr`C(5Uo5@A zH3?gB+LtwqHzvF#CnsUP*xd2-dyf)48XM!eo|FQf9Zy8*@|A1e3~1*Xy3q{}s9PZ5 z$AFu1+1JVcvd(-k{=UqV1&4JNrXoCT)VgyB8U_q z86k%iD9l@%*Z*)WL=Y)Jy0{gn>{3?EJAtoZWH>^VT7@tghI9VFQ?f7fg>MzQfA^NB z>nHGQ`A}qxVxwvD4TQ-E*qI$3UZB~wFfR~JSf~L59g*lCG*G0%fNJyu00000NkvXX Hu0mjf=1{H^ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/create/loot_tables/blocks/millstone.json b/src/main/resources/data/create/loot_tables/blocks/millstone.json new file mode 100644 index 000000000..76cc61eb3 --- /dev/null +++ b/src/main/resources/data/create/loot_tables/blocks/millstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:millstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crafting_shaped/contraptions/millstone.json b/src/main/resources/data/create/recipes/crafting_shaped/contraptions/millstone.json new file mode 100644 index 000000000..7e9d78ec0 --- /dev/null +++ b/src/main/resources/data/create/recipes/crafting_shaped/contraptions/millstone.json @@ -0,0 +1,32 @@ +{ + "type": "crafting_shaped", + "pattern": [ + " P ", + "ACA", + " S " + ], + "key": { + "C": { + "item": "create:cogwheel" + }, + "A": { + "item": "create:andesite_alloy" + }, + "S": { + "tag": "forge:stone" + }, + "P": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "create:millstone", + "count": 1 + }, + "conditions": [ + { + "type": "create:module", + "module": "contraptions" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crushing/allium.json b/src/main/resources/data/create/recipes/milling/allium.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/allium.json rename to src/main/resources/data/create/recipes/milling/allium.json index ececa0942..3389eeffe 100644 --- a/src/main/resources/data/create/recipes/crushing/allium.json +++ b/src/main/resources/data/create/recipes/milling/allium.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:allium" diff --git a/src/main/resources/data/create/recipes/crushing/andesite.json b/src/main/resources/data/create/recipes/milling/andesite.json similarity index 85% rename from src/main/resources/data/create/recipes/crushing/andesite.json rename to src/main/resources/data/create/recipes/milling/andesite.json index 135c66abb..7f6d34077 100644 --- a/src/main/resources/data/create/recipes/crushing/andesite.json +++ b/src/main/resources/data/create/recipes/milling/andesite.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:andesite" diff --git a/src/main/resources/data/create/recipes/crushing/azure_bluet.json b/src/main/resources/data/create/recipes/milling/azure_bluet.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/azure_bluet.json rename to src/main/resources/data/create/recipes/milling/azure_bluet.json index 009dad526..d3d8d136a 100644 --- a/src/main/resources/data/create/recipes/crushing/azure_bluet.json +++ b/src/main/resources/data/create/recipes/milling/azure_bluet.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:azure_bluet" diff --git a/src/main/resources/data/create/recipes/crushing/blue_orchid.json b/src/main/resources/data/create/recipes/milling/blue_orchid.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/blue_orchid.json rename to src/main/resources/data/create/recipes/milling/blue_orchid.json index 2946ca025..a83b75431 100644 --- a/src/main/resources/data/create/recipes/crushing/blue_orchid.json +++ b/src/main/resources/data/create/recipes/milling/blue_orchid.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:blue_orchid" diff --git a/src/main/resources/data/create/recipes/crushing/bone.json b/src/main/resources/data/create/recipes/milling/bone.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/bone.json rename to src/main/resources/data/create/recipes/milling/bone.json index 65e3436a7..974165dc3 100644 --- a/src/main/resources/data/create/recipes/crushing/bone.json +++ b/src/main/resources/data/create/recipes/milling/bone.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:bone" diff --git a/src/main/resources/data/create/recipes/crushing/bone_meal.json b/src/main/resources/data/create/recipes/milling/bone_meal.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/bone_meal.json rename to src/main/resources/data/create/recipes/milling/bone_meal.json index 806153c6e..a332f4ab8 100644 --- a/src/main/resources/data/create/recipes/crushing/bone_meal.json +++ b/src/main/resources/data/create/recipes/milling/bone_meal.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:bone_meal" diff --git a/src/main/resources/data/create/recipes/crushing/cactus.json b/src/main/resources/data/create/recipes/milling/cactus.json similarity index 93% rename from src/main/resources/data/create/recipes/crushing/cactus.json rename to src/main/resources/data/create/recipes/milling/cactus.json index 7bbe48aca..d2c82b4de 100644 --- a/src/main/resources/data/create/recipes/crushing/cactus.json +++ b/src/main/resources/data/create/recipes/milling/cactus.json @@ -9,7 +9,7 @@ } } ], - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:cactus" diff --git a/src/main/resources/data/create/recipes/crushing/charcoal.json b/src/main/resources/data/create/recipes/milling/charcoal.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/charcoal.json rename to src/main/resources/data/create/recipes/milling/charcoal.json index a9ccb576e..5be7dc15e 100644 --- a/src/main/resources/data/create/recipes/crushing/charcoal.json +++ b/src/main/resources/data/create/recipes/milling/charcoal.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:charcoal" diff --git a/src/main/resources/data/create/recipes/crushing/clay.json b/src/main/resources/data/create/recipes/milling/clay.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/clay.json rename to src/main/resources/data/create/recipes/milling/clay.json index 2d29c8b31..0ff90e484 100644 --- a/src/main/resources/data/create/recipes/crushing/clay.json +++ b/src/main/resources/data/create/recipes/milling/clay.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:clay" diff --git a/src/main/resources/data/create/recipes/crushing/coal.json b/src/main/resources/data/create/recipes/milling/coal.json similarity index 88% rename from src/main/resources/data/create/recipes/crushing/coal.json rename to src/main/resources/data/create/recipes/milling/coal.json index cf5e15cc3..5216193b8 100644 --- a/src/main/resources/data/create/recipes/crushing/coal.json +++ b/src/main/resources/data/create/recipes/milling/coal.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:coal" diff --git a/src/main/resources/data/create/recipes/crushing/cobblestone.json b/src/main/resources/data/create/recipes/milling/cobblestone.json similarity index 85% rename from src/main/resources/data/create/recipes/crushing/cobblestone.json rename to src/main/resources/data/create/recipes/milling/cobblestone.json index 028caeb63..3a08422b6 100644 --- a/src/main/resources/data/create/recipes/crushing/cobblestone.json +++ b/src/main/resources/data/create/recipes/milling/cobblestone.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:cobblestone" diff --git a/src/main/resources/data/create/recipes/crushing/cocoa_beans.json b/src/main/resources/data/create/recipes/milling/cocoa_beans.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/cocoa_beans.json rename to src/main/resources/data/create/recipes/milling/cocoa_beans.json index b602848b9..e44faf69c 100644 --- a/src/main/resources/data/create/recipes/crushing/cocoa_beans.json +++ b/src/main/resources/data/create/recipes/milling/cocoa_beans.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:cocoa_beans" diff --git a/src/main/resources/data/create/recipes/crushing/cornflower.json b/src/main/resources/data/create/recipes/milling/cornflower.json similarity index 85% rename from src/main/resources/data/create/recipes/crushing/cornflower.json rename to src/main/resources/data/create/recipes/milling/cornflower.json index 1b7d3e3c3..6a96dab2b 100644 --- a/src/main/resources/data/create/recipes/crushing/cornflower.json +++ b/src/main/resources/data/create/recipes/milling/cornflower.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:cornflower" diff --git a/src/main/resources/data/create/recipes/crushing/dandelion.json b/src/main/resources/data/create/recipes/milling/dandelion.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/dandelion.json rename to src/main/resources/data/create/recipes/milling/dandelion.json index 7596e4d62..35e617b87 100644 --- a/src/main/resources/data/create/recipes/crushing/dandelion.json +++ b/src/main/resources/data/create/recipes/milling/dandelion.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:dandelion" diff --git a/src/main/resources/data/create/recipes/crushing/diamond_horse_armor.json b/src/main/resources/data/create/recipes/milling/diamond_horse_armor.json similarity index 92% rename from src/main/resources/data/create/recipes/crushing/diamond_horse_armor.json rename to src/main/resources/data/create/recipes/milling/diamond_horse_armor.json index 0b1d66440..56c501b18 100644 --- a/src/main/resources/data/create/recipes/crushing/diamond_horse_armor.json +++ b/src/main/resources/data/create/recipes/milling/diamond_horse_armor.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:diamond_horse_armor" diff --git a/src/main/resources/data/create/recipes/crushing/diorite.json b/src/main/resources/data/create/recipes/milling/diorite.json similarity index 84% rename from src/main/resources/data/create/recipes/crushing/diorite.json rename to src/main/resources/data/create/recipes/milling/diorite.json index 58a9a1dbc..a251f3e5e 100644 --- a/src/main/resources/data/create/recipes/crushing/diorite.json +++ b/src/main/resources/data/create/recipes/milling/diorite.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:diorite" diff --git a/src/main/resources/data/create/recipes/crushing/fern.json b/src/main/resources/data/create/recipes/milling/fern.json similarity index 88% rename from src/main/resources/data/create/recipes/crushing/fern.json rename to src/main/resources/data/create/recipes/milling/fern.json index 98d2cf2cf..479d50381 100644 --- a/src/main/resources/data/create/recipes/crushing/fern.json +++ b/src/main/resources/data/create/recipes/milling/fern.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:fern" diff --git a/src/main/resources/data/create/recipes/crushing/golden_horse_armor.json b/src/main/resources/data/create/recipes/milling/golden_horse_armor.json similarity index 94% rename from src/main/resources/data/create/recipes/crushing/golden_horse_armor.json rename to src/main/resources/data/create/recipes/milling/golden_horse_armor.json index 6ea7d4bcf..4574bcabf 100644 --- a/src/main/resources/data/create/recipes/crushing/golden_horse_armor.json +++ b/src/main/resources/data/create/recipes/milling/golden_horse_armor.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:golden_horse_armor" diff --git a/src/main/resources/data/create/recipes/crushing/granite.json b/src/main/resources/data/create/recipes/milling/granite.json similarity index 85% rename from src/main/resources/data/create/recipes/crushing/granite.json rename to src/main/resources/data/create/recipes/milling/granite.json index d82b85c85..ff6d3c70d 100644 --- a/src/main/resources/data/create/recipes/crushing/granite.json +++ b/src/main/resources/data/create/recipes/milling/granite.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:granite" diff --git a/src/main/resources/data/create/recipes/crushing/grass.json b/src/main/resources/data/create/recipes/milling/grass.json similarity index 86% rename from src/main/resources/data/create/recipes/crushing/grass.json rename to src/main/resources/data/create/recipes/milling/grass.json index 0a7aa6764..b7a5a4110 100644 --- a/src/main/resources/data/create/recipes/crushing/grass.json +++ b/src/main/resources/data/create/recipes/milling/grass.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:grass" diff --git a/src/main/resources/data/create/recipes/crushing/gravel.json b/src/main/resources/data/create/recipes/milling/gravel.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/gravel.json rename to src/main/resources/data/create/recipes/milling/gravel.json index 7a24b7d2b..eacdb9296 100644 --- a/src/main/resources/data/create/recipes/crushing/gravel.json +++ b/src/main/resources/data/create/recipes/milling/gravel.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:gravel" diff --git a/src/main/resources/data/create/recipes/crushing/ink_sac.json b/src/main/resources/data/create/recipes/milling/ink_sac.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/ink_sac.json rename to src/main/resources/data/create/recipes/milling/ink_sac.json index 82ccec6c9..ec85b114a 100644 --- a/src/main/resources/data/create/recipes/crushing/ink_sac.json +++ b/src/main/resources/data/create/recipes/milling/ink_sac.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:ink_sac" diff --git a/src/main/resources/data/create/recipes/crushing/iron_horse_armor.json b/src/main/resources/data/create/recipes/milling/iron_horse_armor.json similarity index 94% rename from src/main/resources/data/create/recipes/crushing/iron_horse_armor.json rename to src/main/resources/data/create/recipes/milling/iron_horse_armor.json index 88ba0c780..aeafb2d50 100644 --- a/src/main/resources/data/create/recipes/crushing/iron_horse_armor.json +++ b/src/main/resources/data/create/recipes/milling/iron_horse_armor.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:iron_horse_armor" diff --git a/src/main/resources/data/create/recipes/crushing/lapis_lazuli.json b/src/main/resources/data/create/recipes/milling/lapis_lazuli.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/lapis_lazuli.json rename to src/main/resources/data/create/recipes/milling/lapis_lazuli.json index 3a7a17eed..6c6732cf6 100644 --- a/src/main/resources/data/create/recipes/crushing/lapis_lazuli.json +++ b/src/main/resources/data/create/recipes/milling/lapis_lazuli.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:lapis_lazuli" diff --git a/src/main/resources/data/create/recipes/crushing/large_fern.json b/src/main/resources/data/create/recipes/milling/large_fern.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/large_fern.json rename to src/main/resources/data/create/recipes/milling/large_fern.json index 08bde6a59..b58903449 100644 --- a/src/main/resources/data/create/recipes/crushing/large_fern.json +++ b/src/main/resources/data/create/recipes/milling/large_fern.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:large_fern" diff --git a/src/main/resources/data/create/recipes/crushing/leather_horse_armor.json b/src/main/resources/data/create/recipes/milling/leather_horse_armor.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/leather_horse_armor.json rename to src/main/resources/data/create/recipes/milling/leather_horse_armor.json index eda689e4d..21c4494ab 100644 --- a/src/main/resources/data/create/recipes/crushing/leather_horse_armor.json +++ b/src/main/resources/data/create/recipes/milling/leather_horse_armor.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:leather_horse_armor" diff --git a/src/main/resources/data/create/recipes/crushing/lilac.json b/src/main/resources/data/create/recipes/milling/lilac.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/lilac.json rename to src/main/resources/data/create/recipes/milling/lilac.json index faf14c4e0..bfc82d355 100644 --- a/src/main/resources/data/create/recipes/crushing/lilac.json +++ b/src/main/resources/data/create/recipes/milling/lilac.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:lilac" diff --git a/src/main/resources/data/create/recipes/crushing/lily_of_the_valley.json b/src/main/resources/data/create/recipes/milling/lily_of_the_valley.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/lily_of_the_valley.json rename to src/main/resources/data/create/recipes/milling/lily_of_the_valley.json index c1db9ef4f..2d307e8ed 100644 --- a/src/main/resources/data/create/recipes/crushing/lily_of_the_valley.json +++ b/src/main/resources/data/create/recipes/milling/lily_of_the_valley.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:lily_of_the_valley" diff --git a/src/main/resources/data/create/recipes/crushing/orange_tulip.json b/src/main/resources/data/create/recipes/milling/orange_tulip.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/orange_tulip.json rename to src/main/resources/data/create/recipes/milling/orange_tulip.json index 8b49605d2..d278a5f9c 100644 --- a/src/main/resources/data/create/recipes/crushing/orange_tulip.json +++ b/src/main/resources/data/create/recipes/milling/orange_tulip.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:orange_tulip" diff --git a/src/main/resources/data/create/recipes/crushing/oxeye_daisy.json b/src/main/resources/data/create/recipes/milling/oxeye_daisy.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/oxeye_daisy.json rename to src/main/resources/data/create/recipes/milling/oxeye_daisy.json index 92243c26a..a6641508d 100644 --- a/src/main/resources/data/create/recipes/crushing/oxeye_daisy.json +++ b/src/main/resources/data/create/recipes/milling/oxeye_daisy.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:oxeye_daisy" diff --git a/src/main/resources/data/create/recipes/crushing/peony.json b/src/main/resources/data/create/recipes/milling/peony.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/peony.json rename to src/main/resources/data/create/recipes/milling/peony.json index 2f752b5d1..4b031eaaa 100644 --- a/src/main/resources/data/create/recipes/crushing/peony.json +++ b/src/main/resources/data/create/recipes/milling/peony.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:peony" diff --git a/src/main/resources/data/create/recipes/crushing/pink_tulip.json b/src/main/resources/data/create/recipes/milling/pink_tulip.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/pink_tulip.json rename to src/main/resources/data/create/recipes/milling/pink_tulip.json index ababde21c..003408e10 100644 --- a/src/main/resources/data/create/recipes/crushing/pink_tulip.json +++ b/src/main/resources/data/create/recipes/milling/pink_tulip.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:pink_tulip" diff --git a/src/main/resources/data/create/recipes/crushing/poppy.json b/src/main/resources/data/create/recipes/milling/poppy.json similarity index 88% rename from src/main/resources/data/create/recipes/crushing/poppy.json rename to src/main/resources/data/create/recipes/milling/poppy.json index 48e38854f..c34ddfdcc 100644 --- a/src/main/resources/data/create/recipes/crushing/poppy.json +++ b/src/main/resources/data/create/recipes/milling/poppy.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:poppy" diff --git a/src/main/resources/data/create/recipes/crushing/red_tulip.json b/src/main/resources/data/create/recipes/milling/red_tulip.json similarity index 88% rename from src/main/resources/data/create/recipes/crushing/red_tulip.json rename to src/main/resources/data/create/recipes/milling/red_tulip.json index 76abb9f5b..43287b4bc 100644 --- a/src/main/resources/data/create/recipes/crushing/red_tulip.json +++ b/src/main/resources/data/create/recipes/milling/red_tulip.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:red_tulip" diff --git a/src/main/resources/data/create/recipes/crushing/rose_bush.json b/src/main/resources/data/create/recipes/milling/rose_bush.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/rose_bush.json rename to src/main/resources/data/create/recipes/milling/rose_bush.json index 7683b6ac1..97f5a0f18 100644 --- a/src/main/resources/data/create/recipes/crushing/rose_bush.json +++ b/src/main/resources/data/create/recipes/milling/rose_bush.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:rose_bush" diff --git a/src/main/resources/data/create/recipes/crushing/saddle.json b/src/main/resources/data/create/recipes/milling/saddle.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/saddle.json rename to src/main/resources/data/create/recipes/milling/saddle.json index 8b6059bd1..3569880d6 100644 --- a/src/main/resources/data/create/recipes/crushing/saddle.json +++ b/src/main/resources/data/create/recipes/milling/saddle.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:saddle" diff --git a/src/main/resources/data/create/recipes/crushing/sand.json b/src/main/resources/data/create/recipes/milling/sand.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/sand.json rename to src/main/resources/data/create/recipes/milling/sand.json index 8d02bd559..68321f4a8 100644 --- a/src/main/resources/data/create/recipes/crushing/sand.json +++ b/src/main/resources/data/create/recipes/milling/sand.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:sand" diff --git a/src/main/resources/data/create/recipes/crushing/sugar_cane.json b/src/main/resources/data/create/recipes/milling/sugar_cane.json similarity index 88% rename from src/main/resources/data/create/recipes/crushing/sugar_cane.json rename to src/main/resources/data/create/recipes/milling/sugar_cane.json index 219053dfc..f19d0a759 100644 --- a/src/main/resources/data/create/recipes/crushing/sugar_cane.json +++ b/src/main/resources/data/create/recipes/milling/sugar_cane.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:sugar_cane" diff --git a/src/main/resources/data/create/recipes/crushing/sunflower.json b/src/main/resources/data/create/recipes/milling/sunflower.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/sunflower.json rename to src/main/resources/data/create/recipes/milling/sunflower.json index 358680b97..8efe6a137 100644 --- a/src/main/resources/data/create/recipes/crushing/sunflower.json +++ b/src/main/resources/data/create/recipes/milling/sunflower.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:sunflower" diff --git a/src/main/resources/data/create/recipes/crushing/tall_grass.json b/src/main/resources/data/create/recipes/milling/tall_grass.json similarity index 86% rename from src/main/resources/data/create/recipes/crushing/tall_grass.json rename to src/main/resources/data/create/recipes/milling/tall_grass.json index ed595bae2..238806a21 100644 --- a/src/main/resources/data/create/recipes/crushing/tall_grass.json +++ b/src/main/resources/data/create/recipes/milling/tall_grass.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:tall_grass" diff --git a/src/main/resources/data/create/recipes/crushing/terracotta.json b/src/main/resources/data/create/recipes/milling/terracotta.json similarity index 85% rename from src/main/resources/data/create/recipes/crushing/terracotta.json rename to src/main/resources/data/create/recipes/milling/terracotta.json index 85b4fc418..807eeae8f 100644 --- a/src/main/resources/data/create/recipes/crushing/terracotta.json +++ b/src/main/resources/data/create/recipes/milling/terracotta.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:terracotta" diff --git a/src/main/resources/data/create/recipes/crushing/wheat.json b/src/main/resources/data/create/recipes/milling/wheat.json similarity index 91% rename from src/main/resources/data/create/recipes/crushing/wheat.json rename to src/main/resources/data/create/recipes/milling/wheat.json index 2fddb1788..de671565d 100644 --- a/src/main/resources/data/create/recipes/crushing/wheat.json +++ b/src/main/resources/data/create/recipes/milling/wheat.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:wheat" diff --git a/src/main/resources/data/create/recipes/crushing/white_tulip.json b/src/main/resources/data/create/recipes/milling/white_tulip.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/white_tulip.json rename to src/main/resources/data/create/recipes/milling/white_tulip.json index f64847a9e..838e2eeec 100644 --- a/src/main/resources/data/create/recipes/crushing/white_tulip.json +++ b/src/main/resources/data/create/recipes/milling/white_tulip.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:white_tulip" diff --git a/src/main/resources/data/create/recipes/crushing/wither_rose.json b/src/main/resources/data/create/recipes/milling/wither_rose.json similarity index 89% rename from src/main/resources/data/create/recipes/crushing/wither_rose.json rename to src/main/resources/data/create/recipes/milling/wither_rose.json index 543c1baa1..87f1a6cc5 100644 --- a/src/main/resources/data/create/recipes/crushing/wither_rose.json +++ b/src/main/resources/data/create/recipes/milling/wither_rose.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "item": "minecraft:wither_rose" diff --git a/src/main/resources/data/create/recipes/crushing/wool.json b/src/main/resources/data/create/recipes/milling/wool.json similarity index 88% rename from src/main/resources/data/create/recipes/crushing/wool.json rename to src/main/resources/data/create/recipes/milling/wool.json index 21f9ba59c..05984e870 100644 --- a/src/main/resources/data/create/recipes/crushing/wool.json +++ b/src/main/resources/data/create/recipes/milling/wool.json @@ -1,5 +1,5 @@ { - "type": "create:crushing", + "type": "create:milling", "ingredients": [ { "tag": "minecraft:wool"