Skip to content

Commit

Permalink
Added config option for weights + min/max group size. Closes #5
Browse files Browse the repository at this point in the history
  • Loading branch information
GirafiStudios committed Jul 30, 2017
1 parent ed12b96 commit 18fda0e
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 9 deletions.
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
minecraft_version=1.12
forge_version=14.21.1.2387
mappings_version=snapshot_20170629
mod_version=0.5.3
forge_version=14.21.1.2426
mappings_version=snapshot_20170729
mod_version=0.5.4
7 changes: 2 additions & 5 deletions src/main/java/com/girafi/waddles/Waddles.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.girafi.waddles;

import com.girafi.waddles.entity.EntityAdeliePenguin;
import com.girafi.waddles.entity.PenguinRegistry;
import com.girafi.waddles.proxy.CommonProxy;
import com.girafi.waddles.utils.ConfigurationHandler;
import com.girafi.waddles.utils.Reference;
Expand All @@ -14,7 +15,6 @@
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.EntityRegistry;

import java.io.File;
import java.util.List;
Expand All @@ -40,16 +40,13 @@ public void preInit(FMLPreInitializationEvent event) {

@Mod.EventHandler
public void init(FMLInitializationEvent event) {
ResourceLocation resourceLocation = new ResourceLocation(Reference.MOD_ID, "adelie_penguin");
EntityRegistry.registerModEntity(resourceLocation, EntityAdeliePenguin.class, resourceLocation.toString(), 0, Waddles.instance, 64, 1, true, 0x000000, 0xFFFFFF);

List<Biome> spawnable_biomes = Lists.newArrayList();
for (Biome biome : Biome.REGISTRY) {
Set<BiomeDictionary.Type> types = BiomeDictionary.getTypes(biome);
if (types.contains(SNOWY) && !types.contains(FOREST) && !types.contains(NETHER) && !biome.getSpawnableList(EnumCreatureType.CREATURE).isEmpty()) {
spawnable_biomes.add(biome);
}
}
EntityRegistry.addSpawn(EntityAdeliePenguin.class, 2, 1, 4, EnumCreatureType.CREATURE, spawnable_biomes.toArray(new Biome[spawnable_biomes.size()]));
PenguinRegistry.addPenguinSpawn(EntityAdeliePenguin.class, PenguinRegistry.ADELIE_PENGUIN, 2, 1, 4, spawnable_biomes.toArray(new Biome[spawnable_biomes.size()]));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ protected ResourceLocation getEntityTexture(@Nonnull EntityAdeliePenguin penguin
String name = penguin.getName().toLowerCase().trim();
if (name.equals("joshie") || name.equals("joshiejack")) {
return this.getPenguinTexture("joshie");
} else if (name.equals("darkosto")) {
return this.getPenguinTexture("darkosto");
}
return penguin.isChild() ? this.getPenguinTexture("adelie_child") : this.getPenguinTexture("adelie");
}
Expand Down
58 changes: 58 additions & 0 deletions src/main/java/com/girafi/waddles/entity/PenguinRegistry.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.girafi.waddles.entity;

import com.girafi.waddles.Waddles;
import com.girafi.waddles.utils.ConfigurationHandler;
import com.girafi.waddles.utils.Reference;
import com.google.common.collect.Lists;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityAgeable;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.biome.Biome;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.EntityEntry;
import net.minecraftforge.fml.common.registry.EntityRegistry;

import java.util.List;

@EventBusSubscriber
public class PenguinRegistry {
private static List<EntityEntry> entities = Lists.newArrayList();
public static final EntityEntry ADELIE_PENGUIN = createEntity(EntityAdeliePenguin.class, "adelie_penguin", 0x000000, 0xFFFFFF);

private static EntityEntry createEntity(Class<? extends Entity> entityClass, String name, int eggPrimary, int eggSecondary) {
ResourceLocation location = new ResourceLocation(Reference.MOD_ID, name);
EntityEntry entry = new EntityEntry(entityClass, location.toString());
entry.setRegistryName(location);
entry.setEgg(new EntityList.EntityEggInfo(location, eggPrimary, eggSecondary));
entities.add(entry);
return entry;
}

@SubscribeEvent
public static void registerPenguins(RegistryEvent.Register<EntityEntry> event) {
int id = 0;
for (EntityEntry entry : entities) {
event.getRegistry().register(entry);
id++;
EntityRegistry.registerModEntity(entry.getRegistryName(), entry.getEntityClass(), entry.getName(), id, Waddles.instance, 64, 1, true);
}
}

public static void addPenguinSpawn(Class<? extends EntityAgeable> penguinClass, EntityEntry penguinEntry, int defaultWeight, int defaultMin, int defaultMax, Biome... biomes) {
String subCategoryNames = ConfigurationHandler.CATEGORY_PENGUIN_SPAWNS + Configuration.CATEGORY_SPLITTER + penguinEntry.getRegistryName().getResourcePath();
int weight = ConfigurationHandler.config.get(subCategoryNames, "Weight", defaultWeight).getInt();
int min = ConfigurationHandler.config.get(subCategoryNames, "Min", defaultMin).getInt();
int max = ConfigurationHandler.config.get(subCategoryNames, "Max", defaultMax).getInt();

ConfigurationHandler.config.save();

if (weight != 0) {
EntityRegistry.addSpawn(penguinClass, weight, min, max, EnumCreatureType.CREATURE, biomes);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
@EventBusSubscriber
public class ConfigurationHandler {
public static Configuration config;
public static final String CATEGORY_PENGUIN_SPAWNS = "spawn chances";
public static boolean dropFish;
public static boolean dropExp;

Expand All @@ -21,6 +22,7 @@ public static void init(File configFile) {
}

private static void loadConfiguration() {
config.addCustomCategoryComment(CATEGORY_PENGUIN_SPAWNS, "Configure penguins spawn weight & min/max group size. Set weight to 0 to disable.");
dropFish = config.get(Configuration.CATEGORY_GENERAL, "Enable that penguins drop fish (0 - 2 Raw fish)", false).getBoolean(false);
dropExp = config.get(Configuration.CATEGORY_GENERAL, "Penguins should drop experience?", true).getBoolean(true);

Expand Down
20 changes: 19 additions & 1 deletion src/main/java/com/girafi/waddles/utils/GuiFactory.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package com.girafi.waddles.utils;

import net.minecraft.client.gui.GuiScreen;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.config.ConfigElement;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.client.DefaultGuiFactory;
import net.minecraftforge.fml.client.config.DummyConfigElement;
import net.minecraftforge.fml.client.config.GuiConfig;
import net.minecraftforge.fml.client.config.IConfigElement;

import java.util.ArrayList;
import java.util.List;

public class GuiFactory extends DefaultGuiFactory {

Expand All @@ -14,6 +20,18 @@ public GuiFactory() {

@Override
public GuiScreen createConfigGui(GuiScreen parentScreen) {
return new GuiConfig(parentScreen, new ConfigElement(ConfigurationHandler.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements(), Reference.MOD_ID, false, false, title);
return new GuiConfig(parentScreen, getConfigElements(), Reference.MOD_ID, true, true, title);
}

private static List<IConfigElement> getConfigElements() {
List<IConfigElement> list = new ArrayList<>();

List<IConfigElement> general = new ConfigElement(ConfigurationHandler.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements();
List<IConfigElement> spawnChances = new ConfigElement(ConfigurationHandler.config.getCategory(ConfigurationHandler.CATEGORY_PENGUIN_SPAWNS)).getChildElements();

list.add(new DummyConfigElement.DummyCategoryElement("General", new ResourceLocation(Reference.MOD_ID, "config.category.general").toString(), general));
list.add(new DummyConfigElement.DummyCategoryElement("Spawn Chances", new ResourceLocation(Reference.MOD_ID, "config.category.spawnchances").toString(), spawnChances));

return list;
}
}
4 changes: 4 additions & 0 deletions src/main/resources/assets/waddles/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ waddles:subtitles.adelie.ambient=Adélie Penguin squawks
waddles:subtitles.adelie.baby.ambient=Adélie Penguin Baby squeaks
waddles:subtitles.adelie.death=Adélie Penguin dies
waddles:subtitles.adelie.hurt=Adélie Penguin hurts

#Tooltip
waddles:config.category.general.tooltip=General config options for Waddles
waddles:config.category.spawnchances.tooltip=Configurable spawn chances for penguins
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 18fda0e

Please sign in to comment.