Bugs, Recipes and Storage Blocks

- Added Zinc and Brass Block
- Added compat for mechanical Saw with BoP's logs
- Fixed Crafters and Mixers not handling container items properly
- Fixed Shafts not dropping when breaking a belt segment with pulley
- Added missing loot table for copper blocks and shingles
This commit is contained in:
simibubi 2020-03-23 17:04:09 +01:00
parent 1dd68bf427
commit f9b9659bc6
80 changed files with 845 additions and 109 deletions

View file

@ -13,7 +13,7 @@ apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse' apply plugin: 'eclipse'
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
version = 'mc1.14.4_v0.2.1' version = 'mc1.14.4_v0.2.2'
group = 'com.simibubi.create' group = 'com.simibubi.create'
archivesBaseName = 'create' archivesBaseName = 'create'

View file

@ -282,6 +282,8 @@ public enum AllBlocks {
ZINC_ORE(new Block(Properties.from(Blocks.GOLD_ORE).harvestLevel(2).harvestTool(ToolType.PICKAXE))), ZINC_ORE(new Block(Properties.from(Blocks.GOLD_ORE).harvestLevel(2).harvestTool(ToolType.PICKAXE))),
COPPER_BLOCK(new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f)), COPPER_BLOCK(new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f)),
COPPER_SHINGLES(new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f)), COPPER_SHINGLES(new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f)),
ZINC_BLOCK(new Block(Properties.from(Blocks.IRON_BLOCK))),
BRASS_BLOCK(new Block(Properties.from(Blocks.IRON_BLOCK))),
; ;

View file

