mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
Merge remote-tracking branch 'concealed/mc1.21.1/dev' into mc1.21.1/dev
This commit is contained in:
commit
9f07ac4ca0
40 changed files with 188 additions and 103 deletions
|
@ -0,0 +1,50 @@
|
|||
package com.simibubi.create;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.simibubi.create.api.behaviour.spouting.BlockSpoutingBehaviour;
|
||||
import com.simibubi.create.api.behaviour.spouting.CauldronSpoutingBehavior;
|
||||
import com.simibubi.create.api.behaviour.spouting.StateChangingBehavior;
|
||||
import com.simibubi.create.compat.Mods;
|
||||
import com.simibubi.create.compat.tconstruct.SpoutCasting;
|
||||
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.FarmBlock;
|
||||
import net.minecraft.world.level.block.LayeredCauldronBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
|
||||
|
||||
public class AllBlockSpoutingBehaviours {
|
||||
|
||||
static void registerDefaults() {
|
||||
Predicate<Fluid> isWater = fluid -> fluid.isSame(Fluids.WATER);
|
||||
BlockSpoutingBehaviour toMud = StateChangingBehavior.setTo(250, isWater, Blocks.MUD);
|
||||
|
||||
for (Block dirt : List.of(Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.ROOTED_DIRT)) {
|
||||
BlockSpoutingBehaviour.BY_BLOCK.register(dirt, toMud);
|
||||
}
|
||||
|
||||
BlockSpoutingBehaviour.BY_BLOCK.register(Blocks.FARMLAND, StateChangingBehavior.incrementingState(100, isWater, FarmBlock.MOISTURE));
|
||||
BlockSpoutingBehaviour.BY_BLOCK.register(Blocks.WATER_CAULDRON, StateChangingBehavior.incrementingState(250, isWater, LayeredCauldronBlock.LEVEL));
|
||||
BlockSpoutingBehaviour.BY_BLOCK.register(Blocks.CAULDRON, CauldronSpoutingBehavior.INSTANCE);
|
||||
|
||||
if (!Mods.TCONSTRUCT.isLoaded())
|
||||
return;
|
||||
|
||||
for (String name : List.of("table", "basin")) {
|
||||
ResourceLocation id = Mods.TCONSTRUCT.rl(name);
|
||||
if (BuiltInRegistries.BLOCK_ENTITY_TYPE.containsKey(id)) {
|
||||
BlockEntityType<?> table = BuiltInRegistries.BLOCK_ENTITY_TYPE.get(id);
|
||||
BlockSpoutingBehaviour.BY_BLOCK_ENTITY.register(table, SpoutCasting.INSTANCE);
|
||||
} else {
|
||||
Create.LOGGER.warn("Block entity {} wasn't found. Outdated compat?", id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -881,7 +881,7 @@ public class AllBlocks {
|
|||
.properties(p -> p.forceSolidOff())
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withoutAO))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
@ -920,7 +920,7 @@ public class AllBlocks {
|
|||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withoutAO))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO))
|
||||
.loot((p, b) -> p.dropOther(b, FLUID_PIPE.get()))
|
||||
.register();
|
||||
|
||||
|
@ -929,7 +929,7 @@ public class AllBlocks {
|
|||
.properties(p -> p.mapColor(MapColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withoutAO))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO))
|
||||
.transform(CStress.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
|
@ -941,7 +941,7 @@ public class AllBlocks {
|
|||
.properties(p -> p.mapColor(MapColor.TERRACOTTA_YELLOW))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withoutAO))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
@ -953,7 +953,7 @@ public class AllBlocks {
|
|||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withoutAO))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
|
|
@ -9,7 +9,6 @@ import org.slf4j.Logger;
|
|||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.mojang.logging.LogUtils;
|
||||
import com.simibubi.create.api.behaviour.spouting.BlockSpoutingBehaviour;
|
||||
import com.simibubi.create.compat.Mods;
|
||||
import com.simibubi.create.compat.computercraft.ComputerCraftProxy;
|
||||
import com.simibubi.create.compat.curios.Curios;
|
||||
|
@ -169,7 +168,7 @@ public class Create {
|
|||
// These registrations use Create's registered objects directly so they must run after registration has finished.
|
||||
BoilerHeaters.registerDefaults();
|
||||
AllPortalTracks.registerDefaults();
|
||||
BlockSpoutingBehaviour.registerDefaults();
|
||||
AllBlockSpoutingBehaviours.registerDefaults();
|
||||
AllMovementBehaviours.registerDefaults();
|
||||
AllInteractionBehaviours.registerDefaults();
|
||||
AllContraptionMovementSettings.registerDefaults();
|
||||
|
|
|
@ -1,32 +1,19 @@
|
|||
package com.simibubi.create.api.behaviour.spouting;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.api.registry.SimpleRegistry;
|
||||
import com.simibubi.create.compat.Mods;
|
||||
import com.simibubi.create.compat.tconstruct.SpoutCasting;
|
||||
import com.simibubi.create.content.fluids.spout.SpoutBlockEntity;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.FarmBlock;
|
||||
import net.minecraft.world.level.block.LayeredCauldronBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
|
||||
import net.neoforged.neoforge.fluids.FluidStack;
|
||||
|
||||
|
||||
/**
|
||||
* Interface for custom block-filling behavior for spouts.
|
||||
* <p>
|
||||
|
@ -58,32 +45,6 @@ public interface BlockSpoutingBehaviour {
|
|||
return BY_BLOCK_ENTITY.get(be.getType());
|
||||
}
|
||||
|
||||
static void registerDefaults() {
|
||||
Predicate<Fluid> isWater = fluid -> fluid.isSame(Fluids.WATER);
|
||||
BlockSpoutingBehaviour toMud = StateChangingBehavior.setTo(250, isWater, Blocks.MUD);
|
||||
|
||||
for (Block dirt : List.of(Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.ROOTED_DIRT)) {
|
||||
BY_BLOCK.register(dirt, toMud);
|
||||
}
|
||||
|
||||
BY_BLOCK.register(Blocks.FARMLAND, StateChangingBehavior.incrementingState(100, isWater, FarmBlock.MOISTURE));
|
||||
BY_BLOCK.register(Blocks.WATER_CAULDRON, StateChangingBehavior.incrementingState(250, isWater, LayeredCauldronBlock.LEVEL));
|
||||
BY_BLOCK.register(Blocks.CAULDRON, CauldronSpoutingBehavior.INSTANCE);
|
||||
|
||||
if (!Mods.TCONSTRUCT.isLoaded())
|
||||
return;
|
||||
|
||||
for (String name : List.of("table", "basin")) {
|
||||
ResourceLocation id = Mods.TCONSTRUCT.rl(name);
|
||||
if (BuiltInRegistries.BLOCK_ENTITY_TYPE.containsKey(id)) {
|
||||
BlockEntityType<?> table = BuiltInRegistries.BLOCK_ENTITY_TYPE.get(id);
|
||||
BY_BLOCK_ENTITY.register(table, SpoutCasting.INSTANCE);
|
||||
} else {
|
||||
Create.LOGGER.warn("Block entity {} wasn't found. Outdated compat?", id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* While idle, spouts will query the behavior provided by the block below it.
|
||||
* If one is present, this method will be called every tick with simulate == true.
|
||||
|
|
|
@ -1008,7 +1008,7 @@ public abstract class Contraption {
|
|||
}
|
||||
|
||||
@Nullable
|
||||
private static BlockEntity readBlockEntity(Level level, StructureBlockInfo info, CompoundTag tag) {
|
||||
protected BlockEntity readBlockEntity(Level level, StructureBlockInfo info, CompoundTag tag) {
|
||||
BlockState state = info.state();
|
||||
BlockPos pos = info.pos();
|
||||
CompoundTag nbt = info.nbt();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package com.simibubi.create.content.contraptions.render;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.simibubi.create.content.contraptions.Contraption;
|
||||
|
@ -23,11 +22,10 @@ import net.minecraft.core.BlockPos;
|
|||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.RenderShape;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
||||
|
||||
import net.neoforged.neoforge.client.model.data.ModelData;
|
||||
import net.neoforged.neoforge.client.model.data.ModelDataManager;
|
||||
|
||||
public class ContraptionRenderInfo {
|
||||
public static final SuperByteBufferCache.Compartment<Pair<Contraption, RenderType>> CONTRAPTION = new SuperByteBufferCache.Compartment<>();
|
||||
|
@ -89,25 +87,15 @@ public class ContraptionRenderInfo {
|
|||
int minBuildHeight = contraptionWorld.getMinBuildHeight();
|
||||
int height = contraptionWorld.getHeight();
|
||||
VirtualRenderWorld renderWorld = new VirtualRenderWorld(level, minBuildHeight, height, origin) {
|
||||
|
||||
@Override
|
||||
public boolean supportsVisualization() {
|
||||
return VisualizationManager.supportsVisualization(level);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ModelData getModelData(BlockPos pos) {
|
||||
BlockEntity blockEntity = getBlockEntity(pos);
|
||||
if (blockEntity == null)
|
||||
return super.getModelData(pos);
|
||||
return blockEntity.getModelData();
|
||||
return c.modelData.getOrDefault(pos, ModelData.EMPTY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable ModelDataManager getModelDataManager() {
|
||||
return null;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
renderWorld.setBlockEntities(c.presentBlockEntities.values());
|
||||
|
@ -136,8 +124,7 @@ public class ContraptionRenderInfo {
|
|||
BlockState state = blocks.lookup().apply(pos);
|
||||
if (state.getRenderShape() == RenderShape.MODEL) {
|
||||
BakedModel model = dispatcher.getBlockModel(state);
|
||||
ModelData modelData = contraption.modelData.getOrDefault(pos, ModelData.EMPTY);
|
||||
modelData = model.getModelData(renderWorld, pos, state, modelData);
|
||||
ModelData modelData = model.getModelData(renderWorld, pos, state, renderWorld.getModelData(pos));
|
||||
long randomSeed = state.getSeed(pos);
|
||||
random.setSeed(randomSeed);
|
||||
if (model.getRenderTypes(state, random, modelData).contains(layer)) {
|
||||
|
|
|
@ -19,7 +19,7 @@ public class PotatoCannonPacket extends ShootGadgetPacket {
|
|||
public static final StreamCodec<RegistryFriendlyByteBuf, PotatoCannonPacket> STREAM_CODEC = StreamCodec.composite(
|
||||
CatnipStreamCodecs.VEC3, packet -> packet.location,
|
||||
CatnipStreamCodecs.VEC3, packet -> packet.motion,
|
||||
ItemStack.STREAM_CODEC, packet -> packet.item,
|
||||
ItemStack.OPTIONAL_STREAM_CODEC, packet -> packet.item,
|
||||
CatnipStreamCodecs.HAND, packet -> packet.hand,
|
||||
ByteBufCodecs.FLOAT, packet -> packet.pitch,
|
||||
ByteBufCodecs.BOOL, packet -> packet.self,
|
||||
|
|
|
@ -1080,12 +1080,12 @@ public class StockKeeperRequestScreen extends AbstractSimiContainerScreen<StockK
|
|||
|
||||
if (!entry.hidden) {
|
||||
hiddenCategories.add(indexOf);
|
||||
playUiSound(SoundEvents.ITEM_FRAME_ROTATE_ITEM, 0.75f, 1.5f);
|
||||
playUiSound(SoundEvents.ITEM_FRAME_ROTATE_ITEM, 1f, 1.5f);
|
||||
}
|
||||
|
||||
else {
|
||||
hiddenCategories.remove(indexOf);
|
||||
playUiSound(SoundEvents.ITEM_FRAME_ROTATE_ITEM, 0.75f, 0.675f);
|
||||
playUiSound(SoundEvents.ITEM_FRAME_ROTATE_ITEM, 1f, 0.675f);
|
||||
}
|
||||
|
||||
refreshSearchNextTick = true;
|
||||
|
@ -1122,8 +1122,8 @@ public class StockKeeperRequestScreen extends AbstractSimiContainerScreen<StockK
|
|||
if (itemsToOrder.size() >= cols || rmb)
|
||||
return true;
|
||||
itemsToOrder.add(existingOrder = new BigItemStack(itemStack.copyWithCount(1), 0));
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.5f, 1.2f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.5f, 0.8f);
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.75f, 1.2f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.75f, 0.8f);
|
||||
}
|
||||
|
||||
int current = existingOrder.count;
|
||||
|
@ -1132,8 +1132,8 @@ public class StockKeeperRequestScreen extends AbstractSimiContainerScreen<StockK
|
|||
existingOrder.count = current - transfer;
|
||||
if (existingOrder.count <= 0) {
|
||||
itemsToOrder.remove(existingOrder);
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.5f, 1.8f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.5f, 1.8f);
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.75f, 1.8f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.75f, 1.8f);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -1188,8 +1188,8 @@ public class StockKeeperRequestScreen extends AbstractSimiContainerScreen<StockK
|
|||
if (itemsToOrder.size() >= cols || remove)
|
||||
return true;
|
||||
itemsToOrder.add(existingOrder = new BigItemStack(entry.stack.copyWithCount(1), 0));
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.5f, 1.2f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.5f, 0.8f);
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.75f, 1.2f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.75f, 0.8f);
|
||||
}
|
||||
|
||||
int current = existingOrder.count;
|
||||
|
@ -1198,8 +1198,8 @@ public class StockKeeperRequestScreen extends AbstractSimiContainerScreen<StockK
|
|||
existingOrder.count = current - transfer;
|
||||
if (existingOrder.count <= 0) {
|
||||
itemsToOrder.remove(existingOrder);
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.5f, 1.8f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.5f, 1.8f);
|
||||
playUiSound(SoundEvents.WOOL_STEP, 0.75f, 1.8f);
|
||||
playUiSound(SoundEvents.BAMBOO_WOOD_STEP, 0.75f, 1.8f);
|
||||
} else if (existingOrder.count != current)
|
||||
playUiSound(AllSoundEvents.SCROLL_VALUE.getMainEvent(), 0.25f, 1.2f);
|
||||
return true;
|
||||
|
|
|
@ -158,13 +158,10 @@ public class CarriageContraption extends Contraption {
|
|||
.getStep(), toLocalPos(pos));
|
||||
}
|
||||
|
||||
if (blockState.getBlock() instanceof AbstractBogeyBlock<?> bogey) {
|
||||
boolean captureBE = bogey.captureBlockEntityForTrain();
|
||||
if (blockState.getBlock() instanceof AbstractBogeyBlock<?>) {
|
||||
bogeys++;
|
||||
if (bogeys == 2)
|
||||
secondBogeyPos = pos;
|
||||
return Pair.of(new StructureBlockInfo(pos, blockState, captureBE ? getBlockEntityNBT(world, pos) : null),
|
||||
captureBE ? world.getBlockEntity(pos) : null);
|
||||
}
|
||||
|
||||
MovingInteractionBehaviour behaviour = MovingInteractionBehaviour.REGISTRY.get(blockState);
|
||||
|
@ -187,6 +184,14 @@ public class CarriageContraption extends Contraption {
|
|||
|
||||
return super.capture(world, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockEntity readBlockEntity(Level level, StructureBlockInfo info, CompoundTag tag) {
|
||||
if (info.state().getBlock() instanceof AbstractBogeyBlock<?> bogey && !bogey.captureBlockEntityForTrain())
|
||||
return null; // Bogeys are typically rendered by the carriage contraption, not the BE
|
||||
|
||||
return super.readBlockEntity(level, info, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacket) {
|
||||
|
|
|
@ -147,8 +147,7 @@ public class ValueBox extends ChasingAABBOutline {
|
|||
ItemRenderer itemRenderer = Minecraft.getInstance()
|
||||
.getItemRenderer();
|
||||
BakedModel modelWithOverrides = itemRenderer.getModel(stack, null, null, 0);
|
||||
boolean blockItem = modelWithOverrides.isGui3d() && modelWithOverrides.getRenderPasses(stack, false)
|
||||
.size() <= 1;
|
||||
boolean blockItem = modelWithOverrides.isGui3d();
|
||||
|
||||
float scale = 1.5f;
|
||||
ms.translate(-font.width(count), 0, 0);
|
||||
|
|
|
@ -28,8 +28,7 @@ public class ValueBoxRenderer {
|
|||
Minecraft mc = Minecraft.getInstance();
|
||||
ItemRenderer itemRenderer = mc.getItemRenderer();
|
||||
BakedModel modelWithOverrides = itemRenderer.getModel(filter, null, null, 0);
|
||||
boolean blockItem =
|
||||
modelWithOverrides.isGui3d() && modelWithOverrides.getRenderPasses(filter, false).size() <= 1;
|
||||
boolean blockItem = modelWithOverrides.isGui3d();
|
||||
float scale = (!blockItem ? .5f : 1f) + 1 / 64f;
|
||||
float zOffset = (!blockItem ? -.15f : 0) + customZOffset(filter.getItem());
|
||||
ms.scale(scale, scale, scale);
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
"scale":[ 0.4, 0.4, 0.4 ]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [ 90, 0, 0 ],
|
||||
"rotation": [ 270, 180, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.5, 0.5, 0.5 ]
|
||||
"scale":[ 0.375, 0.375, 0.375 ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,6 +61,12 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
0,
|
||||
1,
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [ 270, 0, 0 ],
|
||||
"translation": [ 0, 0, -3],
|
||||
"translation": [ 0, 0, -5],
|
||||
"scale":[ 0.5, 0.5, 0.5 ]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [ 270, 0, 0 ],
|
||||
"translation": [ 0, 0, -3],
|
||||
"translation": [ 0, 0, -5],
|
||||
"scale":[ 0.5, 0.5, 0.5 ]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [270, 0, 0],
|
||||
"translation": [0, 0, -3],
|
||||
"translation": [0, 0, -5],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [270, 0, 0],
|
||||
"translation": [0, 0, -3],
|
||||
"translation": [0, 0, -5],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [270, 0, 0],
|
||||
"translation": [0, 0, -3],
|
||||
"translation": [0, 0, -5],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -136,6 +136,8 @@
|
|||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [270, 0, 0],
|
||||
"translation": [0, 0, -4],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -214,6 +214,12 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Frame",
|
||||
|
|
|
@ -80,6 +80,12 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
0,
|
||||
1,
|
||||
|
|
|
@ -112,7 +112,9 @@
|
|||
"translation": [0, 14.25, 0]
|
||||
},
|
||||
"fixed": {
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
"rotation": [-90, 0, 0],
|
||||
"translation": [0, 0, -6.5],
|
||||
"scale": [0.75, 0.75, 0.75]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
|
|
|
@ -128,6 +128,7 @@
|
|||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [90, 0, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [ 90, 0, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.4, 0.4, 0.4 ]
|
||||
"translation": [ 0, 0, -1],
|
||||
"scale":[ 0.375, 0.375, 0.375 ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,6 +80,12 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
0,
|
||||
1,
|
||||
|
|
|
@ -92,5 +92,12 @@
|
|||
"color": 0,
|
||||
"children": [0, 1, 2, 3, 4, 5, 6]
|
||||
}
|
||||
]
|
||||
],
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 0, 0],
|
||||
"translation": [0, 0, -1],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -264,7 +264,7 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"translation": [0, 2.25, -0.75],
|
||||
"translation": [0, 4.25, -0.75],
|
||||
"scale": [0.45, 0.45, 0.45]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -77,5 +77,11 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,5 +90,12 @@
|
|||
"color": 0,
|
||||
"children": [0, 1, 2, 3, 4, 5, 6]
|
||||
}
|
||||
]
|
||||
],
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 0, 0],
|
||||
"translation": [0, 0, -1],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -102,7 +102,7 @@
|
|||
"translation": [0, 22.25, 0]
|
||||
},
|
||||
"fixed": {
|
||||
"translation": [0, -1.25, 0],
|
||||
"translation": [0, 0, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -210,7 +210,7 @@
|
|||
"translation": [0, 22.25, 0]
|
||||
},
|
||||
"fixed": {
|
||||
"translation": [0, -1.25, 0],
|
||||
"translation": [0, 0, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -99,6 +99,8 @@
|
|||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [270, 90, 0],
|
||||
"translation": [0, 0, -4],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,6 +80,12 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"name": "encased_shaft",
|
||||
|
|
|
@ -112,6 +112,7 @@
|
|||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -148,6 +148,8 @@
|
|||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [270, 0, 0],
|
||||
"translation": [0, 0, -4],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -202,7 +202,8 @@
|
|||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"translation": [0, 5.75, 0],
|
||||
"rotation": [270, 0, 0],
|
||||
"translation": [0, 0, -6],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -37,6 +37,10 @@
|
|||
"gui": {
|
||||
"rotation": [30, -135, 0],
|
||||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,5 +6,24 @@
|
|||
"textures": {
|
||||
"3": "create:block/valve_handle/valve_handle_copper",
|
||||
"particle": "#3"
|
||||
},
|
||||
"display": {
|
||||
"fixed": {
|
||||
"rotation": [
|
||||
270,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
-2
|
||||
],
|
||||
"scale": [
|
||||
0.5,
|
||||
0.5,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,7 +122,8 @@
|
|||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"translation": [0, -5, 0]
|
||||
"translation": [0, -2.5, -0.75],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -134,8 +134,8 @@
|
|||
"scale": [1.09453, 1.09453, 1.09453]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 160.5, 0],
|
||||
"translation": [0.5, 0.5, 0]
|
||||
"rotation": [0, 180, 0],
|
||||
"translation": [0.5, 0.5, -0.75]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
|
|
Loading…
Add table
Reference in a new issue