Skip to content

Commit

Permalink
Infinite Fuel & Steak Config Options (fixes #64)
Browse files Browse the repository at this point in the history
  • Loading branch information
DonovanDMC committed Jul 18, 2022
1 parent e6cc640 commit a728c30
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 20 deletions.
2 changes: 1 addition & 1 deletion scripts/publish
Submodule publish updated 1 files
+6 −6 package-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
"block.projectexpansion.white_fuel_block": "White Fuel Block",
"block.projectexpansion.arcane_table": "Arcane Table",
"block.projectexpansion.transmutation_interface": "Transmutation Interface",
"block.projectexpansion.transmutation_interface.tooltip": "This can be used with compatible mods like Refined Storage to access your transmutation inventory.",
"block.projectexpansion.transmutation_interface.tooltip": "This can be used with compatible mods like Applied Energistics to access your transmutation inventory.",
"block.projectexpansion.power_flower.tooltip": "Generates EMC once per %s tick%s. (20/second)",
"block.projectexpansion.power_flower.emc": "Produced EMC: %s/s",
"block.projectexpansion.basic_power_flower": "Basic Power Flower [MK 1]",
Expand Down Expand Up @@ -165,6 +165,12 @@
"gui.projectexpansion.config.relay_bonus_multiplier.desc": "Multiplies the bonus of Relays.",
"gui.projectexpansion.config.relay_transfer_multiplier": "Relay Transfer Multiplier",
"gui.projectexpansion.config.relay_transfer_multiplier.desc": "Multiplies the transfer limit of Relays.",
"gui.projectexpansion.config.infinite_fuel_cost": "Infinite Fuel Cost",
"gui.projectexpansion.config.infinite_fuel_cost.desc": "The cost of using the infinite fuel item.",
"gui.projectexpansion.config.infinite_fuel_burn_time": "Infinite Fuel Burn Time",
"gui.projectexpansion.config.infinite_fuel_burn_time.desc": "The ticks each usage of the infinite fuel item will give.",
"gui.projectexpansion.config.infinite_steak_cost": "Infinite Steak Cost",
"gui.projectexpansion.config.infinite_steak_cost.desc": "The cost of using the infinite steak item.",
"item.projectexpansion.compressed_collector.tooltip": "Crafting Ingredient",
"item.projectexpansion.basic_compressed_collector": "Basic Compressed Collector [MK 1]",
"item.projectexpansion.dark_compressed_collector": "Dark Compressed Collector [MK 2]",
Expand Down Expand Up @@ -219,6 +225,7 @@
"item.projectexpansion.final_star_shard": "Final Star Shard",
"item.projectexpansion.final_star_shard.tooltip": "Crafting ingredient.",
"item.projectexpansion.final_star": "Final Star",
"item.projectexpansion.final_star.tooltip": "Currently exists only to show off, future usages are planned.",
"item.projectexpansion.infinite_fuel": "Infinite Fuel",
"item.projectexpansion.infinite_fuel.tooltip": "This item will not be consumed, fuel will be provided via your emc.",
"item.projectexpansion.infinite_fuel.not_enough_emc": "You do not have enough emc to use this, you need %s.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,8 @@ public final class Config {
public static final ForgeConfigSpec.ConfigValue<Integer> powerflowerMultiplier = Builder.translation("gui.projectexpansion.config.powerflower_multiplier.desc").define("powerflowerMultiplier", 1);
public static final ForgeConfigSpec.ConfigValue<Integer> relayBonusMultiplier = Builder.translation("gui.projectexpansion.config.relay_bonus_multiplier.desc").define("relayBonusMultiplier", 1);
public static final ForgeConfigSpec.ConfigValue<Integer> relayTransferMultiplier = Builder.translation("gui.projectexpansion.config.relay_transfer_multiplier.desc").define("relayTransferMultiplier", 1);
public static final ForgeConfigSpec.ConfigValue<Integer> infiniteFuelCost = Builder.translation("gui.projectexpansion.config.infinite_fuel_cost.desc").define("infiniteFuelCost", 128);
public static final ForgeConfigSpec.ConfigValue<Integer> infiniteFuelBurnTime = Builder.translation("gui.projectexpansion.config.infinite_fuel_burn_time.desc").define("infiniteFuelBurnTime", 1600);
public static final ForgeConfigSpec.ConfigValue<Integer> infiniteSteakCost = Builder.translation("gui.projectexpansion.config.infinite_steak_cost.desc").define("infiniteSteakCost", 64);
static { Spec = Builder.build(); }
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cool.furry.mc.forge.projectexpansion.item;

import cool.furry.mc.forge.projectexpansion.Main;
import cool.furry.mc.forge.projectexpansion.config.Config;
import cool.furry.mc.forge.projectexpansion.util.ColorStyle;
import cool.furry.mc.forge.projectexpansion.util.EMCFormat;
import cool.furry.mc.forge.projectexpansion.util.Util;
Expand All @@ -9,7 +10,10 @@
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.*;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
Expand All @@ -19,11 +23,8 @@
import java.math.BigInteger;
import java.util.List;
import java.util.UUID;
import java.util.function.Supplier;

public class ItemInfiniteFuel extends Item {
public static final Supplier<BigInteger> COST = () -> BigInteger.valueOf(ProjectEAPI.getEMCProxy().getValue(Items.COAL));
public static final int BURN_TIME = 1600;

public ItemInfiniteFuel() {
super(new Item.Properties().stacksTo(1).rarity(Rarity.RARE).tab(Main.tab));
Expand All @@ -34,15 +35,14 @@ public ItemInfiniteFuel() {
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> list, TooltipFlag flag) {
super.appendHoverText(stack, level, list, flag);
list.add(new TranslatableComponent("item.projectexpansion.infinite_fuel.tooltip").setStyle(ColorStyle.GRAY));
list.add(new TranslatableComponent("text.projectexpansion.cost", EMCFormat.getComponent(BURN_TIME).setStyle(ColorStyle.GRAY)).setStyle(ColorStyle.RED));
list.add(new TranslatableComponent("text.projectexpansion.cost", EMCFormat.getComponent(Config.infiniteFuelCost.get()).setStyle(ColorStyle.GRAY)).setStyle(ColorStyle.RED));
}

@Override
public int getBurnTime(ItemStack stack, @Nullable RecipeType<?> recipeType) {
@Nullable UUID owner = stack.getTag() == null ? null : stack.getTag().getUUID("Owner");
if (owner == null)
return 0;
return ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(owner).getEmc().compareTo(COST.get()) < 0 ? 0 : BURN_TIME;
if (owner == null) return 0;
return (Config.infiniteFuelCost.get() == 0 || Config.infiniteFuelBurnTime.get() == 0) ? 0 : ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(owner).getEmc().compareTo(BigInteger.valueOf(Config.infiniteFuelCost.get())) < 0 ? 0 : Config.infiniteFuelBurnTime.get();
}

@Override
Expand All @@ -57,9 +57,8 @@ public ItemStack getContainerItem(ItemStack stack) {
return stack;
ServerPlayer player = Util.getPlayer(owner);
IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(owner);
provider.setEmc(provider.getEmc().subtract(COST.get()));
if (player != null)
provider.syncEmc(player);
provider.setEmc(provider.getEmc().subtract(BigInteger.valueOf(Config.infiniteFuelCost.get())));
if (player != null) provider.syncEmc(player);
return stack;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cool.furry.mc.forge.projectexpansion.item;

import cool.furry.mc.forge.projectexpansion.Main;
import cool.furry.mc.forge.projectexpansion.config.Config;
import cool.furry.mc.forge.projectexpansion.util.ColorStyle;
import cool.furry.mc.forge.projectexpansion.util.EMCFormat;
import moze_intel.projecte.api.ProjectEAPI;
Expand All @@ -22,10 +23,8 @@
import javax.annotation.Nullable;
import java.math.BigInteger;
import java.util.List;
import java.util.function.Supplier;

public class ItemInfiniteSteak extends Item {
public static final Supplier<BigInteger> COST = () -> BigInteger.valueOf(ProjectEAPI.getEMCProxy().getValue(Items.COOKED_BEEF));

public ItemInfiniteSteak() {
super(new Item.Properties().stacksTo(1).rarity(Rarity.RARE).tab(Main.tab));
Expand All @@ -36,7 +35,7 @@ public ItemInfiniteSteak() {
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> list, TooltipFlag flag) {
super.appendHoverText(stack, level, list, flag);
list.add(new TranslatableComponent("item.projectexpansion.infinite_steak.tooltip").setStyle(ColorStyle.GRAY));
list.add(new TranslatableComponent("text.projectexpansion.cost", EMCFormat.getComponent(COST.get()).setStyle(ColorStyle.GRAY)).setStyle(ColorStyle.RED));
list.add(new TranslatableComponent("text.projectexpansion.cost", EMCFormat.getComponent(Config.infiniteSteakCost.get()).setStyle(ColorStyle.GRAY)).setStyle(ColorStyle.RED));
}

@Override
Expand All @@ -59,7 +58,7 @@ public FoodProperties getFoodProperties(ItemStack stack, @Nullable LivingEntity
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand);
// TODO: wolves???
if (!player.canEat(false) || ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(player.getUUID()).getEmc().compareTo(COST.get()) < 0) return InteractionResultHolder.fail(stack);
if (!player.canEat(false) || Config.infiniteSteakCost.get() == 0 || ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(player.getUUID()).getEmc().compareTo(BigInteger.valueOf(Config.infiniteSteakCost.get())) < 0) return InteractionResultHolder.fail(stack);
player.startUsingItem(hand);
return InteractionResultHolder.sidedSuccess(stack, level.isClientSide);
}
Expand All @@ -68,9 +67,9 @@ public InteractionResultHolder<ItemStack> use(Level level, Player player, Intera
public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity entity) {
if (!(entity instanceof ServerPlayer player) || level.isClientSide) return stack;
IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(player.getUUID());
BigInteger emc = provider.getEmc().subtract(COST.get());
BigInteger emc = provider.getEmc().subtract(BigInteger.valueOf(Config.infiniteSteakCost.get()));
if (emc.compareTo(BigInteger.ZERO) < 0) {
player.displayClientMessage(new TranslatableComponent("item.projectexpansion.infinite_steak.not_enough_emc", new TextComponent(COST.get().toString())).setStyle(ColorStyle.RED), true);
player.displayClientMessage(new TranslatableComponent("item.projectexpansion.infinite_steak.not_enough_emc", new TextComponent(Config.infiniteSteakCost.get().toString())).setStyle(ColorStyle.RED), true);
return stack;
}
provider.setEmc(emc);
Expand Down

0 comments on commit a728c30

Please sign in to comment.