1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-06-26 07:03:22 +00:00

Move most recipe registration to JSON

We need this for 1.13+, so might as well get it over with.
This commit is contained in:
SquidDev 2018-12-27 12:16:11 +00:00
parent 26ba61097b
commit 618c534d81
13 changed files with 51 additions and 74 deletions

View File

@ -1,14 +1,15 @@
package dan200.computercraft.shared.common;
import com.google.gson.JsonObject;
import dan200.computercraft.shared.util.Colour;
import dan200.computercraft.shared.util.ColourTracker;
import dan200.computercraft.shared.util.ColourUtils;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.crafting.IRecipeFactory;
import net.minecraftforge.common.crafting.JsonContext;
import net.minecraftforge.registries.IForgeRegistryEntry;
import javax.annotation.Nonnull;
@ -98,16 +99,12 @@ public ItemStack getRecipeOutput()
return ItemStack.EMPTY;
}
@Nonnull
@Override
public NonNullList<ItemStack> getRemainingItems( @Nonnull InventoryCrafting inventoryCrafting )
public static class Factory implements IRecipeFactory
{
NonNullList<ItemStack> results = NonNullList.withSize( inventoryCrafting.getSizeInventory(), ItemStack.EMPTY );
for( int i = 0; i < results.size(); i++ )
@Override
public IRecipe parse( JsonContext jsonContext, JsonObject jsonObject )
{
ItemStack stack = inventoryCrafting.getStackInSlot( i );
results.set( i, ForgeHooks.getContainerItem( stack ) );
return new ColourableRecipe();
}
return results;
}
}

View File

@ -6,6 +6,7 @@
package dan200.computercraft.shared.media.recipes;
import com.google.gson.JsonObject;
import dan200.computercraft.shared.media.items.ItemDiskLegacy;
import dan200.computercraft.shared.util.Colour;
import dan200.computercraft.shared.util.ColourTracker;
@ -14,9 +15,9 @@
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.crafting.IRecipeFactory;
import net.minecraftforge.common.crafting.JsonContext;
import net.minecraftforge.oredict.OreIngredient;
import net.minecraftforge.registries.IForgeRegistryEntry;
@ -103,16 +104,12 @@ public ItemStack getRecipeOutput()
return ItemDiskLegacy.createFromIDAndColour( -1, null, Colour.Blue.getHex() );
}
@Nonnull
@Override
public NonNullList<ItemStack> getRemainingItems( @Nonnull InventoryCrafting inventoryCrafting )
public static class Factory implements IRecipeFactory
{
NonNullList<ItemStack> results = NonNullList.withSize( inventoryCrafting.getSizeInventory(), ItemStack.EMPTY );
for( int i = 0; i < results.size(); i++ )
@Override
public IRecipe parse( JsonContext jsonContext, JsonObject jsonObject )
{
ItemStack stack = inventoryCrafting.getStackInSlot( i );
results.set( i, ForgeHooks.getContainerItem( stack ) );
return new DiskRecipe();
}
return results;
}
}

View File

@ -6,14 +6,15 @@
package dan200.computercraft.shared.media.recipes;
import com.google.gson.JsonObject;
import dan200.computercraft.shared.media.items.ItemPrintout;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.crafting.IRecipeFactory;
import net.minecraftforge.common.crafting.JsonContext;
import net.minecraftforge.oredict.OreIngredient;
import net.minecraftforge.registries.IForgeRegistryEntry;
@ -158,16 +159,12 @@ else if( leather.apply( stack ) && !leatherFound )
return ItemStack.EMPTY;
}
@Nonnull
@Override
public NonNullList<ItemStack> getRemainingItems( @Nonnull InventoryCrafting inventoryCrafting )
public static class Factory implements IRecipeFactory
{
NonNullList<ItemStack> results = NonNullList.withSize( inventoryCrafting.getSizeInventory(), ItemStack.EMPTY );
for( int i = 0; i < results.size(); i++ )
@Override
public IRecipe parse( JsonContext jsonContext, JsonObject jsonObject )
{
ItemStack stack = inventoryCrafting.getStackInSlot( i );
results.set( i, ForgeHooks.getContainerItem( stack ) );
return new PrintoutRecipe();
}
return results;
}
}

View File

