Skip to content

Commit

Permalink
Moved registering & spawniung completely to EntityEntryBuilder
Browse files Browse the repository at this point in the history
Now requires latest recommended version of Forge
  • Loading branch information
GirafiStudios committed Apr 2, 2018
1 parent 806d8d5 commit 25300f3
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 48 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
minecraft_version=1.12.2
forge_version=14.23.1.2555
forge_version=14.23.2.2651
mappings_version=snapshot_20170905
mod_version=0.5.6
23 changes: 0 additions & 23 deletions src/main/java/com/girafi/waddles/Waddles.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,15 @@
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;
import com.google.common.collect.Lists;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.storage.loot.LootTableList;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

import java.io.File;
import java.util.List;
import java.util.Set;

import static net.minecraftforge.common.BiomeDictionary.Type.*;

@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.MOD_VERSION, dependencies = Reference.DEPENDENCIES, guiFactory = Reference.GUI_FACTORY_CLASS)
public class Waddles {
Expand All @@ -38,16 +27,4 @@ public void preInit(FMLPreInitializationEvent event) {
ConfigurationHandler.init(new File(event.getModConfigurationDirectory(), "Waddles.cfg"));
proxy.registerRenders();
}

@Mod.EventHandler
public void init(FMLInitializationEvent event) {
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);
}
}
PenguinRegistry.addPenguinSpawn(EntityAdeliePenguin.class, PenguinRegistry.ADELIE_PENGUIN, 2, 1, 4, spawnable_biomes.toArray(new Biome[spawnable_biomes.size()]));
}
}
72 changes: 49 additions & 23 deletions src/main/java/com/girafi/waddles/entity/PenguinRegistry.java
Original file line number Diff line number Diff line change
@@ -1,58 +1,84 @@
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.base.CaseFormat;
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.BiomeDictionary;
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 net.minecraftforge.fml.common.registry.EntityEntryBuilder;

import java.util.Arrays;
import java.util.List;
import java.util.Set;

import static net.minecraftforge.common.BiomeDictionary.Type.*;

@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 Iterable<Biome> biomes = Lists.newArrayList();
private static int minCount;
private static int maxCount;
private static int weight;

public static final EntityEntry ADELIE_PENGUIN = createEntity(EntityAdeliePenguin.class, 0x000000, 0xFFFFFF, 2, 1, 4, new BiomeDictionary.Type[]{SNOWY}, new BiomeDictionary.Type[]{FOREST});

private static EntityEntry createEntity(Class<? extends Entity> entityClass, int eggPrimary, int eggSecondary, int weight, int min, int max, BiomeDictionary.Type[] typesInclude, BiomeDictionary.Type[] typesExclude) {
List<Biome> spawnable_biomes = Lists.newArrayList();
for (Biome biome : Biome.REGISTRY) {
Set<BiomeDictionary.Type> types = BiomeDictionary.getTypes(biome);
if (types.containsAll(Arrays.asList(typesInclude)) && !types.containsAll(Arrays.asList(typesExclude)) && !types.contains(NETHER) && !biome.getSpawnableList(EnumCreatureType.CREATURE).isEmpty()) {
spawnable_biomes.add(biome);
}
}
return createEntity(entityClass, eggPrimary, eggSecondary, weight, min, max, spawnable_biomes);
}

private static EntityEntry createEntity(Class<? extends Entity> entityClass, String name, int eggPrimary, int eggSecondary) {
ResourceLocation location = new ResourceLocation(Reference.MOD_ID, name);
private static EntityEntry createEntity(Class<? extends Entity> entityClass, int eggPrimary, int eggSecondary, int weight, int min, int max, Biome... biomes) {
return createEntity(entityClass, eggPrimary, eggSecondary, weight, min, max, Arrays.asList(biomes));
}

private static EntityEntry createEntity(Class<? extends Entity> entityClass, int eggPrimary, int eggSecondary, int weight, int min, int max, Iterable<Biome> biomes) {
ResourceLocation location = new ResourceLocation(Reference.MOD_ID, CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, entityClass.getSimpleName()).replace("entity_", ""));
EntityEntry entry = new EntityEntry(entityClass, location.toString());
entry.setRegistryName(location);
entry.setEgg(new EntityList.EntityEggInfo(location, eggPrimary, eggSecondary));
PenguinRegistry.biomes = biomes;
entities.add(entry);

String subCategoryNames = ConfigurationHandler.CATEGORY_PENGUIN_SPAWNS + Configuration.CATEGORY_SPLITTER + entry.getRegistryName().getResourcePath();
PenguinRegistry.weight = ConfigurationHandler.config.get(subCategoryNames, "Weight", weight).getInt();
PenguinRegistry.minCount = ConfigurationHandler.config.get(subCategoryNames, "Min", min).getInt();
PenguinRegistry.maxCount = ConfigurationHandler.config.get(subCategoryNames, "Max", max).getInt();

ConfigurationHandler.config.save();

return entry;
}

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

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);
networkId++;
event.getRegistry().register(EntityEntryBuilder.create()
.entity(entry.getEntityClass())
.id(entry.getRegistryName(), networkId)
.name(entry.getName())
.tracker(64, 1, true)
.egg(entry.getEgg().primaryColor, entry.getEgg().secondaryColor)
.spawn(EnumCreatureType.CREATURE, weight, minCount, maxCount, biomes)
.build());
}
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/girafi/waddles/utils/Reference.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ public class Reference {
public static final String CLIENT_PROXY_CLASS = "com.girafi.waddles.proxy.ClientProxy";
public static final String COMMON_PROXY_ClASS = "com.girafi.waddles.proxy.CommonProxy";
public static final String GUI_FACTORY_CLASS = "com.girafi.waddles.utils.GuiFactory";
public static final String DEPENDENCIES = "required-after:forge@[14.21.1,)";
public static final String DEPENDENCIES = "required-after:forge@[14.23.2,)";
}

0 comments on commit 25300f3

Please sign in to comment.