Skip to content

Instantly share code, notes, and snippets.

@ryantheleach
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryantheleach/b55f98e7c27dc577093e to your computer and use it in GitHub Desktop.
Save ryantheleach/b55f98e7c27dc577093e to your computer and use it in GitHub Desktop.
package org.spongepowered;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.inject.Inject;
import org.spongepowered.api.Game;
import org.spongepowered.api.GameRegistry;
import org.spongepowered.api.data.DataManipulatorBuilder;
import org.spongepowered.api.data.manipulators.DisplayNameData;
import org.spongepowered.api.data.manipulators.entities.CareerData;
import org.spongepowered.api.data.manipulators.entities.InvulnerabilityData;
import org.spongepowered.api.data.manipulators.entities.TradeOfferData;
import org.spongepowered.api.data.manipulators.items.LoreData;
import org.spongepowered.api.data.properties.FoodRestorationProperty;
import org.spongepowered.api.data.types.Careers;
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.entity.EntityTypes;
import org.spongepowered.api.event.Subscribe;
import org.spongepowered.api.event.entity.EntitySpawnEvent;
import org.spongepowered.api.event.state.InitializationEvent;
import org.spongepowered.api.item.ItemType;
import org.spongepowered.api.item.ItemTypes;
import org.spongepowered.api.item.inventory.ItemStack;
import org.spongepowered.api.item.inventory.ItemStackBuilder;
import org.spongepowered.api.item.merchant.TradeOfferBuilder;
import org.spongepowered.api.item.recipe.RecipeRegistry;
import org.spongepowered.api.item.recipe.Recipes;
import org.spongepowered.api.item.recipe.ShapelessRecipe;
import org.spongepowered.api.item.recipe.ShapelessRecipeBuilder;
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.text.Texts;
import org.spongepowered.api.text.format.TextColors;
import org.spongepowered.api.text.format.TextStyles;
import java.util.*;
import static org.spongepowered.api.text.Texts.*;
import static org.spongepowered.api.text.format.TextColors.*;
@Plugin(id = "stonesoup", name = "StoneSoup", version = "0.1")
public class StoneSoup {
@Inject private Game game;
private RecipeRegistry crafting;
@Subscribe
public void onSpawn(InitializationEvent init) {
GameRegistry reg = game.getRegistry();
ItemStackBuilder itemB = reg.getItemBuilder();
Optional<DataManipulatorBuilder<LoreData>> loreB = reg.getManipulatorRegistry().getBuilder(LoreData.class);
Optional<DataManipulatorBuilder<DisplayNameData>> nameB = reg.getManipulatorRegistry().getBuilder(DisplayNameData.class);
LoreData lore;
DisplayNameData name;
if (loreB.isPresent() && nameB.isPresent()) {
lore = loreB.get().create();
name = nameB.get().create();
} else {
throw new RuntimeException("LoreBuilder Not Available");
}
lore.add(Texts.of(TextColors.AQUA, "Hot Water!"));
ItemStack bowl = itemB.itemType(ItemTypes.BOWL)
.build();
itemB.reset();
ItemStack water = itemB.itemType(ItemTypes.WATER_BUCKET)
.build();
itemB.reset();
ItemStack hotWater = itemB.itemType(ItemTypes.MUSHROOM_STEW)
.quantity(4)
.itemData(lore)
.itemData(name)
.build();
ShapelessRecipe recipe = Recipes.shapelessBuilder()
.addIngredient(bowl)
.addIngredient(water)
.addResult(hotWater)
.build();
crafting = game.getRegistry().getRecipeRegistry();
crafting.register(recipe);
Collection<ItemType> allItems = reg.getAllOf(ItemType.class);
for(ItemType itemType : allItems){
//if is traditional food.
if(itemType.getDefaultProperty(FoodRestorationProperty.class).isPresent()){
LoreData resultLore = loreB.get().create();
resultLore.add(Texts.of(itemType.getName()));
ItemStack food = itemB.reset()
.itemType(itemType)
.quantity(1)
.build();
ItemStack result = itemB.reset()
.fromItemStack(hotWater)
.itemData(resultLore)
.build();
ShapelessRecipe shapelessRecipe = Recipes.shapelessBuilder()
.addIngredient(food)
.addIngredient(hotWater)
.addResult(result)
.build();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment