Skip to content

Commit

Permalink
implement Recipe API
Browse files Browse the repository at this point in the history
  • Loading branch information
Faithcaio committed Feb 23, 2020
1 parent 454e93d commit 8431c3b
Show file tree
Hide file tree
Showing 31 changed files with 868 additions and 822 deletions.
2 changes: 1 addition & 1 deletion SpongeAPI
Submodule SpongeAPI updated 22 files
+3 −3 src/main/java/org/spongepowered/api/block/entity/Banner.java
+2 −2 src/main/java/org/spongepowered/api/data/Keys.java
+68 −11 src/main/java/org/spongepowered/api/data/meta/BannerPatternLayer.java
+11 −0 src/main/java/org/spongepowered/api/item/FireworkEffect.java
+22 −0 src/main/java/org/spongepowered/api/item/inventory/ItemStack.java
+1 −1 src/main/java/org/spongepowered/api/item/inventory/ItemStackBuilderPopulators.java
+111 −8 src/main/java/org/spongepowered/api/item/recipe/Recipe.java
+141 −1 src/main/java/org/spongepowered/api/item/recipe/RecipeRegistry.java
+10 −0 src/main/java/org/spongepowered/api/item/recipe/RecipeType.java
+30 −0 src/main/java/org/spongepowered/api/item/recipe/RecipeTypes.java
+15 −70 src/main/java/org/spongepowered/api/item/recipe/crafting/CraftingRecipe.java
+0 −62 src/main/java/org/spongepowered/api/item/recipe/crafting/CraftingRecipeRegistry.java
+19 −85 src/main/java/org/spongepowered/api/item/recipe/crafting/Ingredient.java
+4 −4 src/main/java/org/spongepowered/api/item/recipe/crafting/RecipeResult.java
+11 −11 src/main/java/org/spongepowered/api/item/recipe/crafting/ShapedCraftingRecipe.java
+8 −24 src/main/java/org/spongepowered/api/item/recipe/crafting/ShapelessCraftingRecipe.java
+129 −0 src/main/java/org/spongepowered/api/item/recipe/crafting/SpecialCraftingRecipe.java
+87 −0 src/main/java/org/spongepowered/api/item/recipe/single/StoneCutterRecipe.java
+28 −21 src/main/java/org/spongepowered/api/item/recipe/smelting/SmeltingRecipe.java
+0 −58 src/main/java/org/spongepowered/api/item/recipe/smelting/SmeltingRecipeRegistry.java
+4 −12 src/main/java/org/spongepowered/api/registry/GameRegistry.java
+5 −5 src/main/java/org/spongepowered/api/util/TypeTokens.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,21 @@
package org.spongepowered.common.event.tracking.phase.packet.drag;

import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.crafting.ICraftingRecipe;
import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.network.IPacket;
import org.spongepowered.api.item.inventory.Inventory;
import org.spongepowered.api.item.inventory.crafting.CraftingInventory;
import org.spongepowered.api.item.inventory.query.QueryTypes;
import org.spongepowered.api.item.inventory.transaction.SlotTransaction;
import org.spongepowered.api.item.recipe.crafting.CraftingRecipe;
import org.spongepowered.api.world.World;
import org.spongepowered.common.bridge.inventory.container.TrackedContainerBridge;
import org.spongepowered.common.event.inventory.InventoryEventFactory;
import org.spongepowered.common.event.tracking.phase.packet.inventory.InventoryPacketContext;
import org.spongepowered.common.item.recipe.crafting.SpongeCraftingRecipeRegistry;
import org.spongepowered.common.util.Constants;

import java.util.List;
import java.util.Optional;

public abstract class DragInventoryStopState extends NamedInventoryState {

Expand Down Expand Up @@ -66,10 +67,12 @@ public static void unwindCraftPreview(InventoryPacketContext context) {
if (craftInv instanceof CraftingInventory) {
List<SlotTransaction> previewTransactions = ((TrackedContainerBridge) player.openContainer).bridge$getPreviewTransactions();
if (!previewTransactions.isEmpty()) {
CraftingRecipe recipe = SpongeCraftingRecipeRegistry
.getInstance().findMatchingRecipe(((CraftingInventory) craftInv).getCraftingGrid(), ((World) player.world)).orElse(null);
Optional<ICraftingRecipe> recipe = player.getServer().getRecipeManager().getRecipe(IRecipeType.CRAFTING,
(net.minecraft.inventory.CraftingInventory) ((CraftingInventory) craftInv).getCraftingGrid(),
player.world
);
InventoryEventFactory.callCraftEventPre(player, ((CraftingInventory) craftInv), previewTransactions.get(0),
recipe, player.openContainer, previewTransactions);
((CraftingRecipe) recipe.orElse(null)), player.openContainer, previewTransactions);
previewTransactions.clear();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public CraftingGridInventoryAdapter(Fabric fabric, CraftingGridInventoryLens roo

@Override
public Optional<CraftingRecipe> getRecipe(World world) {
return Sponge.getRegistry().getCraftingRecipeRegistry().findMatchingRecipe(this, checkNotNull(world, "world"));
return Sponge.getRegistry().getRecipeRegistry().findMatchingRecipe(this, checkNotNull(world, "world"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public static CraftingGridInventory toSpongeInventory(CraftingInventory inv) {
}


public static CraftingInventory toNativeInventory(CraftingGridInventory inv) {
public static <C extends IInventory> C toNativeInventory(Inventory inv) {
Fabric fabric = ((CraftingGridInventoryAdapter) inv).inventoryAdapter$getFabric();
for (Object inventory : fabric.fabric$allInventories()) {
if (inventory instanceof CraftingInventory) {
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,42 @@
*/
package org.spongepowered.common.item.recipe.crafting;

import net.minecraft.item.Item;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.Tag;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.ResourceLocation;
import org.spongepowered.api.CatalogKey;
import org.spongepowered.api.item.ItemType;

import java.util.Arrays;

import javax.annotation.Nullable;

public class IngredientUtil {

public static org.spongepowered.api.item.recipe.crafting.Ingredient fromNative(Ingredient ingredient) {
return ((org.spongepowered.api.item.recipe.crafting.Ingredient) (Object) ingredient);
return (org.spongepowered.api.item.recipe.crafting.Ingredient) (Object) ingredient;
}

public static Ingredient toNative(org.spongepowered.api.item.recipe.crafting.Ingredient ingredient) {
return DelegateIngredient.of(ingredient);
return (Ingredient) (Object) ingredient;

}

public static org.spongepowered.api.item.recipe.crafting.Ingredient of(ItemType... items) {
IItemProvider[] providers = Arrays.stream(items).map(item -> (IItemProvider) () -> ((Item) item)).toArray(IItemProvider[]::new);
return fromNative(Ingredient.fromItems(providers));
}

@Nullable
public static org.spongepowered.api.item.recipe.crafting.Ingredient of(CatalogKey tagKey) {
Tag<Item> itemTag = ItemTags.getCollection().get(((ResourceLocation) (Object) tagKey));
if (itemTag == null) {
return null;
}
return fromNative(Ingredient.fromTag(itemTag));
}

}
Loading

0 comments on commit 8431c3b

Please sign in to comment.