@ -6,6 +6,7 @@
package dan200.computercraft.shared.pocket.recipes;
import com.google.gson.JsonObject;
import dan200.computercraft.ComputerCraft;
import dan200.computercraft.api.pocket.IPocketUpgrade;
import dan200.computercraft.shared.computer.core.ComputerFamily;
@ -14,9 +15,9 @@
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.crafting.IRecipeFactory;
import net.minecraftforge.common.crafting.JsonContext;
import net.minecraftforge.registries.IForgeRegistryEntry;
import javax.annotation.Nonnull;
@ -126,16 +127,12 @@ else if( !item.isEmpty() )
return PocketComputerItemFactory.create( computerID, label, colour, family, upgrade );
}
@Nonnull
@Override
public NonNullList<ItemStack> getRemainingItems( @Nonnull InventoryCrafting inventoryCrafting )
public static class Factory implements IRecipeFactory
{
NonNullList<ItemStack> results = NonNullList.withSize( inventoryCrafting.getSizeInventory(), ItemStack.EMPTY );
for( int i = 0; i < results.size(); i++ )
@Override
public IRecipe parse( JsonContext jsonContext, JsonObject jsonObject )
{
ItemStack stack = inventoryCrafting.getStackInSlot( i );
results.set( i, ForgeHooks.getContainerItem( stack ) );
return new PocketComputerUpgradeRecipe();
}
return results;
}
}

View File

