From a05a45e434802c9524fd2750144bbe44daae3ed3 Mon Sep 17 00:00:00 2001 From: ticticboooom Date: Wed, 12 Jan 2022 10:22:57 +0000 Subject: [PATCH] 1.16 rewrite start --- build.gradle | 5 +- .../controllers/basic.json | 96 ---------------- .../masterful_machinery/controllers/mid.json | 106 ------------------ plans/port-config.md | 3 + .../com/ticticboooom/mods/mm/ModRoot.java | 47 ++++++++ .../java/com/ticticboooom/mods/mm/Ref.java | 10 ++ .../mods/mm/block/ControllerBlock.java | 32 ++++++ .../mm/block/item/ControllerBlockItem.java | 39 +++++++ .../mods/mm/block/item/MMItemGroup.java | 46 ++++++++ .../mods/mm/block/ter/ControllerTER.java | 27 +++++ .../block/ter/model/ControllerBlockModel.java | 98 ++++++++++++++++ .../ter/model/ControllerItemOverrideList.java | 42 +++++++ .../mods/mm/block/tile/ControllerTile.java | 29 +++++ .../mods/mm/data/DataRegistry.java | 13 +++ .../mods/mm/data/model/ControllerModel.java | 19 ++++ .../mods/mm/data/model/PortModel.java | 10 ++ .../mm/data/model/base/BlockstateModel.java | 43 +++++++ .../data/reload/ControllerReloadListener.java | 46 ++++++++ .../PortConfigurationReloadListener.java | 46 ++++++++ .../StructureReloadListener.java} | 11 +- .../mods/mm/data/util/ParserUtils.java | 39 +++++++ .../mods/mm/integration/jei/MMJeiPlugin.java | 49 ++++++++ .../ControllerIngredientHelper.java | 45 ++++++++ .../ControllerIngredientRenderer.java | 30 +++++ .../controller/ControllerIngredientType.java | 11 ++ .../ControllerIngredientTypeInterpreter.java | 21 ++++ .../mods/mm/ports/base/PortType.java | 4 + .../ticticboooom/mods/mm/setup/MMBlocks.java | 14 +++ .../ticticboooom/mods/mm/setup/MMItems.java | 16 +++ .../ticticboooom/mods/mm/setup/MMTiles.java | 14 +++ .../mods/mm/util/ControllerHelper.java | 21 ++++ .../ticticboooom/mods/mm/util/ModelTools.java | 57 ++++++++++ .../blockstates/controller_model.json | 7 ++ .../models/block/controller_model.json | 6 + .../models/block/northen.json | 24 ++++ .../resources/masterfulmachinery.mixins.json | 14 --- src/test/resources/data/mm/recipes/genny.json | 22 ---- .../mm/recipes/structures/render_test.json | 19 ---- .../data/mm/recipes/structures/test_all.json | 82 -------------- .../data/mm/recipes/structures/test_fe.json | 19 ---- .../mm/recipes/structures/test_fluid.json | 19 ---- .../data/mm/recipes/structures/test_gas.json | 19 ---- .../mm/recipes/structures/test_infuse.json | 19 ---- .../mm/recipes/structures/test_items.json | 19 ---- .../data/mm/recipes/structures/test_mana.json | 19 ---- .../mm/recipes/structures/test_model.json | 19 ---- .../mm/recipes/structures/test_pressure.json | 19 ---- .../mm/recipes/structures/test_rotation.json | 19 ---- .../mm/recipes/structures/test_slurry.json | 19 ---- .../mm/recipes/structures/test_starlight.json | 19 ---- .../structures/test_structure_tags.json | 22 ---- .../recipes/structures/test_tiered_fluid.json | 33 ------ .../recipes/structures/test_variable_ios.json | 52 --------- .../resources/data/mm/recipes/test_fe.json | 22 ---- .../resources/data/mm/recipes/test_fluid.json | 24 ---- .../resources/data/mm/recipes/test_gas.json | 24 ---- .../data/mm/recipes/test_infuse.json | 24 ---- .../resources/data/mm/recipes/test_items.json | 24 ---- .../data/mm/recipes/test_items_tag.json | 24 ---- .../resources/data/mm/recipes/test_mana.json | 22 ---- .../data/mm/recipes/test_pressure.json | 22 ---- .../data/mm/recipes/test_rotation.json | 24 ---- .../data/mm/recipes/test_slurry.json | 24 ---- .../data/mm/recipes/test_starlight.json | 22 ---- .../data/mm/recipes/test_tiered_fluid.json | 24 ---- .../masterfulmachinery/controllers/main.json | 7 ++ version.properties | 4 +- 67 files changed, 922 insertions(+), 948 deletions(-) delete mode 100644 demo_config/config/masterful_machinery/controllers/basic.json delete mode 100644 demo_config/config/masterful_machinery/controllers/mid.json create mode 100644 plans/port-config.md create mode 100644 src/main/java/com/ticticboooom/mods/mm/block/ControllerBlock.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/block/item/ControllerBlockItem.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/block/item/MMItemGroup.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/block/ter/ControllerTER.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerBlockModel.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerItemOverrideList.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerTile.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/DataRegistry.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/model/ControllerModel.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/model/PortModel.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/model/base/BlockstateModel.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/reload/ControllerReloadListener.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/reload/PortConfigurationReloadListener.java rename src/main/java/com/ticticboooom/mods/mm/data/{MMReloadListener.java => reload/StructureReloadListener.java} (72%) create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/util/ParserUtils.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/integration/jei/MMJeiPlugin.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientHelper.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientRenderer.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientType.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientTypeInterpreter.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/setup/MMBlocks.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/setup/MMItems.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/setup/MMTiles.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/util/ControllerHelper.java create mode 100644 src/main/java/com/ticticboooom/mods/mm/util/ModelTools.java create mode 100644 src/main/resources/assets/masterfulmachinery/blockstates/controller_model.json create mode 100644 src/main/resources/assets/masterfulmachinery/models/block/controller_model.json create mode 100644 src/main/resources/assets/masterfulmachinery/models/block/northen.json delete mode 100644 src/main/resources/masterfulmachinery.mixins.json delete mode 100644 src/test/resources/data/mm/recipes/genny.json delete mode 100644 src/test/resources/data/mm/recipes/structures/render_test.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_all.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_fe.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_fluid.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_gas.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_infuse.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_items.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_mana.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_model.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_pressure.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_rotation.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_slurry.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_starlight.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_structure_tags.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_tiered_fluid.json delete mode 100644 src/test/resources/data/mm/recipes/structures/test_variable_ios.json delete mode 100644 src/test/resources/data/mm/recipes/test_fe.json delete mode 100644 src/test/resources/data/mm/recipes/test_fluid.json delete mode 100644 src/test/resources/data/mm/recipes/test_gas.json delete mode 100644 src/test/resources/data/mm/recipes/test_infuse.json delete mode 100644 src/test/resources/data/mm/recipes/test_items.json delete mode 100644 src/test/resources/data/mm/recipes/test_items_tag.json delete mode 100644 src/test/resources/data/mm/recipes/test_mana.json delete mode 100644 src/test/resources/data/mm/recipes/test_pressure.json delete mode 100644 src/test/resources/data/mm/recipes/test_rotation.json delete mode 100644 src/test/resources/data/mm/recipes/test_slurry.json delete mode 100644 src/test/resources/data/mm/recipes/test_starlight.json delete mode 100644 src/test/resources/data/mm/recipes/test_tiered_fluid.json create mode 100644 src/test/resources/data/new_mm/masterfulmachinery/controllers/main.json diff --git a/build.gradle b/build.gradle index 5548b69..3dc4512 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,6 @@ minecraft { runs { client { workingDirectory project.file('run') - arg '-mixin.config=masterfulmachinery.mixins.json' // Recommended logging data for a userdev environment // The markers can be changed as needed. @@ -67,8 +66,6 @@ minecraft { // You can set various levels here. // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg" mods { masterfulmachinery { source sourceSets.main @@ -92,7 +89,7 @@ minecraft { // Recommended logging level for the console // You can set various levels here. // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels - property 'forge.logging.console.level', 'debug' + property 'forge.logging.console.level', 'info' property 'mixin.env.remapRefMap', 'true' property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg" mods { diff --git a/demo_config/config/masterful_machinery/controllers/basic.json b/demo_config/config/masterful_machinery/controllers/basic.json deleted file mode 100644 index 06f88e9..0000000 --- a/demo_config/config/masterful_machinery/controllers/basic.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "controllerId": "basic", - "name": "Basic", - "ports": [ - { - "type": "masterfulmachinery:items", - "textureOverride": "minecraft:block/white_terracotta", - "name": "Item", - "id": "simple", - "data": { - "rows": 1, - "columns": 1 - } - }, - { - "type": "masterfulmachinery:energy", - "name": "Energy", - "id": "simple", - "data": { - "capacity": 1000000 - } - }, - { - "type": "masterfulmachinery:fluids", - "name": "Fluid", - "id": "simple", - "data": { - "capacity": 5000 - } - }, - { - "type": "masterfulmachinery:pncr_pressure", - "name": "Pressure", - "id": "simple", - "data": { - "criticalPressure": 7, - "dangerPressure": 5, - "volume": 7000 - } - }, - { - "type": "masterfulmachinery:botania_mana", - "name": "Mana", - "id": "simple", - "data": { - "capacity": 50000 - } - }, - { - "type": "masterfulmachinery:astral_starlight", - "name": "Starlight", - "id": "simple", - "data": { - "capacity": 500 - } - }, - { - "type": "masterfulmachinery:create_rotation", - "name": "Rotation", - "id": "simple", - "data": { - "stress": 32 - } - }, - { - "type": "masterfulmachinery:mekanism_gas", - "name": "Gas", - "id": "simple", - "data": { - "capacity": 100000 - } - }, - { - "type": "masterfulmachinery:mekanism_slurry", - "name": "Slurry", - "id": "simple", - "data": { - "capacity": 100000 - } - }, - { - "type": "masterfulmachinery:mekanism_infuse", - "name": "Infuse", - "id": "simple", - "data": { - "capacity": 100000 - } - }, - { - "type": "masterfulmachinery:weather", - "name": "Weather", - "id": "simple", - "data": {} - } - ] -} \ No newline at end of file diff --git a/demo_config/config/masterful_machinery/controllers/mid.json b/demo_config/config/masterful_machinery/controllers/mid.json deleted file mode 100644 index 589aa7c..0000000 --- a/demo_config/config/masterful_machinery/controllers/mid.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "controllerId": "mid", - "name": "Mid", - "ports": [ - { - "type": "masterfulmachinery:items", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Item", - "id": "intermediate", - "data": { - "rows": 3, - "columns": 3 - } - }, - { - "type": "masterfulmachinery:energy", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Energy", - "id": "intermediate", - "data": { - "capacity": 1000000000 - } - }, - { - "type": "masterfulmachinery:fluids", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Fluid", - "id": "intermediate", - "data": { - "capacity": 10000 - } - }, - { - "type": "masterfulmachinery:pncr_pressure", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Pressure", - "id": "intermediate", - "data": { - "criticalPressure": 7, - "dangerPressure": 5, - "volume": 10000 - } - }, - { - "type": "masterfulmachinery:botania_mana", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Mana", - "id": "intermediate", - "data": { - "capacity": 100000 - } - }, - { - "type": "masterfulmachinery:astral_starlight", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Starlight", - "id": "intermediate", - "data": { - "capacity": 1000 - } - }, - { - "type": "masterfulmachinery:create_rotation", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Rotation", - "id": "intermediate", - "data": { - "stress": 128 - } - }, - { - "type": "masterfulmachinery:mekanism_gas", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Gas", - "id": "intermediate", - "data": { - "capacity": 100000000 - } - }, - { - "type": "masterfulmachinery:mekanism_slurry", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Slurry", - "id": "intermediate", - "data": { - "capacity": 100000000 - } - }, - { - "type": "masterfulmachinery:mekanism_infuse", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Infuse", - "id": "intermediate", - "data": { - "capacity": 100000000 - } - }, - { - "type": "masterfulmachinery:weather", - "textureOverride": "minecraft:block/red_terracotta", - "name": "Weather", - "id": "intermediate", - "data": {} - } - ] -} \ No newline at end of file diff --git a/plans/port-config.md b/plans/port-config.md new file mode 100644 index 0000000..3a1b242 --- /dev/null +++ b/plans/port-config.md @@ -0,0 +1,3 @@ +## port ideas +- configure ingame +- datapack config \ No newline at end of file diff --git a/src/main/java/com/ticticboooom/mods/mm/ModRoot.java b/src/main/java/com/ticticboooom/mods/mm/ModRoot.java index c4a149b..02fec00 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ModRoot.java +++ b/src/main/java/com/ticticboooom/mods/mm/ModRoot.java @@ -1,8 +1,55 @@ package com.ticticboooom.mods.mm; +import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.util.Pair; +import com.ticticboooom.mods.mm.block.ter.model.ControllerBlockModel; +import com.ticticboooom.mods.mm.setup.MMBlocks; +import com.ticticboooom.mods.mm.setup.MMItems; +import com.ticticboooom.mods.mm.setup.MMTiles; +import net.minecraft.client.renderer.BlockModelShapes; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.RenderTypeLookup; +import net.minecraft.client.renderer.model.ModelResourceLocation; +import net.minecraftforge.client.event.ModelBakeEvent; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.MultiLayerModel; +import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.thread.EffectiveSide; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @Mod(Ref.MOD_ID) public class ModRoot { + public ModRoot() { + IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + MMTiles.TILES.register(bus); + MMBlocks.BLOCKS.register(bus); + MMItems.ITEMS.register(bus); + if (EffectiveSide.get().isClient()){ + bus.addListener(ModRoot::modelRegistry); + bus.addListener(ModRoot::bake); + bus.addListener(ModRoot::clientSetup); + } + } + + public static void bake(ModelBakeEvent event){ + MMBlocks.CONTROLLER.get().getStateContainer().getValidStates().forEach(blockState -> { + ModelResourceLocation modelLocation = BlockModelShapes.getModelLocation(blockState); + event.getModelRegistry().put(modelLocation, ControllerBlockModel.INSTANCE); + }); + event.getModelRegistry().put(new ModelResourceLocation(MMItems.CONTROLLER.getId(), "inventory"), ControllerBlockModel.INSTANCE); + } + + public static void modelRegistry(ModelRegistryEvent event){ + ModelLoader.addSpecialModel(MMBlocks.CONTROLLER.getId()); + } + + public static void clientSetup(FMLClientSetupEvent event){ + event.enqueueWork(() -> { + RenderTypeLookup.setRenderLayer(MMBlocks.CONTROLLER.get(), RenderType.getTranslucent()); + }); + } } diff --git a/src/main/java/com/ticticboooom/mods/mm/Ref.java b/src/main/java/com/ticticboooom/mods/mm/Ref.java index 28b1c93..5caec75 100644 --- a/src/main/java/com/ticticboooom/mods/mm/Ref.java +++ b/src/main/java/com/ticticboooom/mods/mm/Ref.java @@ -1,5 +1,15 @@ package com.ticticboooom.mods.mm; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.system.CallbackI; + public class Ref { public static final String MOD_ID = "masterfulmachinery"; + public static ResourceLocation res(String path){ + return new ResourceLocation(MOD_ID, path); + } + + public static final ResourceLocation CONTROLLER_OVERLAY_MODEL = res("controller_model"); + + public static final ResourceLocation JEI_PLUGIN = res("jei"); } diff --git a/src/main/java/com/ticticboooom/mods/mm/block/ControllerBlock.java b/src/main/java/com/ticticboooom/mods/mm/block/ControllerBlock.java new file mode 100644 index 0000000..db468e9 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/block/ControllerBlock.java @@ -0,0 +1,32 @@ +package com.ticticboooom.mods.mm.block; + +import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.util.Pair; +import com.ticticboooom.mods.mm.setup.MMTiles; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.MultiLayerModel; + +import javax.annotation.Nullable; + +public class ControllerBlock extends Block { + public ControllerBlock() { + super(Properties.create(Material.IRON)); + } + + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return MMTiles.CONTROLLER.get().create(); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/block/item/ControllerBlockItem.java b/src/main/java/com/ticticboooom/mods/mm/block/item/ControllerBlockItem.java new file mode 100644 index 0000000..960482a --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/block/item/ControllerBlockItem.java @@ -0,0 +1,39 @@ +package com.ticticboooom.mods.mm.block.item; + +import com.ticticboooom.mods.mm.block.tile.ControllerTile; +import com.ticticboooom.mods.mm.data.DataRegistry; +import com.ticticboooom.mods.mm.setup.MMBlocks; +import com.ticticboooom.mods.mm.util.ControllerHelper; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import javax.annotation.Nullable; + +public class ControllerBlockItem extends BlockItem { + public ControllerBlockItem() { + super(MMBlocks.CONTROLLER.get(), new Properties().group(MMItemGroup.INSTANCE)); + } + + @Override + protected boolean onBlockPlaced(BlockPos pos, World worldIn, @Nullable PlayerEntity player, ItemStack stack, BlockState state) { + ResourceLocation loc = ControllerHelper.getId(stack); + if (loc == null) { + return false; + } + if (!DataRegistry.CONTROLLERS.containsKey(loc)){ + return false; + } + TileEntity tileEntity = worldIn.getTileEntity(pos); + if (tileEntity instanceof ControllerTile) { + ControllerTile controller = (ControllerTile) tileEntity; + controller.controllerModel = DataRegistry.CONTROLLERS.get(loc); + } + return super.onBlockPlaced(pos, worldIn, player, stack, state); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/block/item/MMItemGroup.java b/src/main/java/com/ticticboooom/mods/mm/block/item/MMItemGroup.java new file mode 100644 index 0000000..f789e0f --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/block/item/MMItemGroup.java @@ -0,0 +1,46 @@ +package com.ticticboooom.mods.mm.block.item; + +import com.ticticboooom.mods.mm.data.DataRegistry; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import com.ticticboooom.mods.mm.setup.MMItems; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; + +import java.util.ArrayList; +import java.util.Map; + +public class MMItemGroup extends ItemGroup { + + public static final MMItemGroup INSTANCE = new MMItemGroup(); + + public MMItemGroup() { + super("masterfulmachinery"); + } + + + @Override + public ItemStack createIcon() { + return new ItemStack(Items.ACACIA_PLANKS); + } + + @Override + public void fill(NonNullList items) { + items.addAll(getControllers()); + super.fill(items); + } + + private NonNullList getControllers() { + NonNullList controllers = NonNullList.create(); + for (Map.Entry entry : DataRegistry.CONTROLLERS.entrySet()) { + ItemStack stack = new ItemStack(MMItems.CONTROLLER.get()); + CompoundNBT tag = stack.getOrCreateTag(); + tag.putString("Controller", entry.getValue().id.toString()); + controllers.add(stack); + } + return controllers; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/block/ter/ControllerTER.java b/src/main/java/com/ticticboooom/mods/mm/block/ter/ControllerTER.java new file mode 100644 index 0000000..b11dd1e --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/block/ter/ControllerTER.java @@ -0,0 +1,27 @@ +package com.ticticboooom.mods.mm.block.ter; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import com.mojang.datafixers.util.Pair; +import com.ticticboooom.mods.mm.block.tile.ControllerTile; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.tileentity.TileEntityRenderer; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraftforge.client.model.MultiLayerModel; +import net.minecraftforge.client.model.data.EmptyModelData; + +public class ControllerTER extends TileEntityRenderer { + public ControllerTER(TileEntityRendererDispatcher rendererDispatcherIn) { + super(rendererDispatcherIn); + } + + @Override + public void render(ControllerTile tile, float partialTicks, MatrixStack mat, IRenderTypeBuffer buff, int combinedLightIn, int combinedOverlayIn) { + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerBlockModel.java b/src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerBlockModel.java new file mode 100644 index 0000000..c08e781 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerBlockModel.java @@ -0,0 +1,98 @@ +package com.ticticboooom.mods.mm.block.ter.model; + +import com.google.common.collect.ImmutableList; +import com.jozufozu.flywheel.FlywheelClient; +import com.jozufozu.flywheel.core.QuadConverter; +import com.mojang.datafixers.util.Pair; +import com.simibubi.create.content.contraptions.components.flywheel.FlyWheelInstance; +import com.ticticboooom.mods.mm.Ref; +import com.ticticboooom.mods.mm.data.DataRegistry; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import com.ticticboooom.mods.mm.util.ControllerHelper; +import com.ticticboooom.mods.mm.util.ModelTools; +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.model.*; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Direction; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.QuadTransformer; +import net.minecraftforge.client.model.data.EmptyModelData; +import net.minecraftforge.client.model.data.IDynamicBakedModel; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelProperty; +import net.minecraftforge.client.model.generators.ModelBuilder; +import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.print.attribute.standard.Sides; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class ControllerBlockModel implements IDynamicBakedModel { + + public static final ModelProperty CONTROLLER = new ModelProperty<>(); + public static final ControllerBlockModel INSTANCE = new ControllerBlockModel(); + public static final ControllerItemOverrideList OVERRIDE_LIST = new ControllerItemOverrideList(); + + @Nonnull + @Override + public List getQuads(@Nullable BlockState state, @Nullable Direction side, @Nonnull Random rand, @Nonnull IModelData data) { + List quads = getModel(data).getQuads(state, side, rand, data); + return quads; + } + + + @Override + public boolean isAmbientOcclusion() { + return true; + } + + @Override + public boolean isGui3d() { + return true; + } + + @Override + public boolean isSideLit() { + return true; + } + + @Override + public boolean isBuiltInRenderer() { + return true; + } + + + @Override + public TextureAtlasSprite getParticleTexture(@Nonnull IModelData data) { + return getModel(data).getParticleTexture(data); + } + + + @Override + public TextureAtlasSprite getParticleTexture() { + return this.getParticleTexture(EmptyModelData.INSTANCE); + } + + @Override + public ItemOverrideList getOverrides() { + return OVERRIDE_LIST; + } + + private IBakedModel getModel(IModelData data) { + if (!data.hasProperty(CONTROLLER) || data.getData(CONTROLLER) == null) { + return Minecraft.getInstance().getModelManager().getMissingModel(); + } + ControllerModel controller = data.getData(CONTROLLER); + IBakedModel model = controller.defaultModel.getModel(); + return model; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerItemOverrideList.java b/src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerItemOverrideList.java new file mode 100644 index 0000000..6699442 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/block/ter/model/ControllerItemOverrideList.java @@ -0,0 +1,42 @@ +package com.ticticboooom.mods.mm.block.ter.model; + +import com.google.common.collect.ImmutableList; +import com.ticticboooom.mods.mm.data.DataRegistry; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.ItemOverride; +import net.minecraft.client.renderer.model.ItemOverrideList; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ResourceLocation; + +import javax.annotation.Nullable; + +public class ControllerItemOverrideList extends ItemOverrideList { + @Nullable + @Override + public IBakedModel getOverrideModel(IBakedModel model, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity livingEntity) { + if (!stack.hasTag()) { + return super.getOverrideModel(model, stack, world, livingEntity); + } + CompoundNBT tag = stack.getTag(); + if (!tag.contains("Controller")){ + return super.getOverrideModel(model, stack, world, livingEntity); + } + + String controller = tag.getString("Controller"); + ResourceLocation resourceLocation = ResourceLocation.tryCreate(controller); + if (resourceLocation == null){ + return super.getOverrideModel(model, stack, world, livingEntity); + } + + if (!DataRegistry.CONTROLLERS.containsKey(resourceLocation)) { + return super.getOverrideModel(model, stack, world, livingEntity); + } + + ControllerModel controllerModel = DataRegistry.CONTROLLERS.get(resourceLocation); + return controllerModel.defaultModel.getModel(); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerTile.java b/src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerTile.java new file mode 100644 index 0000000..5380698 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerTile.java @@ -0,0 +1,29 @@ +package com.ticticboooom.mods.mm.block.tile; + +import com.ticticboooom.mods.mm.block.ter.model.ControllerBlockModel; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import com.ticticboooom.mods.mm.setup.MMTiles; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; + +import javax.annotation.Nonnull; + +public class ControllerTile extends TileEntity implements ITickableTileEntity { + public ControllerTile() { + super(MMTiles.CONTROLLER.get()); + } + + public ControllerModel controllerModel; + + @Override + public void tick() { + } + + @Nonnull + @Override + public IModelData getModelData() { + return new ModelDataMap.Builder().withInitial(ControllerBlockModel.CONTROLLER, controllerModel).build(); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/DataRegistry.java b/src/main/java/com/ticticboooom/mods/mm/data/DataRegistry.java new file mode 100644 index 0000000..0118c5f --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/DataRegistry.java @@ -0,0 +1,13 @@ +package com.ticticboooom.mods.mm.data; + +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import com.ticticboooom.mods.mm.data.model.PortModel; +import net.minecraft.util.ResourceLocation; + +import java.util.HashMap; +import java.util.Map; + +public class DataRegistry { + public static final Map CONTROLLERS = new HashMap<>(); + public static final Map PORTS = new HashMap<>(); +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/model/ControllerModel.java b/src/main/java/com/ticticboooom/mods/mm/data/model/ControllerModel.java new file mode 100644 index 0000000..0488eb2 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/model/ControllerModel.java @@ -0,0 +1,19 @@ +package com.ticticboooom.mods.mm.data.model; + +import com.ticticboooom.mods.mm.data.model.base.BlockstateModel; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.ITextComponent; + +public class ControllerModel { + public ResourceLocation id; + public ITextComponent name; + public BlockstateModel defaultModel; + + public ControllerModel copy() { + ControllerModel result = new ControllerModel(); + result.id = id; + result.name = name; + result.defaultModel = defaultModel.copy(); + return result; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/model/PortModel.java b/src/main/java/com/ticticboooom/mods/mm/data/model/PortModel.java new file mode 100644 index 0000000..298b015 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/model/PortModel.java @@ -0,0 +1,10 @@ +package com.ticticboooom.mods.mm.data.model; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.ITextComponent; + +public class PortModel { + public ResourceLocation controllerId; + public ResourceLocation id; + public ITextComponent name; +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/model/base/BlockstateModel.java b/src/main/java/com/ticticboooom/mods/mm/data/model/base/BlockstateModel.java new file mode 100644 index 0000000..5c43183 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/model/base/BlockstateModel.java @@ -0,0 +1,43 @@ +package com.ticticboooom.mods.mm.data.model.base; + +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BlockModelShapes; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.NBTUtil; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.HashMap; +import java.util.Map; + +public class BlockstateModel { + public ResourceLocation block; + public Map properties; + + public BlockState createState() { + CompoundNBT nbt = new CompoundNBT(); + nbt.putString("Name", block.toString()); + CompoundNBT props = new CompoundNBT(); + for (Map.Entry entry : properties.entrySet()) { + props.putString(entry.getKey(), entry.getValue()); + } + nbt.put("Properties", props); + return NBTUtil.readBlockState(nbt); + } + + @OnlyIn(Dist.CLIENT) + public IBakedModel getModel() { + return Minecraft.getInstance().getModelManager().getModel(BlockModelShapes.getModelLocation(createState())); + } + + public BlockstateModel copy() { + BlockstateModel result = new BlockstateModel(); + result.block = block; + result.properties = new HashMap<>(); + result.properties.putAll(properties); + return result; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/reload/ControllerReloadListener.java b/src/main/java/com/ticticboooom/mods/mm/data/reload/ControllerReloadListener.java new file mode 100644 index 0000000..5ee3d97 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/reload/ControllerReloadListener.java @@ -0,0 +1,46 @@ +package com.ticticboooom.mods.mm.data.reload; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.ticticboooom.mods.mm.data.DataRegistry; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import com.ticticboooom.mods.mm.data.util.ParserUtils; +import net.minecraft.client.resources.JsonReloadListener; +import net.minecraft.profiler.IProfiler; +import net.minecraft.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.AddReloadListenerEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.Map; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) +public class ControllerReloadListener extends JsonReloadListener { + public static final Gson GSON = new Gson(); + + public ControllerReloadListener() { + super(GSON, "masterfulmachinery/controllers"); + } + + @SubscribeEvent + public static void on(AddReloadListenerEvent event) { + event.addListener(new ControllerReloadListener()); + } + + @Override + protected void apply(Map objectIn, IResourceManager resourceManagerIn, IProfiler profilerIn) { + for (Map.Entry entry : objectIn.entrySet()) { + DataRegistry.CONTROLLERS.put(entry.getKey(), parse(entry.getKey(), entry.getValue().getAsJsonObject())); + } + } + + private ControllerModel parse(ResourceLocation res, JsonObject json) { + ControllerModel model = new ControllerModel(); + model.id = res; + model.name = ParserUtils.parseTextComponent(json.get("name")); + model.defaultModel = ParserUtils.parseBlockState(json.getAsJsonObject("defaultModel")); + return model; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/reload/PortConfigurationReloadListener.java b/src/main/java/com/ticticboooom/mods/mm/data/reload/PortConfigurationReloadListener.java new file mode 100644 index 0000000..ebf4b61 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/reload/PortConfigurationReloadListener.java @@ -0,0 +1,46 @@ +package com.ticticboooom.mods.mm.data.reload; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.ticticboooom.mods.mm.data.DataRegistry; +import com.ticticboooom.mods.mm.data.model.PortModel; +import com.ticticboooom.mods.mm.data.util.ParserUtils; +import net.minecraft.client.resources.JsonReloadListener; +import net.minecraft.profiler.IProfiler; +import net.minecraft.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.AddReloadListenerEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.Map; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) +public class PortConfigurationReloadListener extends JsonReloadListener { + public static final Gson GSON = new Gson(); + + public PortConfigurationReloadListener() { + super(GSON, "masterfulmachinery/ports"); + } + + @SubscribeEvent + public static void on(AddReloadListenerEvent event) { + event.addListener(new PortConfigurationReloadListener()); + } + + @Override + protected void apply(Map objectIn, IResourceManager resourceManagerIn, IProfiler profilerIn) { + for (Map.Entry entry : objectIn.entrySet()) { + DataRegistry.PORTS.put(entry.getKey(), parse(entry.getKey(), entry.getValue().getAsJsonObject())); + } + } + + private PortModel parse(ResourceLocation res, JsonObject json) { + PortModel model = new PortModel(); + model.id = res; + model.name = ParserUtils.parseTextComponent(json.get("name")); + model.controllerId = ResourceLocation.tryCreate(json.get("controllerId").getAsString()); + return model; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/MMReloadListener.java b/src/main/java/com/ticticboooom/mods/mm/data/reload/StructureReloadListener.java similarity index 72% rename from src/main/java/com/ticticboooom/mods/mm/data/MMReloadListener.java rename to src/main/java/com/ticticboooom/mods/mm/data/reload/StructureReloadListener.java index a763c58..26d31a5 100644 --- a/src/main/java/com/ticticboooom/mods/mm/data/MMReloadListener.java +++ b/src/main/java/com/ticticboooom/mods/mm/data/reload/StructureReloadListener.java @@ -1,10 +1,9 @@ -package com.ticticboooom.mods.mm.data; +package com.ticticboooom.mods.mm.data.reload; import com.google.gson.Gson; import com.google.gson.JsonElement; import net.minecraft.client.resources.JsonReloadListener; import net.minecraft.profiler.IProfiler; -import net.minecraft.resources.IFutureReloadListener; import net.minecraft.resources.IResourceManager; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.AddReloadListenerEvent; @@ -12,20 +11,18 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) -public class MMReloadListener extends JsonReloadListener { +public class StructureReloadListener extends JsonReloadListener { public static final Gson GSON = new Gson(); - public MMReloadListener() { + public StructureReloadListener() { super(GSON, "masterfulmachinery/machines"); } @SubscribeEvent public static void on(AddReloadListenerEvent event) { - event.getListeners().add(new MMReloadListener()); + event.addListener(new StructureReloadListener()); } @Override diff --git a/src/main/java/com/ticticboooom/mods/mm/data/util/ParserUtils.java b/src/main/java/com/ticticboooom/mods/mm/data/util/ParserUtils.java new file mode 100644 index 0000000..c6506d7 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/util/ParserUtils.java @@ -0,0 +1,39 @@ +package com.ticticboooom.mods.mm.data.util; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.ticticboooom.mods.mm.data.model.base.BlockstateModel; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; + +import java.util.HashMap; +import java.util.Map; + +public class ParserUtils { + public static ITextComponent parseTextComponent(JsonElement elem) { + if (elem.isJsonObject()) { + JsonObject nameObj = elem.getAsJsonObject(); + String type = nameObj.get("type").getAsString(); + String key = nameObj.get("key").getAsString(); + if (type.equals("translation")) { + return new TranslationTextComponent(key); + } else if (type.equals("string")) { + return new StringTextComponent(key); + } + } + return new StringTextComponent(elem.getAsString()); + } + + public static BlockstateModel parseBlockState(JsonObject obj) { + BlockstateModel model = new BlockstateModel(); + model.block = ResourceLocation.tryCreate(obj.get("block").getAsString()); + model.properties = new HashMap<>(); + JsonObject properties = obj.get("properties").getAsJsonObject(); + for (Map.Entry entry : properties.entrySet()) { + model.properties.put(entry.getKey(), entry.getValue().getAsString()); + } + return model; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/integration/jei/MMJeiPlugin.java b/src/main/java/com/ticticboooom/mods/mm/integration/jei/MMJeiPlugin.java new file mode 100644 index 0000000..652a89e --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/integration/jei/MMJeiPlugin.java @@ -0,0 +1,49 @@ +package com.ticticboooom.mods.mm.integration.jei; + +import com.ticticboooom.mods.mm.Ref; +import com.ticticboooom.mods.mm.data.DataRegistry; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import com.ticticboooom.mods.mm.integration.jei.ingredients.controller.ControllerIngredientHelper; +import com.ticticboooom.mods.mm.integration.jei.ingredients.controller.ControllerIngredientRenderer; +import com.ticticboooom.mods.mm.integration.jei.ingredients.controller.ControllerIngredientType; +import com.ticticboooom.mods.mm.integration.jei.ingredients.controller.ControllerIngredientTypeInterpreter; +import com.ticticboooom.mods.mm.setup.MMItems; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.registration.IModIngredientRegistration; +import mezz.jei.api.registration.ISubtypeRegistration; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ResourceLocation; + +import java.util.ArrayList; +import java.util.Map; + +@JeiPlugin +public class MMJeiPlugin implements IModPlugin { + + public static final ControllerIngredientType CONTROLLER_TYPE = new ControllerIngredientType(); + public static final ControllerIngredientHelper CONTROLLER_HELPER = new ControllerIngredientHelper(); + public static final ControllerIngredientRenderer CONTROLLER_RENDERER = new ControllerIngredientRenderer(); + + @Override + public ResourceLocation getPluginUid() { + return Ref.JEI_PLUGIN; + } + + @Override + public void registerIngredients(IModIngredientRegistration registration) { + ArrayList controllers = new ArrayList<>(); + for (Map.Entry entry : DataRegistry.CONTROLLERS.entrySet()) { + ItemStack stack = new ItemStack(MMItems.CONTROLLER.get()); + CompoundNBT tag = stack.getOrCreateTag(); + tag.putString("Controller", entry.getValue().id.toString()); + controllers.add(stack); + } + } + + @Override + public void registerItemSubtypes(ISubtypeRegistration registration) { + registration.registerSubtypeInterpreter(MMItems.CONTROLLER.get(), new ControllerIngredientTypeInterpreter()); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientHelper.java b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientHelper.java new file mode 100644 index 0000000..9389fda --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientHelper.java @@ -0,0 +1,45 @@ +package com.ticticboooom.mods.mm.integration.jei.ingredients.controller; + +import com.ticticboooom.mods.mm.Ref; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import mezz.jei.api.ingredients.IIngredientHelper; + +import javax.annotation.Nullable; + +public class ControllerIngredientHelper implements IIngredientHelper { + @Nullable + @Override + public ControllerModel getMatch(Iterable ingredients, ControllerModel ingredientToMatch) { + return ingredientToMatch; + } + + @Override + public String getDisplayName(ControllerModel ingredient) { + return "MM Controller"; + } + + @Override + public String getUniqueId(ControllerModel ingredient) { + return ingredient.id.toString(); + } + + @Override + public String getModId(ControllerModel ingredient) { + return Ref.MOD_ID; + } + + @Override + public String getResourceId(ControllerModel ingredient) { + return ingredient.id.getPath(); + } + + @Override + public ControllerModel copyIngredient(ControllerModel ingredient) { + return ingredient.copy(); + } + + @Override + public String getErrorInfo(@Nullable ControllerModel ingredient) { + return "Error"; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientRenderer.java b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientRenderer.java new file mode 100644 index 0000000..5ca3afe --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientRenderer.java @@ -0,0 +1,30 @@ +package com.ticticboooom.mods.mm.integration.jei.ingredients.controller; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import mezz.jei.api.ingredients.IIngredientRenderer; +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; + +import javax.annotation.Nullable; +import java.util.List; + +public class ControllerIngredientRenderer implements IIngredientRenderer { + + @Override + public void render(MatrixStack matrixStack, int xPosition, int yPosition, @Nullable ControllerModel ingredient) { + BlockState state = ingredient.defaultModel.createState(); + matrixStack.push(); + Minecraft.getInstance().getItemRenderer().renderItemIntoGUI(new ItemStack(state.getBlock().asItem()), xPosition, yPosition); + matrixStack.pop(); + } + + @Override + public List getTooltip(ControllerModel ingredient, ITooltipFlag tooltipFlag) { + return ImmutableList.of(ingredient.name); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientType.java b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientType.java new file mode 100644 index 0000000..20246b6 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientType.java @@ -0,0 +1,11 @@ +package com.ticticboooom.mods.mm.integration.jei.ingredients.controller; + +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import mezz.jei.api.ingredients.IIngredientType; + +public class ControllerIngredientType implements IIngredientType { + @Override + public Class getIngredientClass() { + return ControllerModel.class; + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientTypeInterpreter.java b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientTypeInterpreter.java new file mode 100644 index 0000000..bb9f603 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/integration/jei/ingredients/controller/ControllerIngredientTypeInterpreter.java @@ -0,0 +1,21 @@ +package com.ticticboooom.mods.mm.integration.jei.ingredients.controller; + +import com.ticticboooom.mods.mm.block.item.ControllerBlockItem; +import com.ticticboooom.mods.mm.data.model.ControllerModel; +import com.ticticboooom.mods.mm.util.ControllerHelper; +import mezz.jei.api.ingredients.IIngredientType; +import mezz.jei.api.ingredients.subtypes.IIngredientSubtypeInterpreter; +import mezz.jei.api.ingredients.subtypes.UidContext; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ControllerIngredientTypeInterpreter implements IIngredientSubtypeInterpreter { + @Override + public String apply(ItemStack ingredient, UidContext context) { + ResourceLocation id = ControllerHelper.getId(ingredient); + if (id == null) { + return NONE; + } + return id.toString(); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/base/PortType.java b/src/main/java/com/ticticboooom/mods/mm/ports/base/PortType.java index 33ff1a9..c7da6ee 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/base/PortType.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/base/PortType.java @@ -1,6 +1,7 @@ package com.ticticboooom.mods.mm.ports.base; import com.google.gson.JsonObject; +import net.minecraft.tileentity.TileEntity; import net.minecraftforge.registries.ForgeRegistryEntry; import java.util.function.Supplier; @@ -15,4 +16,7 @@ public abstract class PortType extends ForgeRegistryEntry { } public abstract PortStorage parseStorage(JsonObject data); + public TileEntity createTileEntity() { + return null; + } } diff --git a/src/main/java/com/ticticboooom/mods/mm/setup/MMBlocks.java b/src/main/java/com/ticticboooom/mods/mm/setup/MMBlocks.java new file mode 100644 index 0000000..2dbb098 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/setup/MMBlocks.java @@ -0,0 +1,14 @@ +package com.ticticboooom.mods.mm.setup; + +import com.ticticboooom.mods.mm.Ref; +import com.ticticboooom.mods.mm.block.ControllerBlock; +import net.minecraft.block.Block; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class MMBlocks { + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Ref.MOD_ID); + + public static final RegistryObject CONTROLLER = BLOCKS.register("controller", ControllerBlock::new); +} diff --git a/src/main/java/com/ticticboooom/mods/mm/setup/MMItems.java b/src/main/java/com/ticticboooom/mods/mm/setup/MMItems.java new file mode 100644 index 0000000..63c28bc --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/setup/MMItems.java @@ -0,0 +1,16 @@ +package com.ticticboooom.mods.mm.setup; + +import com.ticticboooom.mods.mm.Ref; +import com.ticticboooom.mods.mm.block.ControllerBlock; +import com.ticticboooom.mods.mm.block.item.ControllerBlockItem; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class MMItems { + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Ref.MOD_ID); + + public static final RegistryObject CONTROLLER = ITEMS.register("controller", ControllerBlockItem::new); +} diff --git a/src/main/java/com/ticticboooom/mods/mm/setup/MMTiles.java b/src/main/java/com/ticticboooom/mods/mm/setup/MMTiles.java new file mode 100644 index 0000000..5321b38 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/setup/MMTiles.java @@ -0,0 +1,14 @@ +package com.ticticboooom.mods.mm.setup; + +import com.ticticboooom.mods.mm.Ref; +import com.ticticboooom.mods.mm.block.tile.ControllerTile; +import net.minecraft.tileentity.TileEntityType; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class MMTiles { + public static final DeferredRegister> TILES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, Ref.MOD_ID); + + public static final RegistryObject> CONTROLLER = TILES.register("controller", () -> TileEntityType.Builder.create(ControllerTile::new, MMBlocks.CONTROLLER.get()).build(null)); +} diff --git a/src/main/java/com/ticticboooom/mods/mm/util/ControllerHelper.java b/src/main/java/com/ticticboooom/mods/mm/util/ControllerHelper.java new file mode 100644 index 0000000..2152f9e --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/util/ControllerHelper.java @@ -0,0 +1,21 @@ +package com.ticticboooom.mods.mm.util; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ResourceLocation; + +public class ControllerHelper { + public static ResourceLocation getId(ItemStack stack) { + if (!stack.hasTag()) { + return null; + } + + CompoundNBT nbt = stack.getTag(); + if (!nbt.contains("Controller")) { + return null; + } + + String controller = nbt.getString("Controller"); + return ResourceLocation.tryCreate(controller); + } +} diff --git a/src/main/java/com/ticticboooom/mods/mm/util/ModelTools.java b/src/main/java/com/ticticboooom/mods/mm/util/ModelTools.java new file mode 100644 index 0000000..300551e --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/util/ModelTools.java @@ -0,0 +1,57 @@ +package com.ticticboooom.mods.mm.util; + +import com.google.common.collect.ImmutableList; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.VertexFormatElement; +import net.minecraft.inventory.container.PlayerContainer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraft.util.math.vector.Vector4f; +import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; + +public class ModelTools { + + private static void putVertex(BakedQuadBuilder b, Vector3f normal, Vector4f vec, float u, float v, TextureAtlasSprite sprite) { + ImmutableList elems = b.getVertexFormat().getElements().asList(); + for (int i = 0; i < elems.size(); i++) { + VertexFormatElement e = elems.get(i); + switch (e.getUsage()) { + case POSITION: b.put(i, vec.getX(), vec.getY(), vec.getZ(), 1.0f); + case COLOR: b.put(i, 1f, 1f, 1f, 1f); + case UV: putVertexUV(b, u, v, sprite, i, e); + case NORMAL: b.put(i, normal.getX(), normal.getY(), normal.getZ(), 0f); + } + } + } + + private static void putVertexUV(BakedQuadBuilder builder, float u, float v, TextureAtlasSprite sprite, int j, VertexFormatElement e) { + switch (e.getIndex()) { + case 0: builder.put(j, sprite.getInterpolatedU(u), sprite.getInterpolatedV(v)); + case 2: builder.put(j, (short) 0, (short) 0); + default: builder.put(j); + } + } + + public static BakedQuad createQuad(ResourceLocation texture, Vector3f v1, Vector3f v2, Vector3f v3, Vector3f v4) { + Vector3f normal = v3.copy(); + normal.sub(v2); + Vector3f tmp = v1.copy(); + tmp.sub(v2); + normal.cross(tmp); + normal.normalize(); + TextureAtlasSprite sprite = Minecraft.getInstance().getAtlasSpriteGetter(PlayerContainer.LOCATION_BLOCKS_TEXTURE).apply(texture); + + int tw = sprite.getWidth(); + int th = sprite.getHeight(); + + BakedQuadBuilder b = new BakedQuadBuilder(sprite); + putVertex(b, normal, new Vector4f(v1), 0, 0, sprite); + putVertex(b, normal, new Vector4f(v2), 0, th, sprite); + putVertex(b, normal, new Vector4f(v3), tw, th, sprite); + putVertex(b, normal, new Vector4f(v4), tw, 0, sprite); + b.setApplyDiffuseLighting(true); + return b.build(); + } +} diff --git a/src/main/resources/assets/masterfulmachinery/blockstates/controller_model.json b/src/main/resources/assets/masterfulmachinery/blockstates/controller_model.json new file mode 100644 index 0000000..ba77e59 --- /dev/null +++ b/src/main/resources/assets/masterfulmachinery/blockstates/controller_model.json @@ -0,0 +1,7 @@ +{ + "variants": { + "" : { + "model": "block/controller_model" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/masterfulmachinery/models/block/controller_model.json b/src/main/resources/assets/masterfulmachinery/models/block/controller_model.json new file mode 100644 index 0000000..2e61c27 --- /dev/null +++ b/src/main/resources/assets/masterfulmachinery/models/block/controller_model.json @@ -0,0 +1,6 @@ +{ + "parent": "masterfulmachinery:block/northen", + "textures": { + "overlay": "masterfulmachinery:block/controller_cutout" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/masterfulmachinery/models/block/northen.json b/src/main/resources/assets/masterfulmachinery/models/block/northen.json new file mode 100644 index 0000000..0b6e48e --- /dev/null +++ b/src/main/resources/assets/masterfulmachinery/models/block/northen.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "forge:multi-layer", + "textures": { + "overlay": "#overlay", + "particle": "#overlay" + }, + "layers": { + "translucent": { + "textures": { + "overlay": "#overlay" + }, + "elements": [ + { + "name": "overlay", + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} + } + }] + } + } +} \ No newline at end of file diff --git a/src/main/resources/masterfulmachinery.mixins.json b/src/main/resources/masterfulmachinery.mixins.json deleted file mode 100644 index 5d96948..0000000 --- a/src/main/resources/masterfulmachinery.mixins.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "required": true, - "package": "com.ticticboooom.mods.mm.core.mixin", - "compatibilityLevel": "JAVA_8", - "refmap": "masterfulmachinery.refmap.json", - "mixins": [ - "ResourceLoaderMixin" - ], - "injectors": { - "maxShiftBy": 3, - "defaultRequire": 1 - }, - "minVersion": "0.8" -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/genny.json b/src/test/resources/data/mm/recipes/genny.json deleted file mode 100644 index 0574ba0..0000000 --- a/src/test/resources/data/mm/recipes/genny.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/render_test.json b/src/test/resources/data/mm/recipes/structures/render_test.json deleted file mode 100644 index 26c27fc..0000000 --- a/src/test/resources/data/mm/recipes/structures/render_test.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "masterfulmachinery:machine_structure", - "id": "render_test", - "controllerId": "basic", - "name": "Render Test", - "layout": [ - [ - "C" - ], - [ - ")" - ] - ], - "legend": { - ")": { - "block": "botania:mana_spreader" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_all.json b/src/test/resources/data/mm/recipes/structures/test_all.json deleted file mode 100644 index 39a87f7..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_all.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "type": "masterfulmachinery:machine_structure", - "id": "test_all", - "controllerId": "basic", - "name": "Testing All The Ports", - "layout": [ - [ - ")C*", - "+ ,", - "- .", - "/ 0", - "1 2", - "3 4", - "5 6", - "7 8", - "9 :", - "; <" - ] - ], - "legend": { - ")": { - "block": "masterfulmachinery:basic_simple_port_items_output" - }, - "*": { - "block": "masterfulmachinery:basic_simple_port_items_input" - }, - "+": { - "block": "masterfulmachinery:basic_simple_port_energy_output" - }, - ",": { - "block": "masterfulmachinery:basic_simple_port_energy_input" - }, - "-": { - "block": "masterfulmachinery:basic_simple_port_fluids_output" - }, - ".": { - "block": "masterfulmachinery:basic_simple_port_fluids_input" - }, - "/": { - "block": "masterfulmachinery:basic_simple_port_pncr_pressure_output" - }, - "0": { - "block": "masterfulmachinery:basic_simple_port_pncr_pressure_input" - }, - "1": { - "block": "masterfulmachinery:basic_simple_port_botania_mana_output" - }, - "2": { - "block": "masterfulmachinery:basic_simple_port_botania_mana_input" - }, - "3": { - "block": "masterfulmachinery:basic_simple_port_astral_starlight_output" - }, - "4": { - "block": "masterfulmachinery:basic_simple_port_astral_starlight_input" - }, - "5": { - "block": "masterfulmachinery:basic_simple_port_create_rotation_output" - }, - "6": { - "block": "masterfulmachinery:basic_simple_port_create_rotation_input" - }, - "7": { - "block": "masterfulmachinery:basic_simple_port_mekanism_gas_output" - }, - "8": { - "block": "masterfulmachinery:basic_simple_port_mekanism_gas_input" - }, - "9": { - "block": "masterfulmachinery:basic_simple_port_mekanism_slurry_output" - }, - ":": { - "block": "masterfulmachinery:basic_simple_port_mekanism_slurry_input" - }, - ";": { - "block": "masterfulmachinery:basic_simple_port_mekanism_infuse_output" - }, - "<": { - "block": "masterfulmachinery:basic_simple_port_mekanism_infuse_input" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_fe.json b/src/test/resources/data/mm/recipes/structures/test_fe.json deleted file mode 100644 index 7c54d49..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_fe.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_fluid.json b/src/test/resources/data/mm/recipes/structures/test_fluid.json deleted file mode 100644 index 56beaef..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_fluid.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_gas.json b/src/test/resources/data/mm/recipes/structures/test_gas.json deleted file mode 100644 index 6a2a18f..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_gas.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_infuse.json b/src/test/resources/data/mm/recipes/structures/test_infuse.json deleted file mode 100644 index 22bea9d..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_infuse.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_items.json b/src/test/resources/data/mm/recipes/structures/test_items.json deleted file mode 100644 index 725346a..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_items.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_mana.json b/src/test/resources/data/mm/recipes/structures/test_mana.json deleted file mode 100644 index 7e7ed2b..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_mana.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_model.json b/src/test/resources/data/mm/recipes/structures/test_model.json deleted file mode 100644 index 2271ea0..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_model.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "masterfulmachinery:machine_structure", - "id": "test_model", - "controllerId": "basic", - "name": "Test Model", - "layout": [ - [ - "C" - ], - [ - ")" - ] - ], - "legend": { - ")": { - "block": "pneumaticcraft:assembly_controller" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_pressure.json b/src/test/resources/data/mm/recipes/structures/test_pressure.json deleted file mode 100644 index 907b7a5..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_pressure.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_rotation.json b/src/test/resources/data/mm/recipes/structures/test_rotation.json deleted file mode 100644 index 65988b8..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_rotation.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_slurry.json b/src/test/resources/data/mm/recipes/structures/test_slurry.json deleted file mode 100644 index 84eea04..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_slurry.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_starlight.json b/src/test/resources/data/mm/recipes/structures/test_starlight.json deleted file mode 100644 index e81cb09..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_starlight.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_structure_tags.json b/src/test/resources/data/mm/recipes/structures/test_structure_tags.json deleted file mode 100644 index 74ad506..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_structure_tags.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "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" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_tiered_fluid.json b/src/test/resources/data/mm/recipes/structures/test_tiered_fluid.json deleted file mode 100644 index 569b0e4..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_tiered_fluid.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "type": "masterfulmachinery:machine_structure", - "id": "test_tiered_fluids", - "controllerId": [ - "basic", - "mid" - ], - "name": "Test Tiered Fluids", - "layout": [ - [ - "1C2" - ] - ], - "legend": { - "1": { - "port": { - "type": "masterfulmachinery:fluids", - "input": true, - "controllerId": [ - "basic", - "mid" - ] - } - }, - "2": { - "port": { - "type": "masterfulmachinery:fluids", - "input": false, - "controllerId": "mid" - } - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/structures/test_variable_ios.json b/src/test/resources/data/mm/recipes/structures/test_variable_ios.json deleted file mode 100644 index c964f55..0000000 --- a/src/test/resources/data/mm/recipes/structures/test_variable_ios.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "masterfulmachinery:machine_structure", - "id": "variable_io", - "controllerId": "basic", - "name": "Variable IO", - "layout": [ - [ - ")C)", - "*+*", - ")*)" - ], - [ - "),)", - "-./", - ")0)" - ], - [ - ")))", - ")1)", - ")))" - ] - ], - "legend": { - "0": { - "block": "masterfulmachinery:basic_simple_port_fluids_output" - }, - "1": { - "block": "masterfulmachinery:basic_simple_port_mekanism_gas_output" - }, - ")": { - "block": "minecraft:polished_blackstone" - }, - "*": { - "block": "masterfulmachinery:basic_simple_port_energy_output" - }, - "+": { - "block": "masterfulmachinery:basic_simple_port_items_output" - }, - ",": { - "block": "minecraft:glass" - }, - "-": { - "block": "masterfulmachinery:basic_simple_port_items_input" - }, - ".": { - "block": "minecraft:water" - }, - "/": { - "block": "masterfulmachinery:basic_simple_port_fluids_input" - } - } -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_fe.json b/src/test/resources/data/mm/recipes/test_fe.json deleted file mode 100644 index 3de49f5..0000000 --- a/src/test/resources/data/mm/recipes/test_fe.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_fluid.json b/src/test/resources/data/mm/recipes/test_fluid.json deleted file mode 100644 index 734e73c..0000000 --- a/src/test/resources/data/mm/recipes/test_fluid.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_gas.json b/src/test/resources/data/mm/recipes/test_gas.json deleted file mode 100644 index ac68289..0000000 --- a/src/test/resources/data/mm/recipes/test_gas.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_infuse.json b/src/test/resources/data/mm/recipes/test_infuse.json deleted file mode 100644 index cfa19ee..0000000 --- a/src/test/resources/data/mm/recipes/test_infuse.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_items.json b/src/test/resources/data/mm/recipes/test_items.json deleted file mode 100644 index 5c13690..0000000 --- a/src/test/resources/data/mm/recipes/test_items.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_items_tag.json b/src/test/resources/data/mm/recipes/test_items_tag.json deleted file mode 100644 index 87fbc6f..0000000 --- a/src/test/resources/data/mm/recipes/test_items_tag.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_mana.json b/src/test/resources/data/mm/recipes/test_mana.json deleted file mode 100644 index a37249a..0000000 --- a/src/test/resources/data/mm/recipes/test_mana.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_pressure.json b/src/test/resources/data/mm/recipes/test_pressure.json deleted file mode 100644 index 04371f3..0000000 --- a/src/test/resources/data/mm/recipes/test_pressure.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_rotation.json b/src/test/resources/data/mm/recipes/test_rotation.json deleted file mode 100644 index 594be06..0000000 --- a/src/test/resources/data/mm/recipes/test_rotation.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "masterfulmachinery:machine_process", - "structureId": "test_rotation", - "controllerId": "basic", - "ticks": 200, - "inputs": [ - { - "type": "masterfulmachinery:create_rotation", - "data": { - "speed": 2 - }, - "perTick": true - } - ], - "outputs": [ - { - "type": "masterfulmachinery:create_rotation", - "data": { - "speed": 64 - }, - "perTick": true - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_slurry.json b/src/test/resources/data/mm/recipes/test_slurry.json deleted file mode 100644 index 681473a..0000000 --- a/src/test/resources/data/mm/recipes/test_slurry.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_starlight.json b/src/test/resources/data/mm/recipes/test_starlight.json deleted file mode 100644 index 0574ba0..0000000 --- a/src/test/resources/data/mm/recipes/test_starlight.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "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 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_tiered_fluid.json b/src/test/resources/data/mm/recipes/test_tiered_fluid.json deleted file mode 100644 index ed75e42..0000000 --- a/src/test/resources/data/mm/recipes/test_tiered_fluid.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "masterfulmachinery:machine_process", - "structureId": "test_tiered_fluid", - "controllerId": ["basic", "mid"], - "ticks": 20, - "inputs": [ - { - "type": "masterfulmachinery:fluids", - "data": { - "fluid": "minecraft:water", - "amount": 50 - } - } - ], - "outputs": [ - { - "type": "masterfulmachinery:fluids", - "data": { - "fluid": "minecraft:water", - "amount": 1 - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/data/new_mm/masterfulmachinery/controllers/main.json b/src/test/resources/data/new_mm/masterfulmachinery/controllers/main.json new file mode 100644 index 0000000..133e94f --- /dev/null +++ b/src/test/resources/data/new_mm/masterfulmachinery/controllers/main.json @@ -0,0 +1,7 @@ +{ + "name": "Tits", + "defaultModel": { + "block": "minecraft:sponge", + "properties": {} + } +} \ No newline at end of file diff --git a/version.properties b/version.properties index e63b910..b244e9a 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ -#Fri Dec 03 23:08:50 GMT 2021 -VERSION_CODE=853 +#Wed Jan 12 10:10:42 GMT 2022 +VERSION_CODE=1038