Skip to content

Commit

Permalink
✨ feat: Added Gastronomicon integration.
Browse files Browse the repository at this point in the history
PicnicBasket is now whitelist based instead of hobjawed together.
SeedPlucker can not pick specific Gastronomicon seeds (if installed).
CulinaryGenerator can now use Gastronomicon foods (if installed).
GrowthChamber, and GrowthChamberMK2 can now produce the new tree types (Mangrove and Cherry).
  • Loading branch information
ProfElements committed Jan 20, 2024
1 parent e11fa59 commit 91eb847
Show file tree
Hide file tree
Showing 10 changed files with 425 additions and 329 deletions.
2 changes: 2 additions & 0 deletions src/main/java/me/profelements/dynatech/DynaTech.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import me.profelements.dynatech.items.tools.ElectricalStimulator;
import me.profelements.dynatech.items.tools.InventoryFilter;
import me.profelements.dynatech.listeners.ElectricalStimulatorListener;
import me.profelements.dynatech.listeners.IntegrationListener;
import me.profelements.dynatech.listeners.InventoryFilterListener;
import me.profelements.dynatech.listeners.PicnicBasketListener;
import me.profelements.dynatech.setup.DynaTechItemsSetup;
Expand Down Expand Up @@ -54,6 +55,7 @@ public void onEnable() {
new PicnicBasketListener(this, (PicnicBasket) DynaTechItems.PICNIC_BASKET.getItem());
new ElectricalStimulatorListener(this, (ElectricalStimulator) DynaTechItems.ELECTRICAL_STIMULATOR.getItem());
new InventoryFilterListener(this);
new IntegrationListener(this);

//Tasks
getServer().getScheduler().runTaskTimerAsynchronously(DynaTech.getInstance(), new ItemBandTask(), 0L, 5 * 20L);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

public abstract class AbstractElectricMachine extends AbstractMachine implements EnergyNetComponent {

protected List<MachineRecipe> recipes = new ArrayList<>();
public List<MachineRecipe> recipes = new ArrayList<>();

private int energyConsumedPerTick = -1;
private int energyCapacity = -1;
Expand Down Expand Up @@ -60,6 +60,11 @@ public int getSpeed() {
return processingSpeed;
}


public List<MachineRecipe> getRecipes() {
return recipes;
}

public final AbstractElectricMachine setCapacity(int capacity) {
Preconditions.checkArgument(capacity > 0, "The capacity must be greater then 0");

Expand Down
204 changes: 131 additions & 73 deletions src/main/java/me/profelements/dynatech/items/backpacks/PicnicBasket.java
Original file line number Diff line number Diff line change
@@ -1,73 +1,131 @@
package me.profelements.dynatech.items.backpacks;

import io.github.thebusybiscuit.exoticgarden.items.CustomFood;
import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup;
import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting;
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack;
import io.github.thebusybiscuit.slimefun4.api.recipes.RecipeType;
import io.github.thebusybiscuit.slimefun4.implementation.items.backpacks.SlimefunBackpack;
import me.profelements.dynatech.DynaTech;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;

public class PicnicBasket extends SlimefunBackpack {

private final List<Material> defaultBlacklist = new ArrayList<>();

private final ItemSetting<List<String>> blacklistedMaterials = new ItemSetting<>(this, "blacklisted-materials", ToStringList(getDefaultBlacklist()));

public PicnicBasket(int size, ItemGroup itemGroup, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(size, itemGroup, item, recipeType, recipe);

/*Maybe use Material.getMaterial() and send a set of strings*/

addItemSetting(blacklistedMaterials);
}

@Override
public boolean isItemAllowed(@Nonnull ItemStack item, @Nullable SlimefunItem itemAsSlimefunItem) {
if (DynaTech.isExoticGardenInstalled()) {
if (itemAsSlimefunItem instanceof CustomFood) {
return true;
} else {
return item.getType().isEdible() && !blacklistedMaterials.getValue().contains(item.getType().toString());
}
}
return item.getType().isEdible() && !blacklistedMaterials.getValue().contains(item.getType().toString());
}

private List<Material> getDefaultBlacklist() {
defaultBlacklist.add(Material.PUFFERFISH);
defaultBlacklist.add(Material.POISONOUS_POTATO);
defaultBlacklist.add(Material.SPIDER_EYE);
defaultBlacklist.add(Material.CHORUS_FRUIT);
defaultBlacklist.add(Material.ENCHANTED_GOLDEN_APPLE);
defaultBlacklist.add(Material.GOLDEN_APPLE);
defaultBlacklist.add(Material.ROTTEN_FLESH);

//Returns Stuff, maybe will figure this out later.
defaultBlacklist.add(Material.SUSPICIOUS_STEW);
defaultBlacklist.add(Material.MUSHROOM_STEW);
defaultBlacklist.add(Material.RABBIT_STEW);
defaultBlacklist.add(Material.BEETROOT_SOUP);
defaultBlacklist.add(Material.HONEY_BOTTLE);

return defaultBlacklist;
}

private List<String> ToStringList(List<Material> mats) {
List<String> materials = new ArrayList<>();

for (Material mat : mats) {
materials.add(mat.toString());
}

return materials;
}
}
package me.profelements.dynatech.items.backpacks;

import io.github.bakedlibs.dough.collections.Pair;
import io.github.thebusybiscuit.exoticgarden.items.CustomFood;
import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup;
import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting;
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack;
import io.github.thebusybiscuit.slimefun4.api.recipes.RecipeType;
import io.github.thebusybiscuit.slimefun4.implementation.items.backpacks.SlimefunBackpack;
import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils;
import me.profelements.dynatech.DynaTech;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PicnicBasket extends SlimefunBackpack {

public static Map<ItemStack, Pair<Integer, Float>> foods = new HashMap<>();

private final List<Material> defaultBlacklist = new ArrayList<>();

private final ItemSetting<List<String>> blacklistedMaterials = new ItemSetting<>(this, "blacklisted-materials", ToStringList(getDefaultBlacklist()));

public PicnicBasket(int size, ItemGroup itemGroup, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(size, itemGroup, item, recipeType, recipe);

/*Maybe use Material.getMaterial() and send a set of strings*/

addItemSetting(blacklistedMaterials);
}


@Override
public void postRegister() {
registerDefaultFoods();
}


@Override
public boolean isItemAllowed(@Nonnull ItemStack item, @Nullable SlimefunItem itemAsSlimefunItem) {
for (ItemStack stack : getFoods().keySet()) {
if (SlimefunUtils.isItemSimilar(stack, item, false, false)) {
return true;
} else {
continue;
}
}
return false;
}

private List<Material> getDefaultBlacklist() {
defaultBlacklist.add(Material.PUFFERFISH);
defaultBlacklist.add(Material.POISONOUS_POTATO);
defaultBlacklist.add(Material.SPIDER_EYE);
defaultBlacklist.add(Material.CHORUS_FRUIT);
defaultBlacklist.add(Material.ENCHANTED_GOLDEN_APPLE);
defaultBlacklist.add(Material.GOLDEN_APPLE);
defaultBlacklist.add(Material.ROTTEN_FLESH);

//Returns Stuff, maybe will figure this out later.
defaultBlacklist.add(Material.SUSPICIOUS_STEW);
defaultBlacklist.add(Material.MUSHROOM_STEW);
defaultBlacklist.add(Material.RABBIT_STEW);
defaultBlacklist.add(Material.BEETROOT_SOUP);
defaultBlacklist.add(Material.HONEY_BOTTLE);

return defaultBlacklist;
}

private List<String> ToStringList(List<Material> mats) {
List<String> materials = new ArrayList<>();

for (Material mat : mats) {
materials.add(mat.toString());
}

return materials;
}

@Nonnull
public static Map<ItemStack, Pair<Integer, Float>> getFoods() {
return foods;
}

private static void registerDefaultFoods() {
registerFood(new ItemStack(Material.APPLE), new Pair<Integer, Float>(4, 3F));
registerFood(new ItemStack(Material.MELON_SLICE), new Pair<Integer, Float>(2, 1F));
registerFood(new ItemStack(Material.SWEET_BERRIES), new Pair<Integer, Float>(2, 1F));
registerFood(new ItemStack(Material.GLOW_BERRIES), new Pair<Integer, Float>(2, 1F));
registerFood(new ItemStack(Material.CARROT), new Pair<>(3, 3F));
registerFood(new ItemStack(Material.GOLDEN_CARROT), new Pair<>(6, 15F));
registerFood(new ItemStack(Material.POTATO), new Pair<>(1, 1F));
registerFood(new ItemStack(Material.BAKED_POTATO), new Pair<>(5, 6F));
registerFood(new ItemStack(Material.BEETROOT), new Pair<>(1, 1F));
registerFood(new ItemStack(Material.DRIED_KELP), new Pair<>(1, 1F));
registerFood(new ItemStack(Material.BEEF), new Pair<>(3, 1F));
registerFood(new ItemStack(Material.COOKED_BEEF), new Pair<>(8, 13F));
registerFood(new ItemStack(Material.PORKCHOP), new Pair<>(3, 1F));
registerFood(new ItemStack(Material.COOKED_PORKCHOP), new Pair<>(8, 13F));
registerFood(new ItemStack(Material.MUTTON), new Pair<>(2, 1F));
registerFood(new ItemStack(Material.COOKED_MUTTON), new Pair<>(6, 9F));
registerFood(new ItemStack(Material.CHICKEN), new Pair<>(1, 1F));
registerFood(new ItemStack(Material.COOKED_CHICKEN), new Pair<>(6, 7F));
registerFood(new ItemStack(Material.RABBIT), new Pair<>(3, 1F));
registerFood(new ItemStack(Material.COOKED_RABBIT), new Pair<>(5, 6F));
registerFood(new ItemStack(Material.COD), new Pair<>(2, 1F));
registerFood(new ItemStack(Material.COOKED_COD), new Pair<>(5, 6F));
registerFood(new ItemStack(Material.SALMON), new Pair<>(2, 1F));
registerFood(new ItemStack(Material.COOKED_SALMON), new Pair<>(6, 9F));
registerFood(new ItemStack(Material.TROPICAL_FISH), new Pair<>(1, 1F));
registerFood(new ItemStack(Material.BREAD), new Pair<>(5, 6F));
registerFood(new ItemStack(Material.COOKIE), new Pair<>(2, 1F));
registerFood(new ItemStack(Material.CAKE), new Pair<>(14, 14F));
registerFood(new ItemStack(Material.PUMPKIN_PIE), new Pair<>(8, 5F));
}


public static void registerFood(ItemStack item, Pair<Integer, Float> pair) {
getFoods().put(item, pair);
}



}
Loading

0 comments on commit 91eb847

Please sign in to comment.