@ -1,11 +1,15 @@
package com.simibubi.create; package com.simibubi.create;
import java.io.IOException;
import java.nio.file.Path;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.data.ICanGenerateJson; import com.simibubi.create.foundation.utility.data.ICanGenerateJson;
import net.minecraft.data.DirectoryCache; import net.minecraft.data.DirectoryCache;
import net.minecraft.data.IDataProvider; import net.minecraft.data.IDataProvider;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@ -14,9 +18,6 @@ import net.minecraft.util.SoundEvents;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
import java.io.IOException;
import java.nio.file.Path;
public enum AllSoundEvents implements ICanGenerateJson { public enum AllSoundEvents implements ICanGenerateJson {
CUCKOO_PIG("creeperclock"), CUCKOO_PIG("creeperclock"),

View file

@ -1,11 +1,10 @@
package com.simibubi.create; package com.simibubi.create;
import com.simibubi.create.foundation.advancement.AllTriggers;
import net.minecraft.util.SoundEvent;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import com.simibubi.create.config.AllConfigs; import com.simibubi.create.config.AllConfigs;
import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.command.CreateCommand; import com.simibubi.create.foundation.command.CreateCommand;
import com.simibubi.create.foundation.command.ServerLagger; import com.simibubi.create.foundation.command.ServerLagger;
import com.simibubi.create.foundation.world.AllWorldFeatures; import com.simibubi.create.foundation.world.AllWorldFeatures;
@ -22,6 +21,7 @@ import net.minecraft.item.ItemGroup;
import net.minecraft.item.crafting.IRecipeSerializer; import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.particles.ParticleType; import net.minecraft.particles.ParticleType;
import net.minecraft.tileentity.TileEntityType; import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.SoundEvent;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;

View file

@ -1,16 +1,21 @@
package com.simibubi.create.foundation.advancement; package com.simibubi.create.foundation.advancement;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import net.minecraft.advancements.ICriterionTrigger; import net.minecraft.advancements.ICriterionTrigger;
import net.minecraft.advancements.PlayerAdvancements; import net.minecraft.advancements.PlayerAdvancements;
import net.minecraft.advancements.criterion.CriterionInstance; import net.minecraft.advancements.criterion.CriterionInstance;
import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import java.util.*;
import java.util.function.Supplier;
public abstract class CriterionTriggerBase<T extends CriterionTriggerBase.Instance> implements ICriterionTrigger<T> { public abstract class CriterionTriggerBase<T extends CriterionTriggerBase.Instance> implements ICriterionTrigger<T> {
public CriterionTriggerBase(String id) { public CriterionTriggerBase(String id) {

View file

@ -1,16 +1,17 @@
package com.simibubi.create.foundation.advancement; package com.simibubi.create.foundation.advancement;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import net.minecraft.advancements.criterion.ItemPredicate;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import net.minecraft.advancements.criterion.ItemPredicate;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
public class SandpaperUseTrigger extends CriterionTriggerBase<SandpaperUseTrigger.Instance> { public class SandpaperUseTrigger extends CriterionTriggerBase<SandpaperUseTrigger.Instance> {
public SandpaperUseTrigger(String id) { public SandpaperUseTrigger(String id) {

View file

@ -1,13 +1,14 @@
package com.simibubi.create.foundation.advancement; package com.simibubi.create.foundation.advancement;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.util.ResourceLocation;
import java.util.List; import java.util.List;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.util.ResourceLocation;
public class SimpleTrigger extends CriterionTriggerBase<SimpleTrigger.Instance> { public class SimpleTrigger extends CriterionTriggerBase<SimpleTrigger.Instance> {
public SimpleTrigger(String id) { public SimpleTrigger(String id) {

View file

@ -4,6 +4,7 @@ import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.builder.ArgumentBuilder;
import com.simibubi.create.AllPackets; import com.simibubi.create.AllPackets;
import com.simibubi.create.config.AllConfigs; import com.simibubi.create.config.AllConfigs;
import net.minecraft.command.CommandSource; import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands; import net.minecraft.command.Commands;
import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity;

View file

@ -1,5 +1,26 @@
package com.simibubi.create.foundation.item; package com.simibubi.create.foundation.item;
import static com.simibubi.create.foundation.item.TooltipHelper.cutString;
import static net.minecraft.util.text.TextFormatting.AQUA;
import static net.minecraft.util.text.TextFormatting.BLUE;
import static net.minecraft.util.text.TextFormatting.DARK_GRAY;
import static net.minecraft.util.text.TextFormatting.DARK_GREEN;
import static net.minecraft.util.text.TextFormatting.DARK_PURPLE;
import static net.minecraft.util.text.TextFormatting.DARK_RED;
import static net.minecraft.util.text.TextFormatting.GOLD;
import static net.minecraft.util.text.TextFormatting.GRAY;
import static net.minecraft.util.text.TextFormatting.GREEN;
import static net.minecraft.util.text.TextFormatting.LIGHT_PURPLE;
import static net.minecraft.util.text.TextFormatting.RED;
import static net.minecraft.util.text.TextFormatting.STRIKETHROUGH;
import static net.minecraft.util.text.TextFormatting.WHITE;
import static net.minecraft.util.text.TextFormatting.YELLOW;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
import com.simibubi.create.config.AllConfigs; import com.simibubi.create.config.AllConfigs;
import com.simibubi.create.config.CKinetics; import com.simibubi.create.config.CKinetics;
@ -11,6 +32,7 @@ import com.simibubi.create.modules.contraptions.components.fan.EncasedFanBlock;
import com.simibubi.create.modules.contraptions.components.flywheel.engine.EngineBlock; import com.simibubi.create.modules.contraptions.components.flywheel.engine.EngineBlock;
import com.simibubi.create.modules.contraptions.components.flywheel.engine.FurnaceEngineBlock; import com.simibubi.create.modules.contraptions.components.flywheel.engine.FurnaceEngineBlock;
import com.simibubi.create.modules.contraptions.components.waterwheel.WaterWheelBlock; import com.simibubi.create.modules.contraptions.components.waterwheel.WaterWheelBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
@ -21,14 +43,6 @@ import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; import net.minecraftforge.common.ForgeConfigSpec.ConfigValue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static com.simibubi.create.foundation.item.TooltipHelper.cutString;
import static net.minecraft.util.text.TextFormatting.*;
public class ItemDescription { public class ItemDescription {
public static final ItemDescription MISSING = new ItemDescription(null); public static final ItemDescription MISSING = new ItemDescription(null);

View file

@ -1,12 +1,13 @@
package com.simibubi.create.foundation.utility.data; package com.simibubi.create.foundation.utility.data;
import com.simibubi.create.AllSoundEvents;
import net.minecraft.data.DirectoryCache;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import com.simibubi.create.AllSoundEvents;
import net.minecraft.data.DirectoryCache;
public class Generator { public class Generator {
/* /*

View file

@ -1,9 +1,9 @@
package com.simibubi.create.foundation.utility.data; package com.simibubi.create.foundation.utility.data;
import net.minecraft.data.DirectoryCache;
import java.nio.file.Path; import java.nio.file.Path;
import net.minecraft.data.DirectoryCache;
public interface ICanGenerateJson { public interface ICanGenerateJson {
//path points to the resource1s base folder //path points to the resource1s base folder

View file

@ -19,9 +19,9 @@ public enum AllWorldFeatures {
COPPER_ORE_OCEAN( COPPER_ORE_OCEAN(
new CountedOreFeature(AllBlocks.COPPER_ORE.get(), 15, 4).between(20, 55).inBiomes(Biome.Category.OCEAN)), new CountedOreFeature(AllBlocks.COPPER_ORE.get(), 15, 4).between(20, 55).inBiomes(Biome.Category.OCEAN)),
ZINC_ORE(new CountedOreFeature(AllBlocks.ZINC_ORE.get(), 17, 1).between(55, 80)), ZINC_ORE(new CountedOreFeature(AllBlocks.ZINC_ORE.get(), 8, 1).between(55, 80)),
ZINC_ORE_DESERT( ZINC_ORE_DESERT(
new CountedOreFeature(AllBlocks.ZINC_ORE.get(), 17, 5).between(50, 85).inBiomes(Biome.Category.DESERT)), new CountedOreFeature(AllBlocks.ZINC_ORE.get(), 10, 5).between(50, 85).inBiomes(Biome.Category.DESERT)),
LIMESTONE(new ChanceOreFeature(AllBlocks.LIMESTONE.get(), 128, 1 / 32f).between(30, 70)), LIMESTONE(new ChanceOreFeature(AllBlocks.LIMESTONE.get(), 128, 1 / 32f).between(30, 70)),
WEATHERED_LIMESTONE(new ChanceOreFeature(AllBlocks.WEATHERED_LIMESTONE.get(), 128, 1 / 32f).between(10, 30)), WEATHERED_LIMESTONE(new ChanceOreFeature(AllBlocks.WEATHERED_LIMESTONE.get(), 128, 1 / 32f).between(10, 30)),

View file

@ -39,7 +39,8 @@ public class WrenchItem extends Item implements IHaveCustomItemModel {
if (player.isSneaking()) { if (player.isSneaking()) {
if (world instanceof ServerWorld) { if (world instanceof ServerWorld) {
if (!player.isCreative()) if (!player.isCreative())
Block.getDrops(state, (ServerWorld) world, pos, world.getTileEntity(pos)).forEach(itemStack -> { Block.getDrops(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem())
.forEach(itemStack -> {
player.inventory.placeItemBackInInventory(world, itemStack); player.inventory.placeItemBackInInventory(world, itemStack);
}); });
state.spawnAdditionalDrops(world, pos, ItemStack.EMPTY); state.spawnAdditionalDrops(world, pos, ItemStack.EMPTY);

View file

@ -8,8 +8,8 @@ import net.minecraft.state.BooleanProperty;
import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.StateContainer.Builder;
import net.minecraft.util.ActionResultType; import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Rotation;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IWorldReader; import net.minecraft.world.IWorldReader;
import net.minecraft.world.World; import net.minecraft.world.World;

View file

@ -1,16 +1,16 @@
package com.simibubi.create.modules.contraptions.base; package com.simibubi.create.modules.contraptions.base;
import java.util.List;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.modules.contraptions.KineticNetwork; import com.simibubi.create.modules.contraptions.KineticNetwork;
import com.simibubi.create.modules.contraptions.base.IRotate.SpeedLevel; import com.simibubi.create.modules.contraptions.base.IRotate.SpeedLevel;
import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation; import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation;
import net.minecraft.tileentity.TileEntityType; import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import java.util.List;
public abstract class GeneratingKineticTileEntity extends KineticTileEntity { public abstract class GeneratingKineticTileEntity extends KineticTileEntity {
public boolean reActivateSource; public boolean reActivateSource;

View file

@ -4,8 +4,8 @@ import com.simibubi.create.config.AllConfigs;
import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.item.ItemDescription;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.modules.contraptions.IWrenchable; import com.simibubi.create.modules.contraptions.IWrenchable;
import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation; import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;

View file

@ -1,5 +1,7 @@
package com.simibubi.create.modules.contraptions.base; package com.simibubi.create.modules.contraptions.base;
import static net.minecraft.util.text.TextFormatting.GRAY;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -16,8 +18,8 @@ import com.simibubi.create.modules.contraptions.KineticNetwork;
import com.simibubi.create.modules.contraptions.RotationPropagator; import com.simibubi.create.modules.contraptions.RotationPropagator;
import com.simibubi.create.modules.contraptions.base.IRotate.SpeedLevel; import com.simibubi.create.modules.contraptions.base.IRotate.SpeedLevel;
import com.simibubi.create.modules.contraptions.base.IRotate.StressImpact; import com.simibubi.create.modules.contraptions.base.IRotate.StressImpact;
import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation; import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
@ -31,8 +33,6 @@ import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; import net.minecraftforge.common.ForgeConfigSpec.ConfigValue;
import static net.minecraft.util.text.TextFormatting.GRAY;
public abstract class KineticTileEntity extends SmartTileEntity implements ITickableTileEntity, IHaveGoggleInformation { public abstract class KineticTileEntity extends SmartTileEntity implements ITickableTileEntity, IHaveGoggleInformation {
public @Nullable Long network; public @Nullable Long network;

View file

@ -12,8 +12,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorldReader; import net.minecraft.world.IWorldReader;

View file

@ -14,8 +14,8 @@ import com.simibubi.create.CreateClient;
import com.simibubi.create.config.AllConfigs; import com.simibubi.create.config.AllConfigs;
import com.simibubi.create.foundation.utility.PlacementSimulationWorld; import com.simibubi.create.foundation.utility.PlacementSimulationWorld;
import com.simibubi.create.foundation.utility.SuperByteBuffer; import com.simibubi.create.foundation.utility.SuperByteBuffer;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.SuperByteBufferCache.Compartment; import com.simibubi.create.foundation.utility.SuperByteBufferCache.Compartment;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.WrappedWorld; import com.simibubi.create.foundation.utility.WrappedWorld;
import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockRenderType;

View file

@ -14,8 +14,8 @@ import net.minecraft.state.EnumProperty;
import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.ISelectionContext;

View file

@ -2,6 +2,7 @@ package com.simibubi.create.modules.contraptions.components.crafter;
import static com.simibubi.create.modules.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING; import static com.simibubi.create.modules.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -207,7 +208,19 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
} }
ItemStack result = RecipeGridHandler.tryToApplyRecipe(world, groupedItems); ItemStack result = RecipeGridHandler.tryToApplyRecipe(world, groupedItems);
if (result != null) { if (result != null) {
List<ItemStack> containers = new ArrayList<>();
groupedItems.grid.values().forEach(stack -> {
if (stack.hasContainerItem())
containers.add(stack.getContainerItem().copy());
});
groupedItems = new GroupedItems(result); groupedItems = new GroupedItems(result);
containers.forEach(stack -> {
GroupedItems container = new GroupedItems(stack);
container.mergeOnto(groupedItems, Pointing.LEFT);
});
phase = Phase.CRAFTING; phase = Phase.CRAFTING;
countDown = 2000; countDown = 2000;
sendData(); sendData();
@ -381,8 +394,8 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
return; return;
if (world.isRemote) if (world.isRemote)
return; return;
List<MechanicalCrafterTileEntity> chain = RecipeGridHandler.getAllCraftersOfChainIf(this, List<MechanicalCrafterTileEntity> chain =
MechanicalCrafterTileEntity::craftingItemPresent); RecipeGridHandler.getAllCraftersOfChainIf(this, MechanicalCrafterTileEntity::craftingItemPresent);
if (chain == null) if (chain == null)
return; return;
chain.forEach(MechanicalCrafterTileEntity::begin); chain.forEach(MechanicalCrafterTileEntity::begin);

View file

@ -32,8 +32,8 @@ import net.minecraft.util.math.Vec3d;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<MechanicalCrafterTileEntity> { public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<MechanicalCrafterTileEntity> {
public static SpriteShiftEntry animatedTexture = SpriteShifter.get("block/crafter_thingies", public static SpriteShiftEntry animatedTexture =
"block/crafter_thingies"); SpriteShifter.get("block/crafter_thingies", "block/crafter_thingies");
@Override @Override
public void renderWithGL(MechanicalCrafterTileEntity te, double x, double y, double z, float partialTicks, public void renderWithGL(MechanicalCrafterTileEntity te, double x, double y, double z, float partialTicks,
@ -44,8 +44,8 @@ public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<
if (te.phase == Phase.EXPORTING) { if (te.phase == Phase.EXPORTING) {
Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(te.getBlockState()); Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(te.getBlockState());
float progress = MathHelper.clamp((1000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, 0, float progress =
1); MathHelper.clamp((1000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, 0, 1);
vec = vec.add(new Vec3d(targetDirection.getDirectionVec()).scale(progress * .75f)); vec = vec.add(new Vec3d(targetDirection.getDirectionVec()).scale(progress * .75f));
} }
@ -83,23 +83,25 @@ public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<
if (te.phase == Phase.CRAFTING) { if (te.phase == Phase.CRAFTING) {
items = te.groupedItemsBeforeCraft; items = te.groupedItemsBeforeCraft;
items.calcStats(); items.calcStats();
float progress = MathHelper.clamp((2000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, float progress =
0, 1); MathHelper.clamp((2000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, 0, 1);
float earlyProgress = MathHelper.clamp(progress * 2, 0, 1); float earlyProgress = MathHelper.clamp(progress * 2, 0, 1);
float lateProgress = MathHelper.clamp(progress * 2 - 1, 0, 1); float lateProgress = MathHelper.clamp(progress * 2 - 1, 0, 1);
// GlStateManager.rotated(lateProgress * 360, 0, 0, 1);
GlStateManager.scaled(1 - lateProgress, 1 - lateProgress, 1 - lateProgress); GlStateManager.scaled(1 - lateProgress, 1 - lateProgress, 1 - lateProgress);
Vec3d centering =
Vec3d centering = new Vec3d(-items.minX + (-items.width + 1) / 2f, new Vec3d(-items.minX + (-items.width + 1) / 2f, -items.minY + (-items.height + 1) / 2f, 0)
-items.minY + (-items.height + 1) / 2f, 0).scale(earlyProgress); .scale(earlyProgress);
GlStateManager.translated(centering.x * .5f, centering.y * .5f, 0); GlStateManager.translated(centering.x * .5f, centering.y * .5f, 0);
distance += (-4 * (progress - .5f) * (progress - .5f) + 1) * .25f; distance += (-4 * (progress - .5f) * (progress - .5f) + 1) * .25f;
} }
boolean onlyRenderFirst = te.phase == Phase.INSERTING || te.phase == Phase.CRAFTING && te.countDown < 1000;
final float spacing = distance; final float spacing = distance;
items.grid.forEach((pair, stack) -> { items.grid.forEach((pair, stack) -> {
if (onlyRenderFirst && (pair.getLeft().intValue() != 0 || pair.getRight().intValue() != 0))
return;
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.translatef(pair.getKey() * spacing, pair.getValue() * spacing, 0); GlStateManager.translatef(pair.getKey() * spacing, pair.getValue() * spacing, 0);
TessellatorHelper.fightZFighting(pair.hashCode() + te.getPos().hashCode()); TessellatorHelper.fightZFighting(pair.hashCode() + te.getPos().hashCode());
@ -111,8 +113,8 @@ public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<
if (te.phase == Phase.CRAFTING) { if (te.phase == Phase.CRAFTING) {
items = te.groupedItems; items = te.groupedItems;
float progress = MathHelper.clamp((1000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, float progress =
0, 1); MathHelper.clamp((1000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, 0, 1);
float earlyProgress = MathHelper.clamp(progress * 2, 0, 1); float earlyProgress = MathHelper.clamp(progress * 2, 0, 1);
float lateProgress = MathHelper.clamp(progress * 2 - 1, 0, 1); float lateProgress = MathHelper.clamp(progress * 2 - 1, 0, 1);
@ -123,6 +125,8 @@ public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<
GlStateManager.scaled(downScaling, downScaling, downScaling); GlStateManager.scaled(downScaling, downScaling, downScaling);
items.grid.forEach((pair, stack) -> { items.grid.forEach((pair, stack) -> {
if (pair.getLeft().intValue() != 0 || pair.getRight().intValue() != 0)
return;
Minecraft.getInstance().getItemRenderer().renderItem(stack, TransformType.FIXED); Minecraft.getInstance().getItemRenderer().renderItem(stack, TransformType.FIXED);
}); });
} }
@ -153,8 +157,8 @@ public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<
if (MechanicalCrafterBlock.isValidTarget(getWorld(), pos.offset(targetDirection), blockState)) { if (MechanicalCrafterBlock.isValidTarget(getWorld(), pos.offset(targetDirection), blockState)) {
SuperByteBuffer beltBuffer = renderAndTransform(AllBlockPartials.MECHANICAL_CRAFTER_BELT, blockState, pos); SuperByteBuffer beltBuffer = renderAndTransform(AllBlockPartials.MECHANICAL_CRAFTER_BELT, blockState, pos);
SuperByteBuffer beltFrameBuffer = renderAndTransform(AllBlockPartials.MECHANICAL_CRAFTER_BELT_FRAME, blockState, SuperByteBuffer beltFrameBuffer =
pos); renderAndTransform(AllBlockPartials.MECHANICAL_CRAFTER_BELT_FRAME, blockState, pos);
if (te.phase == Phase.EXPORTING) { if (te.phase == Phase.EXPORTING) {
int textureIndex = (int) ((te.getCountDownSpeed() / 128f * AnimationTickHolder.ticks)); int textureIndex = (int) ((te.getCountDownSpeed() / 128f * AnimationTickHolder.ticks));
@ -168,7 +172,8 @@ public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<
beltFrameBuffer.translate(x, y, z).renderInto(buffer); beltFrameBuffer.translate(x, y, z).renderInto(buffer);
} else { } else {
SuperByteBuffer arrowBuffer = renderAndTransform(AllBlockPartials.MECHANICAL_CRAFTER_ARROW, blockState, pos); SuperByteBuffer arrowBuffer =
renderAndTransform(AllBlockPartials.MECHANICAL_CRAFTER_ARROW, blockState, pos);
arrowBuffer.translate(x, y, z).renderInto(buffer); arrowBuffer.translate(x, y, z).renderInto(buffer);
} }

View file

@ -14,8 +14,8 @@ import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.Direction.AxisDirection;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.Rotation; import net.minecraft.util.Rotation;
import net.minecraft.util.math.MathHelper;
public class FlywheelRenderer extends KineticTileEntityRenderer { public class FlywheelRenderer extends KineticTileEntityRenderer {

View file

@ -11,9 +11,7 @@ import com.simibubi.create.modules.contraptions.base.KineticTileEntity;
import com.simibubi.create.modules.contraptions.processing.BasinTileEntity.BasinInventory; import com.simibubi.create.modules.contraptions.processing.BasinTileEntity.BasinInventory;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.BucketItem;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.Ingredient; import net.minecraft.item.crafting.Ingredient;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -128,8 +126,8 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity {
IItemHandlerModifiable inputs = inv.getInputHandler(); IItemHandlerModifiable inputs = inv.getInputHandler();
IItemHandlerModifiable outputs = inv.getOutputHandler(); IItemHandlerModifiable outputs = inv.getOutputHandler();
List<ItemStack> catalysts = new ArrayList<>(); List<ItemStack> catalysts = new ArrayList<>();
List<ItemStack> containers = new ArrayList<>();
int buckets = 0;
NonNullList<Ingredient> ingredients = lastRecipe.getIngredients(); NonNullList<Ingredient> ingredients = lastRecipe.getIngredients();
Ingredients: for (int i = 0; i < ingredients.size(); i++) { Ingredients: for (int i = 0; i < ingredients.size(); i++) {
Ingredient ingredient = ingredients.get(i); Ingredient ingredient = ingredients.get(i);
@ -137,12 +135,11 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity {
if (!ingredient.test(inputs.extractItem(slot, 1, true))) if (!ingredient.test(inputs.extractItem(slot, 1, true)))
continue; continue;
ItemStack extracted = inputs.extractItem(slot, 1, false); ItemStack extracted = inputs.extractItem(slot, 1, false);
if (extracted.getItem() instanceof BucketItem) if ((lastRecipe instanceof ProcessingRecipe)
buckets++; && ((ProcessingRecipe<?>) lastRecipe).getRollableIngredients().get(i).remains()) {
if ((lastRecipe instanceof ProcessingRecipe)) {
if (((ProcessingRecipe<?>) lastRecipe).getRollableIngredients().get(i).remains())
catalysts.add(extracted.copy()); catalysts.add(extracted.copy());
} else if (extracted.hasContainerItem()) {
containers.add(extracted.getContainerItem().copy());
} }
continue Ingredients; continue Ingredients;
} }
@ -151,8 +148,7 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity {
} }
ItemHandlerHelper.insertItemStacked(outputs, lastRecipe.getRecipeOutput().copy(), false); ItemHandlerHelper.insertItemStacked(outputs, lastRecipe.getRecipeOutput().copy(), false);
if (buckets > 0) containers.forEach(stack -> ItemHandlerHelper.insertItemStacked(outputs, stack, false));
ItemHandlerHelper.insertItemStacked(outputs, new ItemStack(Items.BUCKET, buckets), false);
catalysts.forEach(c -> ItemHandlerHelper.insertItemStacked(outputs, c, false)); catalysts.forEach(c -> ItemHandlerHelper.insertItemStacked(outputs, c, false));
// Continue mixing // Continue mixing

View file

@ -6,12 +6,10 @@ import com.simibubi.create.AllTileEntities;
import com.simibubi.create.foundation.behaviour.base.SmartTileEntity; import com.simibubi.create.foundation.behaviour.base.SmartTileEntity;
import com.simibubi.create.foundation.behaviour.base.TileEntityBehaviour; import com.simibubi.create.foundation.behaviour.base.TileEntityBehaviour;
import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation; import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation;
import net.minecraft.block.BlockState;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
public class AnalogLeverTileEntity extends SmartTileEntity implements IHaveGoggleInformation { public class AnalogLeverTileEntity extends SmartTileEntity implements IHaveGoggleInformation {

View file

@ -55,6 +55,7 @@ import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorldReader; import net.minecraft.world.IWorldReader;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.storage.loot.LootParameter;
import net.minecraft.world.storage.loot.LootParameters; import net.minecraft.world.storage.loot.LootParameters;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@ -101,11 +102,12 @@ public class BeltBlock extends HorizontalKineticBlock
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Override @Override
public List<ItemStack> getDrops(BlockState state, net.minecraft.world.storage.loot.LootContext.Builder builder) { public List<ItemStack> getDrops(BlockState state, net.minecraft.world.storage.loot.LootContext.Builder builder) {
List<ItemStack> drops = new ArrayList<>(); List<ItemStack> drops = super.getDrops(state, builder);
if (state.get(PART) == Part.START || builder.get(LootParameters.THIS_ENTITY) != null)
drops.addAll(super.getDrops(state, builder));
if (state.get(CASING)) if (state.get(CASING))
drops.addAll(AllBlocks.BRASS_CASING.getDefault().getDrops(builder)); drops.addAll(AllBlocks.BRASS_CASING.getDefault().getDrops(builder));
TileEntity tileEntity = builder.get(LootParameters.BLOCK_ENTITY);
if (tileEntity instanceof BeltTileEntity && ((BeltTileEntity) tileEntity).hasPulley())
drops.addAll(AllBlocks.SHAFT.getDefault().getDrops(builder));
return drops; return drops;
} }
@ -114,8 +116,6 @@ public class BeltBlock extends HorizontalKineticBlock
withTileEntityDo(worldIn, pos, te -> { withTileEntityDo(worldIn, pos, te -> {
if (worldIn.isRemote) if (worldIn.isRemote)
return; return;
if (te.hasPulley())
Block.spawnDrops(AllBlocks.SHAFT.get().getDefaultState(), worldIn, pos);
if (te.isController()) { if (te.isController()) {
BeltInventory inv = te.getInventory(); BeltInventory inv = te.getInventory();
for (TransportedItemStack s : inv.items) for (TransportedItemStack s : inv.items)

View file

@ -14,8 +14,8 @@ import net.minecraft.item.BlockItemUseContext;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShape;

View file

@ -1,15 +1,13 @@
package com.simibubi.create.modules.contraptions.relays.gauge; package com.simibubi.create.modules.contraptions.relays.gauge;
import java.util.List;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.modules.contraptions.base.KineticTileEntity; import com.simibubi.create.modules.contraptions.base.KineticTileEntity;
import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation; import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation;
import net.minecraft.block.BlockState;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import java.util.List; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntityType;
public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInformation { public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInformation {

View file

@ -1,5 +1,7 @@
package com.simibubi.create.modules.contraptions.relays.gauge; package com.simibubi.create.modules.contraptions.relays.gauge;
import java.util.List;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
import com.simibubi.create.config.AllConfigs; import com.simibubi.create.config.AllConfigs;
import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.AllTriggers;
@ -11,8 +13,6 @@ import com.simibubi.create.modules.contraptions.base.IRotate.SpeedLevel;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import java.util.List;
public class SpeedGaugeTileEntity extends GaugeTileEntity{ public class SpeedGaugeTileEntity extends GaugeTileEntity{
public SpeedGaugeTileEntity() { public SpeedGaugeTileEntity() {

View file

@ -1,14 +1,15 @@
package com.simibubi.create.modules.contraptions.relays.gauge; package com.simibubi.create.modules.contraptions.relays.gauge;
import java.util.List;
import com.simibubi.create.AllTileEntities; import com.simibubi.create.AllTileEntities;
import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.item.ItemDescription;
import com.simibubi.create.foundation.utility.ColorHelper; import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.modules.contraptions.base.IRotate.StressImpact; import com.simibubi.create.modules.contraptions.base.IRotate.StressImpact;
import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation; import com.simibubi.create.modules.contraptions.goggle.IHaveGoggleInformation;
import net.minecraft.util.text.TextFormatting;
import java.util.List; import net.minecraft.util.text.TextFormatting;
public class StressGaugeTileEntity extends GaugeTileEntity { public class StressGaugeTileEntity extends GaugeTileEntity {

View file

@ -25,10 +25,14 @@ import net.minecraft.particles.ParticleTypes;
import net.minecraft.tileentity.BeaconTileEntity; import net.minecraft.tileentity.BeaconTileEntity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.*; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockPos.MutableBlockPos; import net.minecraft.util.math.BlockPos.MutableBlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.RayTraceContext.BlockMode; import net.minecraft.util.math.RayTraceContext.BlockMode;
import net.minecraft.util.math.RayTraceContext.FluidMode; import net.minecraft.util.math.RayTraceContext.FluidMode;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;

View file

@ -9,8 +9,8 @@ import static com.simibubi.create.modules.curiosities.zapper.blockzapper.Blockza
import com.mojang.blaze3d.platform.GLX; import com.mojang.blaze3d.platform.GLX;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.modules.curiosities.zapper.ZapperRenderHandler;
import com.simibubi.create.modules.curiosities.zapper.ZapperItemRenderer; import com.simibubi.create.modules.curiosities.zapper.ZapperItemRenderer;
import com.simibubi.create.modules.curiosities.zapper.ZapperRenderHandler;
import com.simibubi.create.modules.curiosities.zapper.blockzapper.BlockzapperItem.ComponentTier; import com.simibubi.create.modules.curiosities.zapper.blockzapper.BlockzapperItem.ComponentTier;
import com.simibubi.create.modules.curiosities.zapper.blockzapper.BlockzapperItem.Components; import com.simibubi.create.modules.curiosities.zapper.blockzapper.BlockzapperItem.Components;

View file

@ -3,8 +3,8 @@ package com.simibubi.create.modules.curiosities.zapper.terrainzapper;
import com.mojang.blaze3d.platform.GLX; import com.mojang.blaze3d.platform.GLX;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.modules.curiosities.zapper.ZapperRenderHandler;
import com.simibubi.create.modules.curiosities.zapper.ZapperItemRenderer; import com.simibubi.create.modules.curiosities.zapper.ZapperItemRenderer;
import com.simibubi.create.modules.curiosities.zapper.ZapperRenderHandler;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.entity.player.ClientPlayerEntity;

View file

@ -4,7 +4,7 @@ loaderVersion="[28,)"
[[mods]] [[mods]]
modId="create" modId="create"
version="mc1.14-0.2.1" version="mc1.14-0.2.2"
displayName="Create" displayName="Create"
#updateJSONURL="" #updateJSONURL=""
authors="simibubi" authors="simibubi"

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "create:block/brass_block" }
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "create:block/zinc_block" }
}
}

View file

@ -75,9 +75,11 @@
"item.create.rose_quartz_sword": "Gilded Quartz Blade", "item.create.rose_quartz_sword": "Gilded Quartz Blade",
"block.create.copper_ore": "Copper Ore", "block.create.copper_ore": "Copper Ore",
"block.create.copper_block": "Copper Block", "block.create.copper_block": "Block of Copper",
"block.create.copper_shingles": "Copper Shingles", "block.create.copper_shingles": "Copper Shingles",
"block.create.zinc_ore": "Zinc Ore", "block.create.zinc_ore": "Zinc Ore",
"block.create.zinc_block": "Block of Zinc",
"block.create.brass_block": "Block of Brass",
"block.create.andesite_casing": "Andesite Casing", "block.create.andesite_casing": "Andesite Casing",
"block.create.brass_casing": "Brass Casing", "block.create.brass_casing": "Brass Casing",

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "create:block/brass_block"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "create:block/zinc_block"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/brass_block"
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/zinc_block"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:brass_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:copper_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:copper_shingles"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:zinc_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:cherry_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_cherry_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:dead_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_dead_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:ethereal_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_ethereal_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:fir_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_fir_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:hellbark_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_hellbark_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:jacaranda_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_jacaranda_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:magic_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_magic_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:mahogany_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_mahogany_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:palm_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_palm_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:redwood_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_redwood_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_cherry_log"
}
],
"results": [
{
"item": "biomesoplenty:cherry_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_dead_log"
}
],
"results": [
{
"item": "biomesoplenty:dead_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_ethereal_log"
}
],
"results": [
{
"item": "biomesoplenty:ethereal_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_fir_log"
}
],
"results": [
{
"item": "biomesoplenty:fir_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_hellbark_log"
}
],
"results": [
{
"item": "biomesoplenty:hellbark_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_jacaranda_log"
}
],
"results": [
{
"item": "biomesoplenty:jacaranda_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_magic_log"
}
],
"results": [
{
"item": "biomesoplenty:magic_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_mahogany_log"
}
],
"results": [
{
"item": "biomesoplenty:mahogany_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_palm_log"
}
],
"results": [
{
"item": "biomesoplenty:palm_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_redwood_log"
}
],
"results": [
{
"item": "biomesoplenty:redwood_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_umbran_log"
}
],
"results": [
{
"item": "biomesoplenty:umbran_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:stripped_willow_log"
}
],
"results": [
{
"item": "biomesoplenty:willow_planks",
"count": 5
}
],
"processingTime": 100
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:umbran_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_umbran_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,21 @@
{
"conditions": [
{
"type": "forge:mod_loaded",
"modid": "biomesoplenty"
}
],
"type": "create:cutting",
"ingredients": [
{
"item": "biomesoplenty:willow_log"
}
],
"results": [
{
"item": "biomesoplenty:stripped_willow_log",
"count": 1
}
],
"processingTime": 50
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###",
"###"
],
"key": {
"#": {
"tag": "forge:ingots/brass"
}
},
"result": {
"item": "create:brass_block"
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###",
"###"
],
"key": {
"#": {
"tag": "forge:ingots/zinc"
}
},
"result": {
"item": "create:zinc_block"
}
}

View file

@ -0,0 +1,12 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "create:brass_block"
}
],
"result": {
"item": "create:brass_ingot",
"count": 9
}
}

View file

@ -0,0 +1,12 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "create:zinc_block"
}
],
"result": {
"item": "create:zinc_ingot",
"count": 9
}
}

View file

@ -1,6 +1,8 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"#forge:storage_blocks/copper" "#forge:storage_blocks/copper",
"#forge:storage_blocks/zinc",
"#forge:storage_blocks/brass"
] ]
} }

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"create:brass_block"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"create:zinc_block"
]
}

View file

@ -1,6 +1,8 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"#forge:storage_blocks/copper" "#forge:storage_blocks/copper",
"#forge:storage_blocks/zinc",
"#forge:storage_blocks/brass"
] ]
} }

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"create:brass_block"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"create:zinc_block"
]
}