@ -313,7 +313,6 @@ public void registerItems( RegistryEvent.Register<Item> event )
public void registerRecipes( RegistryEvent.Register<IRecipe> event )
{
IForgeRegistry<IRecipe> registry = event.getRegistry();
registry.register( new TurtleUpgradeRecipe().setRegistryName( new ResourceLocation( "computercraft:turtle" ) ) );
// Add a bunch of impostor recipes
// TODO: Figure out a way to do this in a "nice" way.

View File

@ -12,7 +12,6 @@
import dan200.computercraft.core.computer.MainThread;
import dan200.computercraft.shared.command.CommandComputerCraft;
import dan200.computercraft.shared.command.ContainerViewComputer;
import dan200.computercraft.shared.common.ColourableRecipe;
import dan200.computercraft.shared.common.DefaultBundledRedstoneProvider;
import dan200.computercraft.shared.common.TileGeneric;
import dan200.computercraft.shared.computer.blocks.BlockCommandComputer;
@ -31,7 +30,6 @@
import dan200.computercraft.shared.media.items.ItemDiskLegacy;
import dan200.computercraft.shared.media.items.ItemPrintout;
import dan200.computercraft.shared.media.items.ItemTreasureDisk;
import dan200.computercraft.shared.media.recipes.DiskRecipe;
import dan200.computercraft.shared.media.recipes.PrintoutRecipe;
import dan200.computercraft.shared.network.ComputerCraftPacket;
import dan200.computercraft.shared.peripheral.commandblock.CommandBlockPeripheralProvider;
@ -57,7 +55,10 @@
import dan200.computercraft.shared.pocket.recipes.PocketComputerUpgradeRecipe;
import dan200.computercraft.shared.turtle.blocks.TileTurtle;
import dan200.computercraft.shared.turtle.inventory.ContainerTurtle;
import dan200.computercraft.shared.util.*;
import dan200.computercraft.shared.util.Colour;
import dan200.computercraft.shared.util.CreativeTabMain;
import dan200.computercraft.shared.util.ImpostorRecipe;
import dan200.computercraft.shared.util.ImpostorShapelessRecipe;
import dan200.computercraft.shared.wired.CapabilityWiredElement;
import net.minecraft.block.Block;
import net.minecraft.command.CommandHandler;
@ -67,7 +68,6 @@
import net.minecraft.init.Items;
import net.minecraft.inventory.Container;
import net.minecraft.item.Item;
import net.minecraft.item.ItemRecord;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.Ingredient;
@ -96,8 +96,6 @@
import net.minecraftforge.registries.IForgeRegistry;
import pl.asie.charset.ModCharset;
import javax.annotation.Nonnull;
public abstract class ComputerCraftProxyCommon implements IComputerCraftProxy
{
@Override
@ -268,12 +266,6 @@ public void registerRecipes( RegistryEvent.Register<IRecipe> event )
{
IForgeRegistry<IRecipe> registry = event.getRegistry();
// Disk
registry.register( new DiskRecipe().setRegistryName( new ResourceLocation( "computercraft:disk" ) ) );
// Colourable items (turtles, disks)
registry.register( new ColourableRecipe().setRegistryName( new ResourceLocation( "computercraft:colour" ) ) );
// Impostor Disk recipes (to fool NEI)
ItemStack paper = new ItemStack( Items.PAPER, 1 );
ItemStack redstone = new ItemStack( Items.REDSTONE, 1 );
@ -305,12 +297,6 @@ public void registerRecipes( RegistryEvent.Register<IRecipe> event )
);
}
// Printout
registry.register( new PrintoutRecipe().setRegistryName( new ResourceLocation( "computercraft:printout" ) ) );
// Wireless Pocket Computer
registry.register( new PocketComputerUpgradeRecipe().setRegistryName( new ResourceLocation( "computercraft:pocket_computer_upgrade" ) ) );
// Impostor Pocket Computer recipes (to fool NEI)
ItemStack pocketComputer = PocketComputerItemFactory.create( -1, null, -1, ComputerFamily.Normal, null );
ItemStack advancedPocketComputer = PocketComputerItemFactory.create( -1, null, -1, ComputerFamily.Advanced, null );

View File

@ -6,6 +6,7 @@
package dan200.computercraft.shared.turtle.recipes;
import com.google.gson.JsonObject;
import dan200.computercraft.ComputerCraft;
import dan200.computercraft.api.turtle.ITurtleUpgrade;
import dan200.computercraft.api.turtle.TurtleSide;
@ -16,20 +17,16 @@
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.crafting.IRecipeFactory;
import net.minecraftforge.common.crafting.JsonContext;
import net.minecraftforge.registries.IForgeRegistryEntry;
import javax.annotation.Nonnull;
public class TurtleUpgradeRecipe extends IForgeRegistryEntry.Impl<IRecipe> implements IRecipe
{
public TurtleUpgradeRecipe()
{
}
@Override
public boolean canFit( int x, int y )
{
@ -186,16 +183,12 @@ else if( !turtle.isEmpty() && rightItem.isEmpty() )
return TurtleItemFactory.create( computerID, label, colour, family, upgrades[0], upgrades[1], fuelLevel, overlay );
}
@Nonnull
@Override
public NonNullList<ItemStack> getRemainingItems( @Nonnull InventoryCrafting inventoryCrafting )
public static class Factory implements IRecipeFactory
{
NonNullList<ItemStack> results = NonNullList.withSize( inventoryCrafting.getSizeInventory(), ItemStack.EMPTY );
for( int i = 0; i < results.size(); i++ )
@Override
public IRecipe parse( JsonContext jsonContext, JsonObject jsonObject )
{
ItemStack stack = inventoryCrafting.getStackInSlot( i );
results.set( i, ForgeHooks.getContainerItem( stack ) );
return new TurtleUpgradeRecipe();
}
return results;
}
}

View File

@ -2,8 +2,14 @@
"recipes": {
"impostor_shaped": "dan200.computercraft.shared.util.ImpostorRecipe$Factory",
"impostor_shapeless": "dan200.computercraft.shared.util.ImpostorShapelessRecipe$Factory",
"colour": "dan200.computercraft.shared.common.ColourableRecipe$Factory",
"computer_upgrade": "dan200.computercraft.shared.computer.recipe.ComputerFamilyRecipe$Factory",
"disk": "dan200.computercraft.shared.media.recipes.DiskRecipe$Factory",
"pocket_computer_upgrade": "dan200.computercraft.shared.pocket.recipes.PocketComputerUpgradeRecipe$Factory",
"printout": "dan200.computercraft.shared.media.recipes.PrintoutRecipe$Factory",
"turtle": "dan200.computercraft.shared.turtle.recipes.TurtleRecipe$Factory",
"computer_upgrade": "dan200.computercraft.shared.computer.recipe.ComputerFamilyRecipe$Factory"
"turtle_upgrade": "dan200.computercraft.shared.turtle.recipes.TurtleUpgradeRecipe$Factory"
},
"ingredients": {
"computer": "dan200.computercraft.shared.computer.recipe.ComputerIngredient$Factory"

View File

@ -0,0 +1 @@
{ "type": "computercraft:colour" }

View File

@ -0,0 +1 @@
{ "type": "computercraft:disk" }

View File

@ -0,0 +1 @@
{ "type": "computercraft:pocket_computer_upgrade" }

View File

@ -0,0 +1 @@
{ "type": "computercraft:printout" }

View File

@ -0,0 +1 @@
{ "type": "computercraft:turtle_upgrade" }