- You can now insert/extract fluid from fluid port with items in hand (such as a bucket)

- Fixed some rendering issues where certain blocks would not render correctly (such as mana spreader from botania or assembly controller from PNCR)
- Updated some lang translations

- Added test project to the dev space
This commit is contained in:
Quarris
2021-09-03 01:47:09 +01:00
parent 2662546744
commit 07e4fdba71
42 changed files with 748 additions and 129 deletions

View File

@@ -73,6 +73,9 @@ minecraft {
masterfulmachinery {
source sourceSets.main
}
mmtest {
source sourceSets.test
}
}
}
@@ -96,6 +99,9 @@ minecraft {
masterfulmachinery {
source sourceSets.main
}
mmtest {
source sourceSets.test
}
}
}
@@ -119,7 +125,7 @@ minecraft {
args '--mod', 'masterfulmachinery', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
mods {
examplemod {
masterfulmachinery {
source sourceSets.main
}
}

View File

@@ -1,90 +1,96 @@
{
"controllerId": "basic",
"name": "Basic",
"ports": [
{
"type": "masterfulmachinery:items",
"textureOverride": "minecraft:textures/block/white_terracotta",
"name": "Simple",
"id": "simple",
"data": {
"rows": 3,
"columns": 3
}
},
{
"type": "masterfulmachinery:energy",
"name": "Simple",
"id": "simple",
"data": {
"capacity": 1000000000
}
},
{
"type": "masterfulmachinery:fluids",
"name": "Simple",
"id": "simple",
"data": {
"capacity": 10000
}
},
{
"type": "masterfulmachinery:pncr_pressure",
"name": "Simple",
"id": "simple",
"data": {
"criticalPressure": 7,
"dangerPressure": 5,
"volume": 10000
}
},
{
"type": "masterfulmachinery:botania_mana",
"name": "Simple",
"id": "simple",
"data": {
"capacity": 100000
}
},
{
"type": "masterfulmachinery:astral_starlight",
"name": "Simple",
"id": "simple",
"data": {
"capacity": 1000
}
},
{
"type": "masterfulmachinery:create_rotation",
"name": "Simple",
"id": "simple",
"data": {
"stress": 1
}
},
{
"type": "masterfulmachinery:mekanism_gas",
"name": "Simple",
"id": "simple",
"data": {
"capacity": 100000000
}
},
{
"type": "masterfulmachinery:mekanism_slurry",
"name": "Simple",
"id": "simple",
"data": {
"capacity": 100000000
}
},
{
"type": "masterfulmachinery:mekanism_infuse",
"name": "Simple",
"id": "simple",
"data": {
"capacity": 100000000
}
}
]
"controllerId": "basic",
"name": "Basic",
"ports": [
{
"type": "masterfulmachinery:items",
"textureOverride": "minecraft:block/white_terracotta",
"name": "Item",
"id": "simple",
"data": {
"rows": 3,
"columns": 3
}
},
{
"type": "masterfulmachinery:energy",
"name": "Energy",
"id": "simple",
"data": {
"capacity": 1000000000
}
},
{
"type": "masterfulmachinery:fluids",
"name": "Fluid",
"id": "simple",
"data": {
"capacity": 10000
}
},
{
"type": "masterfulmachinery:pncr_pressure",
"name": "Pressure",
"id": "simple",
"data": {
"criticalPressure": 7,
"dangerPressure": 5,
"volume": 10000
}
},
{
"type": "masterfulmachinery:botania_mana",
"name": "Mana",
"id": "simple",
"data": {
"capacity": 100000
}
},
{
"type": "masterfulmachinery:astral_starlight",
"name": "Starlight",
"id": "simple",
"data": {
"capacity": 1000
}
},
{
"type": "masterfulmachinery:create_rotation",
"name": "Rotation",
"id": "simple",
"data": {
"stress": 1
}
},
{
"type": "masterfulmachinery:mekanism_gas",
"name": "Gas",
"id": "simple",
"data": {
"capacity": 100000000
}
},
{
"type": "masterfulmachinery:mekanism_slurry",
"name": "Slurry",
"id": "simple",
"data": {
"capacity": 100000000
}
},
{
"type": "masterfulmachinery:mekanism_infuse",
"name": "Infuse",
"id": "simple",
"data": {
"capacity": 100000000
}
},
{
"type": "masterfulmachinery:weather",
"name": "Weather",
"id": "simple",
"data": {}
}
]
}

View File

@@ -70,7 +70,10 @@ public class MachinePortBlock extends Block {
if (!level.isRemote()) {
TileEntity blockEntity = level.getTileEntity(pos);
if (blockEntity instanceof IMachinePortTile) {
NetworkHooks.openGui(((ServerPlayerEntity) player), (IMachinePortTile)blockEntity, pos);
IMachinePortTile port = (IMachinePortTile) blockEntity;
if (!port.getStorage().onPortActivated(state, level, pos, player, hand ,traceResult)) {
NetworkHooks.openGui(((ServerPlayerEntity) player), port, pos);
}
}
}

View File

@@ -13,14 +13,11 @@ import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.helpers.IJeiHelpers;
import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.category.IRecipeCategory;
import net.java.games.input.Mouse;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.DirectionalBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.client.MouseHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.state.Property;
import net.minecraft.tags.BlockTags;
@@ -33,7 +30,6 @@ import net.minecraft.util.math.vector.Vector3f;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.ForgeRegistries;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.opengl.GL11;
import java.util.*;
import java.util.stream.Collectors;
@@ -168,6 +164,10 @@ public class MachineStructureRecipeCategory implements IRecipeCategory<MachineSt
parts = parts.stream().filter(x -> x.getPos().getY() == sliceY).collect(Collectors.toList());
}
//float sizeX = 162, sizeY = 121;
//float scaledSizeX = sizeX / scaleFactor, scaledSizeY = sizeY / scaleFactor;
float tx = 6.5f, ty = -5, tz = 10;
int i = 0;
for (MachineStructureRecipeKeyModel part : parts) {
tagIndexes.putIfAbsent(i, 0);
@@ -185,11 +185,12 @@ public class MachineStructureRecipeCategory implements IRecipeCategory<MachineSt
BlockState defaultState = block.getDefaultState();
defaultState = with(defaultState, part.getProperties());
new GuiBlockRenderBuilder(defaultState).at(bp)
.withPrePosition(new Vector3f(6.5f, -5, 10))
.withRotation(new Quaternion(new Vector3f(1, 0, 0), 15 + yRotation, true))
.withRotation(new Quaternion(new Vector3f(0, -1, 0), 225 - xRotation, true))
.withScale(new Vector3f(scaleFactor, -scaleFactor, scaleFactor))
.finalize(matrixStack);
.withPrePosition(new Vector3f(tx, ty, tz))
.withRotation(new Quaternion(new Vector3f(1, 0, 0), 15 + yRotation, true))
.withRotation(new Quaternion(new Vector3f(0, -1, 0), 225 - xRotation, true))
.withScale(new Vector3f(scaleFactor, -scaleFactor, scaleFactor))
.withOffset(new Vector3f(-0.5f, -0.5f, -0.5f))
.finalize(matrixStack);
}
} else if (!part.getTag().equals("")) {
ResourceLocation resourceLocation = new ResourceLocation(part.getTag());
@@ -208,11 +209,12 @@ public class MachineStructureRecipeCategory implements IRecipeCategory<MachineSt
BlockState defaultState = block.getDefaultState();
defaultState = with(defaultState, part.getProperties());
new GuiBlockRenderBuilder(defaultState).at(bp)
.withPrePosition(new Vector3f(6.5f, -5, 10))
.withRotation(new Quaternion(new Vector3f(1, 0, 0), 15 + yRotation, true))
.withRotation(new Quaternion(new Vector3f(0, -1, 0), 225 - xRotation, true))
.withScale(new Vector3f(scaleFactor, -scaleFactor, scaleFactor))
.finalize(matrixStack);
.withPrePosition(new Vector3f(tx, ty, tz))
.withRotation(new Quaternion(new Vector3f(1, 0, 0), 15 + yRotation, true))
.withRotation(new Quaternion(new Vector3f(0, -1, 0), 225 - xRotation, true))
.withScale(new Vector3f(scaleFactor, -scaleFactor, scaleFactor))
.withOffset(new Vector3f(-0.5f, -0.5f, -0.5f))
.finalize(matrixStack);
}
}
}
@@ -227,11 +229,12 @@ public class MachineStructureRecipeCategory implements IRecipeCategory<MachineSt
if (block != null) {
BlockState defaultState = block.getDefaultState().with(DirectionalBlock.FACING, Direction.NORTH);
new GuiBlockRenderBuilder(defaultState).at(new BlockPos(0, 0, 0))
.withPrePosition(new Vector3f(6.5f, -5, 10))
.withRotation(new Quaternion(new Vector3f(1, 0, 0), 15 + yRotation, true))
.withRotation(new Quaternion(new Vector3f(0, -1, 0), 225 - xRotation, true))
.withScale(new Vector3f(scaleFactor, -scaleFactor, scaleFactor))
.finalize(matrixStack);
.withPrePosition(new Vector3f(tx, ty, tz))
.withRotation(new Quaternion(new Vector3f(1, 0, 0), 15 + yRotation, true))
.withRotation(new Quaternion(new Vector3f(0, -1, 0), 225 - xRotation, true))
.withScale(new Vector3f(scaleFactor, -scaleFactor, scaleFactor))
.withOffset(new Vector3f(-0.5f, -0.5f, -0.5f))
.finalize(matrixStack);
}
}
@@ -270,7 +273,6 @@ public class MachineStructureRecipeCategory implements IRecipeCategory<MachineSt
sliceY++;
}
}
private BlockState with(BlockState defaultState, Map<String, String> props) {

View File

@@ -4,21 +4,20 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.ticticboooom.mods.mm.client.jei.category.render.AirBlockReader;
import mekanism.client.model.BaseModelCache;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BlockRendererDispatcher;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.RenderTypeLookup;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.math.vector.Quaternion;
import net.minecraft.util.math.vector.Vector3f;
import net.minecraft.world.IBlockReader;
import net.minecraftforge.client.model.data.EmptyModelData;
import java.util.ArrayList;
@@ -31,6 +30,7 @@ public class GuiBlockRenderBuilder {
private Minecraft mc = Minecraft.getInstance();
private Vector3f scale;
private Vector3f prePosition = new Vector3f();
private Vector3f positionOffset = new Vector3f();
private TileEntityRenderer<TileEntity> ter = null;
private TileEntity tile;
@@ -51,7 +51,7 @@ public class GuiBlockRenderBuilder {
public GuiBlockRenderBuilder at(BlockPos position) {
if (tile != null) {
tile.setWorldAndPos(Minecraft.getInstance().world, BlockPos.ZERO);
tile.setWorldAndPos(Minecraft.getInstance().world, Minecraft.getInstance().player.getPosition());
}
this.position = position;
return this;
@@ -72,6 +72,11 @@ public class GuiBlockRenderBuilder {
return this;
}
public GuiBlockRenderBuilder withOffset(Vector3f offset) {
this.positionOffset = offset;
return this;
}
private void prepareRender() {
RenderSystem.enableBlend();
RenderSystem.enableRescaleNormal();
@@ -94,7 +99,20 @@ public class GuiBlockRenderBuilder {
ms.push();
transformMatrix(ms);
brd.renderBlock(blockState, ms, buf, 0xF000F0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
//brd.renderBlock(blockState, ms, buf, 0xF000F0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
// Copied the code to render block using a model from BlockRenderDispatcher#renderBlock for the case of model.
// Some blocks use ENTITYBLOCK_ANIMATED which is weird and I dont know how it works coz it only ever works on vanilla items,
// and I just dont know what to think about this honestly but this seems to work so I'm not touching it anymore unless something
// else decides to break in which case I will indeed come back to this and figure out a work around then.
IBakedModel model = brd.getModelForState(blockState);
int color = Minecraft.getInstance().getBlockColors().getColor(blockState, null, null, 0);
float r = (float) (color >> 16 & 255) / 255.0F;
float g = (float) (color >> 8 & 255) / 255.0F;
float b = (float) (color & 255) / 255.0F;
brd.getBlockModelRenderer().renderModel(ms.getLast(), buf.getBuffer(RenderTypeLookup.func_239220_a_(blockState, false)), blockState, model, r, g, b, 0xF000F0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
ms.push();
try {
if (ter != null) {
@@ -115,9 +133,9 @@ public class GuiBlockRenderBuilder {
ms.rotate(quaternion);
}
ms.scale(scale.getX(), -scale.getY(), scale.getZ());
ms.translate(position.getX(), position.getY(), position.getZ());
ms.translate(position.getX() + positionOffset.getX(), position.getY() + positionOffset.getY(), position.getZ() + positionOffset.getZ());
if (tile != null) {
tile.setPos(new BlockPos(0, 0, 0));
//tile.setPos(new BlockPos(0, 0, 0));
}
}
}

View File

@@ -244,6 +244,7 @@ public class MachineProcessRecipe implements IRecipe<IInventory> {
List<PortState> inputStates = getStates(inputs);
List<PortState> outputStates = getStates(outputs);
validateProcess(inputStates, outputStates, ticks, structureId, rl);
MM.LOG.debug("Added process '{}' for structure '{}'", rl, structureId);
return new MachineProcessRecipe(inputStates, outputStates, ticks, structureId, rl);
} catch (InvalidProcessDefinitionException e) {
MM.LOG.error("InvalidProcessDefinition: " + e.getMessage());

View File

@@ -207,7 +207,6 @@ public class MachineStructureRecipe implements IRecipe<IInventory> {
@Override
public MachineStructureRecipe read(ResourceLocation rl, JsonObject obj) {
try {
JsonElement controllerIdJson = obj.get("controllerId");
List<String> ids = new ArrayList<>();
if (controllerIdJson.isJsonPrimitive()) {
@@ -231,6 +230,7 @@ public class MachineStructureRecipe implements IRecipe<IInventory> {
validateStructure(result, ids, id, rl);
MM.LOG.debug("Added structure '{}' with id '{}'", rl, id);
return new MachineStructureRecipe(result, ids, id, rl, name);
} catch (InvalidStructureDefinitionException e) {
MM.LOG.error("InvalidStructureDefinition: " + e.getMessage());

View File

@@ -39,9 +39,10 @@ public class MMLangProvider extends LanguageProvider {
return;
}
this.add(MMSetup.BLUEPRINT.get(), "Blueprint");
this.add(MMSetup.STRUCTURE_DEVICE.get(), "Structure Scanner");
this.add(MMSetup.STRUCTURE_DEVICE.get(), "Structure Selector");
this.add(MMSetup.PROJECTOR_BLOCK.get(), "Structure Projector");
this.add(MMSetup.STRUCTURE_BLOCK.get(), "Structure Scanner");
this.add(MMSetup.STRUCTURE_BLOCK.get(), "Structure Generator");
this.add("container.masterfulmachinery.create_rotation", "Rotation Port");
this.add("itemGroup.masterfulmachinery", "Masterful Machinery");
}
}

View File

@@ -106,8 +106,8 @@ public class StructureHelper {
private static JsonObject toJson(Map<Character, ResourceLocation> legend, List<List<String>> layout) {
JsonObject result = new JsonObject();
result.addProperty("type", "masterfulmachinery:machine_structure");
result.addProperty("id", "chance_this");
result.addProperty("controllerId", "chance_this");
result.addProperty("id", "change_this");
result.addProperty("controllerId", "change_this");
result.addProperty("name", "Change This");
DataResult<JsonElement> apply = JsonOps.INSTANCE.withEncoder(Codec.list(Codec.list(Codec.STRING))).apply(layout);

View File

@@ -82,14 +82,14 @@ public class PortFluidInventory implements IFluidHandler {
private FluidStack innerDrain(int amount, boolean simulate) {
if (simulate) {
if (stack.getAmount() - amount < 0) {
if (stack.getAmount() - amount <= 0) {
return stack.copy();
} else {
return new FluidStack(stack.getFluid(), amount);
}
}
if (stack.getAmount() - amount < 0) {
if (stack.getAmount() - amount <= 0) {
FluidStack preStack = stack.copy();
stack.setAmount(0);
return preStack;

View File

@@ -9,16 +9,23 @@ import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
import com.ticticboooom.mods.mm.client.util.FluidRenderer;
import com.ticticboooom.mods.mm.inventory.PortFluidInventory;
import lombok.Getter;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Slot;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Hand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidUtil;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
public class FluidPortStorage extends PortStorage {
@@ -64,8 +71,16 @@ public class FluidPortStorage extends PortStorage {
int x = 78;
int y = 40;
screen.blit(stack, left + x, top + y, 175, 0, 18, 18);
FluidRenderer.INSTANCE.render(stack, left + x + 1, top + y + 1, inv.getFluidInTank(0), 16);
FluidStack fluid = inv.getFluidInTank(0);
if (!fluid.isEmpty()){
FluidRenderer.INSTANCE.render(stack, left + x + 1, top + y + 1, inv.getFluidInTank(0), 16);
AbstractGui.drawCenteredString(stack, Minecraft.getInstance().fontRenderer, inv.getFluidInTank(0).getAmount() + " " + inv.getFluidInTank(0).getDisplayName().getString(), left + x + 9 + 1, top + y + 30, 0xfefefe);
AbstractGui.drawCenteredString(stack, Minecraft.getInstance().fontRenderer, inv.getFluidInTank(0).getAmount() + " " + inv.getFluidInTank(0).getDisplayName().getString(), left + x + 9 + 1, top + y + 30, 0xfefefe);
}
}
@Override
public boolean onPortActivated(BlockState state, World level, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult traceResult) {
return FluidUtil.interactWithFluidHandler(player, hand, level, pos, traceResult.getFace());
}
}

View File

@@ -4,12 +4,18 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import com.ticticboooom.mods.mm.block.container.PortBlockContainer;
import com.ticticboooom.mods.mm.block.tile.IMachinePortTile;
import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
import net.minecraft.block.BlockState;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
@@ -19,7 +25,7 @@ public abstract class PortStorage {
public abstract CompoundNBT save(CompoundNBT nbt);
public abstract void load(CompoundNBT nbt);
public abstract void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen);
public void setupContainer(PortBlockContainer container, PlayerInventory inv, IMachinePortTile tile){
public void setupContainer(PortBlockContainer container, PlayerInventory inv, IMachinePortTile tile) {
int playerOffsetX = 8;
int playerOffsetY = 141;
for (int j = 0; j < 3; j++) {
@@ -40,4 +46,8 @@ public abstract class PortStorage {
public void neighborChanged() {
}
public boolean onPortActivated(BlockState state, World level, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult traceResult) {
return false;
}
}

View File

@@ -123,6 +123,8 @@ public class MMLoader {
}
}
MM.LOG.debug("Registered controller with id '{}'", controllerId);
}
}

View File

@@ -0,0 +1,11 @@
package com.ticticboooom.mods.mmtest;
import net.minecraftforge.fml.common.Mod;
@Mod("mmtest")
public class MMTest {
public MMTest() {
}
}

View File

@@ -0,0 +1,11 @@
modLoader="javafml"
loaderVersion="[36,)"
license="All rights reserved"
[[mods]]
modId="mmtest"
version="${file.jarVersion}"
displayName="Masterful Machinery Test Mod" #mandatory
description='''
MM Test Mod
'''

View File

@@ -0,0 +1,22 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_starlight",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:astral_starlight",
"data": {
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:astral_starlight",
"data": {
"amount": 500
}
}
]
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "render_test",
"controllerId": "basic",
"name": "Render Test",
"layout": [
[
"C"
],
[
")"
]
],
"legend": {
")": {
"block": "botania:mana_spreader"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_energy",
"controllerId": "basic",
"name": "Test Energy",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_energy_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_energy_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_fluids",
"controllerId": "basic",
"name": "Test Fluids",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_fluids_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_fluids_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_gas",
"controllerId": "basic",
"name": "Test Gas",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_mekanism_gas_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_mekanism_gas_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_infuse",
"controllerId": "basic",
"name": "Test Infuse",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_mekanism_infuse_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_mekanism_infuse_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_items",
"controllerId": "basic",
"name": "Test Items",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_items_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_items_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_mana",
"controllerId": "basic",
"name": "Test Mana",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_botania_mana_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_botania_mana_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_model",
"controllerId": "basic",
"name": "Test Model",
"layout": [
[
"C"
],
[
")"
]
],
"legend": {
")": {
"block": "pneumaticcraft:assembly_controller"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_pressure",
"controllerId": "basic",
"name": "Test Pressure",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_pncr_pressure_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_pncr_pressure_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_rotation",
"controllerId": "basic",
"name": "Test Rotation",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_create_rotation_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_create_rotation_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_slurry",
"controllerId": "basic",
"name": "Test Slurry",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_mekanism_slurry_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_mekanism_slurry_output"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_starlight",
"controllerId": "basic",
"name": "Test Starlight",
"layout": [
[
"1C2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_astral_starlight_input"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_astral_starlight_output"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"type": "masterfulmachinery:machine_structure",
"id": "test_energy_st",
"controllerId": "basic",
"name": "Test Energy",
"layout": [
[
"1BCB2"
]
],
"legend": {
"1": {
"block": "masterfulmachinery:basic_simple_port_energy_input"
},
"B": {
"tag": "minecraft:logs"
},
"2": {
"block": "masterfulmachinery:basic_simple_port_energy_output"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_energy",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:energy",
"data": {
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:energy",
"data": {
"amount": 500
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_fluids",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:fluids",
"data": {
"fluid":"minecraft:water",
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:fluids",
"data": {
"fluid": "minecraft:lava",
"amount": 500
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_gas",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:mekanism_gas",
"data": {
"gas": "mekanism:sodium",
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:mekanism_gas",
"data": {
"gas": "mekanism:sodium",
"amount": 50
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_infuse",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:mekanism_infuse",
"data": {
"infuse": "mekanism:redstone",
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:mekanism_infuse",
"data": {
"infuse": "mekanism:redstone",
"amount": 50
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_items",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:items",
"data": {
"item": "minecraft:oak_log",
"count": 2
}
}
],
"outputs":[
{
"type": "masterfulmachinery:items",
"data": {
"item": "minecraft:nether_star",
"count": 1
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_items",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:items",
"data": {
"tag": "minecraft:planks",
"count": 2
}
}
],
"outputs":[
{
"type": "masterfulmachinery:items",
"data": {
"item": "minecraft:birch_log",
"count": 1
}
}
]
}

View File

@@ -0,0 +1,22 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_mana",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:botania_mana",
"data": {
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:botania_mana",
"data": {
"amount": 500
}
}
]
}

View File

@@ -0,0 +1,22 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_pressure",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:pncr_pressure",
"data": {
"air": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:pncr_pressure",
"data": {
"air": 500
}
}
]
}

View File

@@ -0,0 +1,22 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_rotation",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:create_rotation",
"data": {
"speed": 2
}
}
],
"outputs":[
{
"type": "masterfulmachinery:create_rotation",
"data": {
"speed": 4
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_slurry",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:mekanism_slurry",
"data": {
"slurry": "mekanism:clean_gold",
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:mekanism_slurry",
"data": {
"slurry": "mekanism:clean_gold",
"amount": 50
}
}
]
}

View File

@@ -0,0 +1,22 @@
{
"type": "masterfulmachinery:machine_process",
"structureId": "test_starlight",
"controllerId": "basic",
"ticks": 200,
"inputs": [
{
"type": "masterfulmachinery:astral_starlight",
"data": {
"amount": 50
}
}
],
"outputs":[
{
"type": "masterfulmachinery:astral_starlight",
"data": {
"amount": 500
}
}
]
}

View File

@@ -0,0 +1,7 @@
{
"pack": {
"description": "MM Test",
"pack_format": 6,
"_comment": "A pack_format of 6 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods."
}
}

View File

@@ -1,2 +1,2 @@
#Sat Aug 21 15:55:22 BST 2021
VERSION_CODE=730
#Fri Sep 03 00:36:37 BST 2021
VERSION_CODE=766