From 869e32d425fddafd24195851df645cb28eb1249a Mon Sep 17 00:00:00 2001 From: ticticboooom Date: Wed, 12 May 2021 00:07:52 +0100 Subject: [PATCH] fixed server recipe and some inconsistencies --- build.gradle | 3 +- .../java/com/ticticboooom/mods/mm/MM.java | 9 ++- .../mm/block/tile/ControllerBlockEntity.java | 4 +- .../mm/client/jei/category/MMJeiPlugin.java | 3 - .../mods/mm/data/MachineProcessRecipe.java | 3 +- .../mods/mm/data/MachineStructureRecipe.java | 38 ++++++--- .../structure/MachineStructureObject.java | 18 +++++ .../MachineStructureRecipeKeyModel.java | 2 +- .../mods/mm/datagen/MMPackFinder.java | 2 +- .../mm/ports/parser/MekSlurryPortParser.java | 2 +- .../ports/storage/MekSlurryPortStorage.java | 4 +- .../mods/mm/registration/MMLoader.java | 2 +- .../mods/mm/registration/RecipeTypes.java | 4 +- .../recipes/masteritem.json | 37 +++++++++ .../recipes/structure/mastermachine.json | 79 +++++++++++++++++++ .../recipes/structure/mastermachine2.json | 23 ++++++ 16 files changed, 202 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureObject.java create mode 100644 src/main/resources/data/masterfulmachinery/recipes/masteritem.json create mode 100644 src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine.json create mode 100644 src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine2.json diff --git a/build.gradle b/build.gradle index 7a6b092..2561312 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' -version = '1.16.5-0.0.12' +version = '1.16.5-0.1.2-T' + System.currentTimeMillis() group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'MasterfulMachinery' @@ -146,7 +146,6 @@ dependencies { runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}:generators")// Mekanism: Generators runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}:tools")// Mekanism: Tools - compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // at runtime, use the full JEI jar runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}") diff --git a/src/main/java/com/ticticboooom/mods/mm/MM.java b/src/main/java/com/ticticboooom/mods/mm/MM.java index 6ace8df..2274b52 100644 --- a/src/main/java/com/ticticboooom/mods/mm/MM.java +++ b/src/main/java/com/ticticboooom/mods/mm/MM.java @@ -31,6 +31,7 @@ import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.thread.EffectiveSide; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.server.FMLServerAboutToStartEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @@ -74,9 +75,11 @@ public class MM { generator = MemoryDataGeneratorFactory.createMemoryDataGenerator(); ExistingFileHelper existingFileHelper = new ExistingFileHelper(ImmutableList.of(), ImmutableSet.of(), false); - generator.addProvider(new MMBlockStateProvider(generator, existingFileHelper)); - generator.addProvider(new MMItemModelProvider(generator, existingFileHelper)); - generator.addProvider(new MMLangProvider(generator)); + if (FMLEnvironment.dist != Dist.DEDICATED_SERVER){ + generator.addProvider(new MMBlockStateProvider(generator, existingFileHelper)); + generator.addProvider(new MMItemModelProvider(generator, existingFileHelper)); + generator.addProvider(new MMLangProvider(generator)); + } } public static void generate() { diff --git a/src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerBlockEntity.java b/src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerBlockEntity.java index 8cbcf16..e6bf9ac 100644 --- a/src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerBlockEntity.java +++ b/src/main/java/com/ticticboooom/mods/mm/block/tile/ControllerBlockEntity.java @@ -46,6 +46,7 @@ public class ControllerBlockEntity extends UpdatableTile implements ITickableTil @Override public void tick() { + update.setMsg("Failed to construct \nthe machine"); List recipes = level.getRecipeManager().getAllRecipesFor(RecipeTypes.MACHINE_STRUCTURE); for (MachineStructureRecipe recipe : recipes) { int index = recipe.matches(this.worldPosition, level, controllerId); @@ -55,8 +56,7 @@ public class ControllerBlockEntity extends UpdatableTile implements ITickableTil return; } } - update.setMsg("Failed to construct \nthe machine"); -} + } private void onStructureFound(MachineStructureRecipe structure, int index) { ArrayList ports = structure.getPorts(worldPosition, level, index); diff --git a/src/main/java/com/ticticboooom/mods/mm/client/jei/category/MMJeiPlugin.java b/src/main/java/com/ticticboooom/mods/mm/client/jei/category/MMJeiPlugin.java index 6dbe57f..11e25be 100644 --- a/src/main/java/com/ticticboooom/mods/mm/client/jei/category/MMJeiPlugin.java +++ b/src/main/java/com/ticticboooom/mods/mm/client/jei/category/MMJeiPlugin.java @@ -8,12 +8,9 @@ import mezz.jei.api.JeiPlugin; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; import net.minecraft.client.Minecraft; -import net.minecraft.item.crafting.IRecipeType; import net.minecraft.util.ResourceLocation; -import java.util.ArrayList; import java.util.List; -import java.util.Map; @JeiPlugin public class MMJeiPlugin implements IModPlugin { diff --git a/src/main/java/com/ticticboooom/mods/mm/data/MachineProcessRecipe.java b/src/main/java/com/ticticboooom/mods/mm/data/MachineProcessRecipe.java index 2ad6a7e..df7ba1d 100644 --- a/src/main/java/com/ticticboooom/mods/mm/data/MachineProcessRecipe.java +++ b/src/main/java/com/ticticboooom/mods/mm/data/MachineProcessRecipe.java @@ -150,7 +150,7 @@ public class MachineProcessRecipe implements IRecipe { @Override public IRecipeSerializer getSerializer() { - return new Serializer(); + return RecipeTypes.PROCESS.get(); } @Override @@ -217,6 +217,7 @@ public class MachineProcessRecipe implements IRecipe { boolean perTick = buf.readBoolean(); MasterfulPortType value = MMPorts.PORTS.get(RLUtils.toRL(inpType)); PortState state = value.getParser().createState(buf); + state.setConsumePerTick(perTick); result.add(state); } return result; diff --git a/src/main/java/com/ticticboooom/mods/mm/data/MachineStructureRecipe.java b/src/main/java/com/ticticboooom/mods/mm/data/MachineStructureRecipe.java index 8e0a905..53121f9 100644 --- a/src/main/java/com/ticticboooom/mods/mm/data/MachineStructureRecipe.java +++ b/src/main/java/com/ticticboooom/mods/mm/data/MachineStructureRecipe.java @@ -10,9 +10,11 @@ import com.mojang.serialization.JsonOps; import com.ticticboooom.mods.mm.MM; import com.ticticboooom.mods.mm.block.MachinePortBlock; import com.ticticboooom.mods.mm.data.model.structure.MachineStructureBlockPos; +import com.ticticboooom.mods.mm.data.model.structure.MachineStructureObject; import com.ticticboooom.mods.mm.data.model.structure.MachineStructureRecipeKeyModel; import com.ticticboooom.mods.mm.registration.RecipeTypes; import lombok.Getter; +import lombok.SneakyThrows; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.inventory.IInventory; @@ -38,14 +40,15 @@ import java.util.Arrays; import java.util.List; public class MachineStructureRecipe implements IRecipe { - private final ResourceLocation rl = new ResourceLocation(MM.ID, "machine_structure"); + private final ResourceLocation rl; @Getter private List> models; @Getter private final List controllerId; private String id; - public MachineStructureRecipe(List models, List controllerId, String id) { + public MachineStructureRecipe(List models, List controllerId, String id, ResourceLocation rl) { + this.rl = rl; List rotated = new ArrayList<>(); List rotated1 = new ArrayList<>(); List rotated2 = new ArrayList<>(); @@ -175,12 +178,12 @@ public class MachineStructureRecipe implements IRecipe { @Override public ResourceLocation getId() { - return new ResourceLocation(MM.ID, "machine_structure"); + return rl; } @Override public IRecipeSerializer getSerializer() { - return new Serializer(); + return RecipeTypes.STRUCTURE.get(); } @Override @@ -205,30 +208,39 @@ public class MachineStructureRecipe implements IRecipe { String id = obj.get("id").getAsString(); DataResult, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(Codec.list(MachineStructureRecipeKeyModel.CODEC)).apply(obj.getAsJsonArray("blocks")); List first = apply.result().get().getFirst(); - return new MachineStructureRecipe(first, ids, id); + return new MachineStructureRecipe(first, ids, id, rl); } + @SneakyThrows @Nullable @Override public MachineStructureRecipe fromNetwork(ResourceLocation rl, PacketBuffer buf) { - List controllerId = Arrays.asList(buf.readUtf().split(",")); + List controllerId = new ArrayList<>(); + int idCount = buf.readInt(); + for (int i = 0; i < idCount; i++) { + controllerId.add(buf.readUtf()); + } String id = buf.readUtf(); - List models = null; try { - models = buf.readWithCodec(Codec.list(MachineStructureRecipeKeyModel.CODEC)); - } catch (IOException e) { + MachineStructureObject machineStructureObject = buf.readWithCodec(MachineStructureObject.CODEC); + List models = machineStructureObject.getInner(); + return new MachineStructureRecipe(models, controllerId, id, rl); + } catch (Exception e) { e.printStackTrace(); } - return new MachineStructureRecipe(models, controllerId, id); + return null; } @Override public void toNetwork(PacketBuffer buf, MachineStructureRecipe recipe) { - buf.writeUtf(String.join(",", recipe.controllerId)); + buf.writeInt(recipe.controllerId.size()); + for (String s : recipe.controllerId) { + buf.writeUtf(s); + } buf.writeUtf(recipe.id); try { - buf.writeWithCodec(Codec.list(MachineStructureRecipeKeyModel.CODEC), recipe.models.get(0)); - } catch (IOException e) { + buf.writeWithCodec(MachineStructureObject.CODEC, new MachineStructureObject(recipe.getModels().get(0))); + } catch (Exception e) { e.printStackTrace(); } } diff --git a/src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureObject.java b/src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureObject.java new file mode 100644 index 0000000..634d21c --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureObject.java @@ -0,0 +1,18 @@ +package com.ticticboooom.mods.mm.data.model.structure; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +@AllArgsConstructor +public class MachineStructureObject { + public static final Codec CODEC = RecordCodecBuilder.create(x -> x.group( + Codec.list(MachineStructureRecipeKeyModel.CODEC).fieldOf("object").forGetter(z -> z.inner) + ).apply(x, MachineStructureObject::new)); + + private final List inner; +} diff --git a/src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureRecipeKeyModel.java b/src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureRecipeKeyModel.java index 2ff16d4..4f85d37 100644 --- a/src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureRecipeKeyModel.java +++ b/src/main/java/com/ticticboooom/mods/mm/data/model/structure/MachineStructureRecipeKeyModel.java @@ -14,7 +14,7 @@ public class MachineStructureRecipeKeyModel { MachineStructureBlockPos.CODEC.fieldOf("pos").forGetter(z -> z.pos), Codec.STRING.optionalFieldOf("tag").forGetter(z -> Optional.of(z.tag)), Codec.STRING.optionalFieldOf("block").forGetter(z -> Optional.of(z.block)), - Codec.STRING.optionalFieldOf("tag").forGetter(z -> Optional.of(z.nbt)) + Codec.STRING.optionalFieldOf("nbt").forGetter(z -> Optional.of(z.nbt)) ).apply(x, (w0, w, y, z) -> new MachineStructureRecipeKeyModel(w0, w.orElse(""), y.orElse(""), z.orElse("")))); private MachineStructureBlockPos pos; private final String tag; diff --git a/src/main/java/com/ticticboooom/mods/mm/datagen/MMPackFinder.java b/src/main/java/com/ticticboooom/mods/mm/datagen/MMPackFinder.java index 4b91fdf..90ff6e8 100644 --- a/src/main/java/com/ticticboooom/mods/mm/datagen/MMPackFinder.java +++ b/src/main/java/com/ticticboooom/mods/mm/datagen/MMPackFinder.java @@ -47,7 +47,7 @@ public class MMPackFinder implements IPackFinder { Path rootPath = MemoryDataGeneratorFactory.ROOT_PATH; ResourcePackInfo pack = ResourcePackInfo.create("mm_" + type.getSuffix(), true, - () -> new InMemoryPack(rootPath), infoFactory, ResourcePackInfo.Priority.BOTTOM, IPackNameDecorator.DEFAULT); + () -> new InMemoryPack(rootPath), infoFactory, ResourcePackInfo.Priority.TOP, IPackNameDecorator.DEFAULT); if (pack != null) { infoConsumer.accept(pack); } diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/parser/MekSlurryPortParser.java b/src/main/java/com/ticticboooom/mods/mm/ports/parser/MekSlurryPortParser.java index 5c73d44..88fd7f4 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/parser/MekSlurryPortParser.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/parser/MekSlurryPortParser.java @@ -25,7 +25,7 @@ public class MekSlurryPortParser implements IPortParser { @SneakyThrows @Override public PortState createState(PacketBuffer buf) { - return buf.readWithCodec(MekGasPortState.CODEC); + return buf.readWithCodec(MekSlurryPortState.CODEC); } @Override diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java index 3315ce6..87f3e35 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java @@ -60,7 +60,9 @@ public class MekSlurryPortStorage implements IPortStorage { @Override public void load(CompoundNBT nbt) { - inv.setStack(new SlurryStack(Objects.requireNonNull(MekanismAPI.slurryRegistry().getValue(RLUtils.toRL(nbt.getString("slurry")))), nbt.getLong("amount"))); + if (nbt.contains("slurry")){ + inv.setStack(new SlurryStack(Objects.requireNonNull(MekanismAPI.slurryRegistry().getValue(RLUtils.toRL(nbt.getString("slurry")))), nbt.getLong("amount"))); + } } @Override diff --git a/src/main/java/com/ticticboooom/mods/mm/registration/MMLoader.java b/src/main/java/com/ticticboooom/mods/mm/registration/MMLoader.java index ceaa368..dedc8fe 100644 --- a/src/main/java/com/ticticboooom/mods/mm/registration/MMLoader.java +++ b/src/main/java/com/ticticboooom/mods/mm/registration/MMLoader.java @@ -41,7 +41,7 @@ public class MMLoader { public static final ItemGroup MASTERFUL_ITEM_GROUP = new ItemGroup(MM.ID) { @Override public ItemStack makeIcon() { - return new ItemStack(Items.PAPER); + return new ItemStack(MMSetup.BLUEPRINT.get()); } }; diff --git a/src/main/java/com/ticticboooom/mods/mm/registration/RecipeTypes.java b/src/main/java/com/ticticboooom/mods/mm/registration/RecipeTypes.java index 52b784c..a549378 100644 --- a/src/main/java/com/ticticboooom/mods/mm/registration/RecipeTypes.java +++ b/src/main/java/com/ticticboooom/mods/mm/registration/RecipeTypes.java @@ -12,8 +12,8 @@ import net.minecraftforge.registries.ForgeRegistries; public class RecipeTypes { public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, MM.ID); - public static final IRecipeType MACHINE_STRUCTURE = IRecipeType.register(new ResourceLocation(MM.ID, "machine_structure").toString()); - public static final IRecipeType MACHINE_PROCESS = IRecipeType.register(new ResourceLocation(MM.ID, "machine_process").toString()); + public static final IRecipeType MACHINE_STRUCTURE = IRecipeType.register("machine_structure"); + public static final IRecipeType MACHINE_PROCESS = IRecipeType.register("machine_process"); public static final RegistryObject STRUCTURE = RECIPE_SERIALIZERS.register("machine_structure", MachineStructureRecipe.Serializer::new); public static final RegistryObject PROCESS = RECIPE_SERIALIZERS.register("machine_process", MachineProcessRecipe.Serializer::new); diff --git a/src/main/resources/data/masterfulmachinery/recipes/masteritem.json b/src/main/resources/data/masterfulmachinery/recipes/masteritem.json new file mode 100644 index 0000000..4c1d99d --- /dev/null +++ b/src/main/resources/data/masterfulmachinery/recipes/masteritem.json @@ -0,0 +1,37 @@ +{ + "type": "masterfulmachinery:machine_process", + "structureId": "mastermachine_structure", + "controllerId": "mastermachine", + "ticks": 100, + "inputs": [ + { + "type": "masterfulmachinery:items", + "data": { + "item": "minecraft:wool", + "count": 2 + } + }, + { + "type": "masterfulmachinery:energy", + "data": { + "amount": 69420 + } + } + ], + "outputs": [ + { + "type": "masterfulmachinery:items", + "data": { + "item": "minecraft:nether_star", + "count": 1 + } + }, + { + "type": "masterfulmachinery:mekanism_slurry", + "data": { + "slurry": "mekanism:clean_gold", + "amount": 42069 + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine.json b/src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine.json new file mode 100644 index 0000000..7ff3658 --- /dev/null +++ b/src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine.json @@ -0,0 +1,79 @@ +{ + "type": "masterfulmachinery:machine_structure", + "controllerId": "mastermachine", + "id": "mastermachine_structure", + "blocks": [ + { + "pos":{ + "x": -1, + "y": 0, + "z": 0 + }, + "block": "masterfulmachinery:mastermachine_masteritem_port_items_input" + }, + { + "pos":{ + "x": -1, + "y": 1, + "z": 0 + }, + "block": "masterfulmachinery:mastermachine_masteritem_port_items_output" + }, + { + "pos":{ + "x": -1, + "y": 2, + "z": 0 + }, + "block": "masterfulmachinery:mastermachine_battery_port_energy_input" + }, + { + "pos":{ + "x": 0, + "y": 1, + "z": 0 + }, + "block": "minecraft:cobblestone" + }, + { + "pos":{ + "x": 0, + "y": 4, + "z": 0 + }, + "block": "minecraft:cobblestone" + }, + { + "pos":{ + "x": 0, + "y": 7, + "z": 0 + }, + "block": "minecraft:cobblestone" + }, + { + "pos":{ + "x": 0, + "y": 10, + "z": 0 + }, + "block": "minecraft:cobblestone" + }, + { + "pos":{ + "x": 1, + "y": 0, + "z": 0 + }, + "block": "masterfulmachinery:mastermachine_mekslurry_port_mekanism_slurry_input" + }, + { + "pos":{ + "x": 1, + "y": 1, + "z": 0 + }, + "block": "masterfulmachinery:mastermachine_mekslurry_port_mekanism_slurry_output" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine2.json b/src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine2.json new file mode 100644 index 0000000..78ded72 --- /dev/null +++ b/src/main/resources/data/masterfulmachinery/recipes/structure/mastermachine2.json @@ -0,0 +1,23 @@ +{ + "type": "masterfulmachinery:machine_structure", + "controllerId": "mastermachine", + "id": "mastermachine2_structure", + "blocks": [ + { + "pos":{ + "x": 0, + "y": -1, + "z": 0 + }, + "block": "minecraft:cobblestone" + }, + { + "pos":{ + "x": 0, + "y": -2, + "z": 0 + }, + "block": "minecraft:cobblestone" + } + ] +} \ No newline at end of file