Implemented Configs (Sectioned them out in advance...)

This commit is contained in:
Michael Hillcox 2020-11-29 16:58:41 +00:00
parent 9ca86b2937
commit 500117bb7a
No known key found for this signature in database
GPG key ID: 971C5B254742488F
6 changed files with 73 additions and 5 deletions

View file

@ -1,12 +1,15 @@
package de.ellpeck.actuallyadditions.common;
import de.ellpeck.actuallyadditions.common.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.common.config.Config;
import de.ellpeck.actuallyadditions.common.items.ActuallyItems;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@ -27,6 +30,10 @@ public class ActuallyAdditions {
};
public ActuallyAdditions() {
ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Config.SERVER_CONFIG);
ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, Config.CLIENT_CONFIG);
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.COMMON_CONFIG);
IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus();
ActuallyBlocks.BLOCKS.register(eventBus);

View file

@ -0,0 +1,18 @@
package de.ellpeck.actuallyadditions.common.config;
import net.minecraftforge.common.ForgeConfigSpec;
import static net.minecraftforge.common.ForgeConfigSpec.Builder;
public class Config {
protected static final Builder SERVER_BUILDER = new Builder();
protected static final Builder CLIENT_BUILDER = new Builder();
protected static final Builder COMMON_BUILDER = new Builder();
public static final GeneralConfig GENERAL = new GeneralConfig();
public static final ItemConfig ITEM_CONFIG = new ItemConfig();
public static final ForgeConfigSpec SERVER_CONFIG = SERVER_BUILDER.build();
public static final ForgeConfigSpec CLIENT_CONFIG = CLIENT_BUILDER.build();
public static final ForgeConfigSpec COMMON_CONFIG = COMMON_BUILDER.build();
}

View file

@ -0,0 +1,18 @@
package de.ellpeck.actuallyadditions.common.config;
import static de.ellpeck.actuallyadditions.common.config.Config.*;
import static net.minecraftforge.common.ForgeConfigSpec.*;
public class GeneralConfig {
public final BooleanValue advancedInfo;
public GeneralConfig() {
CLIENT_BUILDER.comment("Actually Additions General Config").push("general");
advancedInfo = CLIENT_BUILDER
.comment("Shows advanced item info when holding control on every item")
.define("Advanced Info", true);
CLIENT_BUILDER.pop();
}
}

View file

@ -0,0 +1,24 @@
package de.ellpeck.actuallyadditions.common.config;
import static de.ellpeck.actuallyadditions.common.config.Config.COMMON_BUILDER;
import static net.minecraftforge.common.ForgeConfigSpec.IntValue;
public class ItemConfig {
public final IntValue teleportStaffCost;
public final IntValue teleportStaffMaxEnergy;
public ItemConfig() {
COMMON_BUILDER.comment("Item Config Options").push("items");
teleportStaffCost = COMMON_BUILDER
.comment(
"The base cost of the Teleport Staff (this is used to calculate the cost per distances as well)",
"Don't assign this value higher than the Teleport Staffs max energy!"
)
.defineInRange("Teleport Staff Base Cost", 200, 0, 100000);
teleportStaffMaxEnergy = COMMON_BUILDER
.comment("The max amount of Crystal Flux stored in the Teleport Staff")
.defineInRange("Teleport Staff Max Energy", 250000, 0, 1000000);
}
}

View file

@ -1,5 +1,6 @@
package de.ellpeck.actuallyadditions.common.items.useables;
import de.ellpeck.actuallyadditions.common.config.Config;
import de.ellpeck.actuallyadditions.common.items.CrystalFluxItem;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
@ -13,12 +14,11 @@ import net.minecraft.world.World;
import net.minecraftforge.energy.CapabilityEnergy;
public class TeleportStaffItem extends CrystalFluxItem {
private static final int BASE_COST_PER_USE = 200;
public TeleportStaffItem() {
super(baseProps(), () -> 250000);
super(baseProps(), Config.ITEM_CONFIG.teleportStaffMaxEnergy::get);
}
// todo: come back and clean this up
@Override
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, Hand hand) {
ItemStack stack = player.getHeldItem(hand);
@ -37,7 +37,8 @@ public class TeleportStaffItem extends CrystalFluxItem {
Vector3f centerOfHit = new Vector3f(toPos.getX(), toPos.getY(), toPos.getZ());
centerOfHit.add(.5f, (blockTrace.getFace().getAxis() == Direction.Axis.Y ? .5f : 0), .5f);
int energyCost = BASE_COST_PER_USE + (int) (BASE_COST_PER_USE * (player.getDistanceSq(toPos.getX(), toPos.getY(), toPos.getZ()) / 100));
int baseCost = Config.ITEM_CONFIG.teleportStaffCost.get();
int energyCost = baseCost + (int) (baseCost * (player.getDistanceSq(toPos.getX(), toPos.getY(), toPos.getZ()) / 100));
boolean canUse = stack.getCapability(CapabilityEnergy.ENERGY).map(e -> e.getEnergyStored() >= energyCost).orElse(false);
if (!canUse) {

View file

@ -2,7 +2,7 @@ package de.ellpeck.actuallyadditions.common.utilities;
public class VisualHelper {
/**
* Stolen from Ell's original code, because lazy. What does it do? Something with wheels? (It's an hsb selector)
* Stolen from Ell's original code, because lazy. What does it do? Something with wheels? (It's an RGB selector)
*/
public static float[] getWheelColor(float pos) {
if (pos < 85.0f) { return new float[] { pos * 3.0F, 255.0f - pos * 3.0f, 0.0f }; }