mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-26 00:38:35 +01:00
Added Configuration GUI
This commit is contained in:
parent
1387114a8c
commit
8636a92df0
12 changed files with 102 additions and 103 deletions
|
@ -33,7 +33,7 @@ import ellpeck.actuallyadditions.tile.TileEntityBase;
|
|||
import ellpeck.actuallyadditions.util.ModUtil;
|
||||
import ellpeck.actuallyadditions.util.Util;
|
||||
|
||||
@Mod(modid = ModUtil.MOD_ID, name = ModUtil.NAME, version = ModUtil.VERSION, canBeDeactivated = false)
|
||||
@Mod(modid = ModUtil.MOD_ID, name = ModUtil.NAME, version = ModUtil.VERSION, canBeDeactivated = false, guiFactory = "ellpeck.actuallyadditions.config.GuiFactory")
|
||||
public class ActuallyAdditions{
|
||||
|
||||
@Instance(ModUtil.MOD_ID)
|
||||
|
@ -46,7 +46,7 @@ public class ActuallyAdditions{
|
|||
public void preInit(FMLPreInitializationEvent event){
|
||||
ModUtil.LOGGER.info("Starting PreInitialization Phase...");
|
||||
|
||||
ConfigurationHandler.init(event.getSuggestedConfigurationFile());
|
||||
new ConfigurationHandler(event.getSuggestedConfigurationFile());
|
||||
PacketHandler.init();
|
||||
InitToolMaterials.init();
|
||||
InitArmorMaterials.init();
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package ellpeck.actuallyadditions.config;
|
||||
|
||||
import cpw.mods.fml.client.event.ConfigChangedEvent;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import ellpeck.actuallyadditions.util.ModUtil;
|
||||
import ellpeck.actuallyadditions.util.Util;
|
||||
import net.minecraftforge.common.config.Configuration;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -9,22 +12,31 @@ public class ConfigurationHandler{
|
|||
|
||||
public static final String ISSUES_WARNING = " [THIS COULD CAUSE ISSUES, CHANGE AT YOUR OWN RISK!]";
|
||||
|
||||
public static void init(File configFile){
|
||||
public static Configuration config;
|
||||
|
||||
public ConfigurationHandler(File configFile){
|
||||
ModUtil.LOGGER.info("Grabbing Configurations...");
|
||||
Configuration config = new Configuration(configFile);
|
||||
|
||||
try{
|
||||
config.load();
|
||||
ConfigValues.defineConfigValues(config);
|
||||
}
|
||||
catch(Exception e){
|
||||
ModUtil.LOGGER.error("Loading the Config File failed!", e);
|
||||
}
|
||||
finally{
|
||||
if(config.hasChanged()){
|
||||
config.save();
|
||||
}
|
||||
}
|
||||
Util.registerEvent(this);
|
||||
|
||||
if(config == null){
|
||||
config = new Configuration(configFile);
|
||||
loadConfig();
|
||||
}
|
||||
}
|
||||
|
||||
private static void loadConfig(){
|
||||
ConfigValues.defineConfigValues(config);
|
||||
|
||||
if(config.hasChanged()){
|
||||
config.save();
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onConfigurationChangedEvent(ConfigChangedEvent.OnConfigChangedEvent event){
|
||||
if (event.modID.equalsIgnoreCase(ModUtil.MOD_ID)){
|
||||
loadConfig();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package ellpeck.actuallyadditions.config;
|
||||
|
||||
import cpw.mods.fml.client.config.GuiConfig;
|
||||
import cpw.mods.fml.client.config.IConfigElement;
|
||||
import ellpeck.actuallyadditions.util.ModUtil;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraftforge.common.config.ConfigCategory;
|
||||
import net.minecraftforge.common.config.ConfigElement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiConfiguration extends GuiConfig{
|
||||
|
||||
public GuiConfiguration(GuiScreen parentScreen){
|
||||
super(parentScreen, getConfigElements(), ModUtil.MOD_ID, true, true, ModUtil.NAME);
|
||||
}
|
||||
|
||||
private static List<IConfigElement> getConfigElements(){
|
||||
List<IConfigElement> list = new ArrayList<>();
|
||||
for(int i = 0; i < ConfigCategories.values().length; i++){
|
||||
list.add(new ConfigElement<ConfigCategory>(ConfigurationHandler.config.getCategory(ConfigCategories.values()[i].name.toLowerCase())));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package ellpeck.actuallyadditions.config;
|
||||
|
||||
import cpw.mods.fml.client.IModGuiFactory;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class GuiFactory implements IModGuiFactory{
|
||||
|
||||
@Override
|
||||
public void initialize(Minecraft minecraftInstance){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends GuiScreen> mainConfigGuiClass(){
|
||||
return GuiConfiguration.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories(){
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element){
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -38,6 +38,7 @@ public enum ConfigBoolValues{
|
|||
DO_TREASURE_CHEST_GEN("Treasure Chest Gen", ConfigCategories.WORLD_GEN, true, "If Treasure Chests should generate in the World"),
|
||||
|
||||
DO_SPIDER_DROPS("Spider Cobweb Drop", ConfigCategories.MOB_DROPS, true, "If Cobwebs should sometimes drop from Spiders"),
|
||||
DO_BAT_DROPS("Bat Wing Drop", ConfigCategories.MOB_DROPS, true, "If Wings should sometimes drop from Bats"),
|
||||
|
||||
PREVENT_OIL_OVERRIDE("Oil Fluid Override", ConfigCategories.FLUIDS, false, "If not registering Oil Fluids from Actually Additions if other Oil is already registered should be prevented"+ConfigurationHandler.ISSUES_WARNING),
|
||||
PREVENT_CANOLA_OVERRIDE("Canola Oil Fluid Override", ConfigCategories.FLUIDS, false, "If not registering Canola Oil Fluids from Actually Additions if other Canola Oil is already registered should be prevented"+ConfigurationHandler.ISSUES_WARNING),
|
||||
|
|
|
@ -107,7 +107,7 @@ public enum ConfigCrafting{
|
|||
ENERGIZER("Energizer", ConfigCategories.BLOCKS_CRAFTING),
|
||||
ENERVATOR("Enervator", ConfigCategories.BLOCKS_CRAFTING),
|
||||
|
||||
QUARTZ("Black Quartz in a Crafting Table (as a Backup if there's no Ores to be found anywhere)", ConfigCategories.ITEMS_CRAFTING),
|
||||
QUARTZ("Black Quartz in a Crafting Table", ConfigCategories.ITEMS_CRAFTING),
|
||||
LAMPS("Lamps", ConfigCategories.BLOCKS_CRAFTING),
|
||||
|
||||
REDSTONE("Redstone Ore -> Redstone", ConfigCategories.CRUSHER_RECIPES, "Crusher"),
|
||||
|
@ -143,7 +143,7 @@ public enum ConfigCrafting{
|
|||
this.name = name;
|
||||
this.category = category.name;
|
||||
this.defaultValue = defaultValue;
|
||||
this.extraText = extraText + " ";
|
||||
this.extraText = extraText.length() > 0 ? extraText + " " : "";
|
||||
}
|
||||
|
||||
ConfigCrafting(String name, ConfigCategories category, boolean defaultValue){
|
||||
|
|
|
@ -70,7 +70,8 @@ public enum ConfigIntValues{
|
|||
DROPPER_TIME_NEEDED("Dropper: Time Needed", ConfigCategories.MACHINE_VALUES, 10, 1, 10000, "The Time Needed for the Dropper to drop an Item"),
|
||||
|
||||
CAT_DROP_CHANCE("Cat Drops: Chance", ConfigCategories.OTHER, 5000, 5, 10000000, "The 1 in X chance for a Hairy Ball to Drop from a Cat with X being this value"),
|
||||
SPIDER_DROP_CHANCE("Cobweb Drop from Spider: Chance", ConfigCategories.MOB_DROPS, 300, 1, 1000000000, "The 1 in X chance for a Cobweb to drop from a Spider"),
|
||||
SPIDER_DROP_CHANCE("Cobweb Drop from Spider: Chance", ConfigCategories.MOB_DROPS, 500, 1, 1000000000, "The 1 in X chance for a Cobweb to drop from a Spider"),
|
||||
BAT_DROP_CHANCE("Wings from Bats: Chance", ConfigCategories.MOB_DROPS, 250, 1, 1000000000, "The 1 in X chance for a Wing to drop from a Bat"),
|
||||
|
||||
RICE_AMOUNT("Rice Amount", ConfigCategories.WORLD_GEN, 15, 1, 100, "The Chance of Rice generating"),
|
||||
CANOLA_AMOUNT("Canola Amount", ConfigCategories.WORLD_GEN, 10, 1, 50, "The Chance of Canola generating"),
|
||||
|
|
|
@ -48,6 +48,7 @@ public class EntityLivingEvent{
|
|||
//Allow the Player to fly when he has Wings equipped every tick
|
||||
//It appears to be reset somewhere if you don't update it every tick
|
||||
//but I haven't found the place where it gets reset which is slightly odd
|
||||
//Maybe I just haven't searched enough or I am really stupid :D
|
||||
player.capabilities.allowFlying = true;
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -4,8 +4,10 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
|||
import ellpeck.actuallyadditions.config.values.ConfigBoolValues;
|
||||
import ellpeck.actuallyadditions.config.values.ConfigIntValues;
|
||||
import ellpeck.actuallyadditions.items.InitItems;
|
||||
import ellpeck.actuallyadditions.items.metalists.TheMiscItems;
|
||||
import ellpeck.actuallyadditions.items.metalists.TheSpecialDrops;
|
||||
import net.minecraft.entity.monster.EntitySpider;
|
||||
import net.minecraft.entity.passive.EntityBat;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -34,6 +36,13 @@ public class LivingDropEvent{
|
|||
event.entityLiving.entityDropItem(new ItemStack(Blocks.web, new Random().nextInt(2)+1), 0);
|
||||
}
|
||||
}
|
||||
|
||||
//Drop Wings from Bats
|
||||
if(ConfigBoolValues.DO_BAT_DROPS.isEnabled() && event.entityLiving instanceof EntityBat){
|
||||
if(new Random().nextInt(ConfigIntValues.BAT_DROP_CHANCE.getValue()) <= 0){
|
||||
event.entityLiving.entityDropItem(new ItemStack(InitItems.itemMisc, new Random().nextInt(2)+1, TheMiscItems.BAT_WING.ordinal()), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -98,8 +98,6 @@ public class InitItems{
|
|||
public static Item itemTeleStaff;
|
||||
public static Item itemWingsOfTheBats;
|
||||
|
||||
public static Item itemPicturePlacer;
|
||||
|
||||
public static void init(){
|
||||
ModUtil.LOGGER.info("Initializing Items...");
|
||||
|
||||
|
@ -118,9 +116,6 @@ public class InitItems{
|
|||
itemTeleStaff = new ItemTeleStaff();
|
||||
ItemUtil.register(itemTeleStaff);
|
||||
|
||||
itemPicturePlacer = new ItemPicturePlacer();
|
||||
ItemUtil.register(itemPicturePlacer);
|
||||
|
||||
itemWingsOfTheBats = new ItemWingsOfTheBats();
|
||||
ItemUtil.register(itemWingsOfTheBats);
|
||||
|
||||
|
|
|
@ -1,78 +0,0 @@
|
|||
package ellpeck.actuallyadditions.items;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import ellpeck.actuallyadditions.ActuallyAdditions;
|
||||
import ellpeck.actuallyadditions.inventory.GuiHandler;
|
||||
import ellpeck.actuallyadditions.util.INameableItem;
|
||||
import ellpeck.actuallyadditions.util.ItemUtil;
|
||||
import ellpeck.actuallyadditions.util.ModUtil;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.EntityHanging;
|
||||
import net.minecraft.entity.item.EntityPainting;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumRarity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ItemPicturePlacer extends Item implements INameableItem{
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){
|
||||
ItemUtil.addInformation(this, list, 1, "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon getIcon(ItemStack stack, int pass){
|
||||
return this.itemIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IIconRegister iconReg){
|
||||
this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player){
|
||||
if(!world.isRemote)
|
||||
player.openGui(ActuallyAdditions.instance, GuiHandler.GuiTypes.CRAFTER.ordinal(), world, (int)player.posX, (int)player.posY, (int)player.posZ);
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumRarity getRarity(ItemStack stack){
|
||||
return EnumRarity.epic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName(){
|
||||
return "itemPicturePlacer";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int hitSide, float hitX, float hitY, float hitZ){
|
||||
if(hitSide == 0 || hitSide == 1) return false;
|
||||
else{
|
||||
EntityHanging hanging = new EntityPainting(world, x, y, z, Direction.facingToDirection[hitSide]);
|
||||
|
||||
if(!player.canPlayerEdit(x, y, z, hitSide, stack)) return false;
|
||||
else{
|
||||
if(hanging.onValidSurface()){
|
||||
if(!world.isRemote){
|
||||
world.spawnEntityInWorld(hanging);
|
||||
}
|
||||
stack.stackSize--;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,7 +19,8 @@ public enum TheMiscItems implements INameableItem{
|
|||
TINY_CHAR("TinyCharcoal", EnumRarity.common),
|
||||
RICE_SLIME("RiceSlime", EnumRarity.uncommon),
|
||||
CANOLA("Canola", EnumRarity.uncommon),
|
||||
CUP("Cup", EnumRarity.uncommon);
|
||||
CUP("Cup", EnumRarity.uncommon),
|
||||
BAT_WING("BatWing", EnumRarity.rare);
|
||||
|
||||
public final String name;
|
||||
public final EnumRarity rarity;
|
||||
|
|
Loading…
Reference in a new issue