aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2018-07-01 19:15:47 +1000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2018-07-01 19:15:47 +1000
commit35a555fff44b6b3f0d9bb007481edeed3bc09c4e (patch)
tree0762ca8b9e47b31d6185d18553e6c926397e7950 /src/Java/gtPlusPlus
parent03e72a68aee10a871b3186d141b14c76770c72fb (diff)
downloadGT5-Unofficial-35a555fff44b6b3f0d9bb007481edeed3bc09c4e.tar.gz
GT5-Unofficial-35a555fff44b6b3f0d9bb007481edeed3bc09c4e.tar.bz2
GT5-Unofficial-35a555fff44b6b3f0d9bb007481edeed3bc09c4e.zip
% More work on Villagers.
% More work on Spawners.
Diffstat (limited to 'src/Java/gtPlusPlus')
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockSpawner.java39
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java13
-rw-r--r--src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java34
-rw-r--r--src/Java/gtPlusPlus/plugin/villagers/VillagerObject.java31
-rw-r--r--src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java24
-rw-r--r--src/Java/gtPlusPlus/plugin/villagers/block/BlockGenericSpawner.java5
-rw-r--r--src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java4
-rw-r--r--src/Java/gtPlusPlus/plugin/villagers/tile/TileEntityGenericSpawner.java12
9 files changed, 130 insertions, 34 deletions
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockSpawner.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockSpawner.java
new file mode 100644
index 0000000000..53c9cdb193
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockSpawner.java
@@ -0,0 +1,39 @@
+package gtPlusPlus.core.item.base.itemblock;
+
+import java.util.List;
+
+import cpw.mods.fml.common.registry.EntityRegistry;
+import cpw.mods.fml.common.registry.EntityRegistry.EntityRegistration;
+import gtPlusPlus.plugin.villagers.tile.TileEntityGenericSpawner;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+
+public class ItemBlockSpawner extends ItemBlockMeta{
+
+ private final Block mBlock;
+
+ public ItemBlockSpawner(Block aBlock) {
+ super(aBlock);
+ mBlock = aBlock;
+ }
+
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aBool) {
+ if (mBlock != null) {
+ int x = this.getMetadata(aStack.getItemDamage());
+ if (x >= 0) {
+ try {
+ EntityRegistration x1 = EntityRegistry.instance().lookupModSpawn(TileEntityGenericSpawner.mSpawners.get(x), false);
+ if (x1 != null) {
+ aList.add(EnumChatFormatting.RED+x1.getEntityName());
+ }
+ }
+ catch (Throwable t) {}
+ }
+ }
+ super.addInformation(aStack, aPlayer, aList, aBool);
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java b/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java
index d8218d9249..b1e763c384 100644
--- a/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java
+++ b/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java
@@ -6,6 +6,7 @@ import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.tileentities.general.*;
import gtPlusPlus.core.tileentities.machines.*;
+import gtPlusPlus.plugin.villagers.tile.TileEntityGenericSpawner;
public class ModTileEntities {
@@ -21,6 +22,7 @@ public class ModTileEntities {
GameRegistry.registerTileEntity(TileEntityTradeTable.class, "TileTradeTable");
GameRegistry.registerTileEntity(TileEntityModularityTable.class, "TileEntityModularityTable");
GameRegistry.registerTileEntity(TileEntityXpConverter.class, "TileEntityXpConverter");
+ GameRegistry.registerTileEntity(TileEntityGenericSpawner.class, "TileEntityGenericSpawner");
//Mod TEs
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index 7f9aa7098b..2dd4517f79 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -830,25 +830,26 @@ public class Utils {
}
}
- public static void createNewMobSpawner(int aID, Entity aEntity) {
+ public static boolean createNewMobSpawner(int aID, Entity aEntity) {
Class<Entity> c;
if (aEntity instanceof Entity) {
c = (Class<Entity>) aEntity.getClass();
- createNewMobSpawner(aID, c);
+ return createNewMobSpawner(aID, c);
}
+ return false;
}
- public static void createNewMobSpawner(int aID, Class aEntity) {
+ public static boolean createNewMobSpawner(int aID, Class aEntity) {
Logger.INFO("[Spawn] Generating new spawner for entity with class ("+aEntity.getCanonicalName()+").");
if (TileEntityGenericSpawner.registerNewMobSpawner(aID, aEntity)) {
EntityRegistration x = EntityRegistry.instance().lookupModSpawn(aEntity, false);
if (x != null) {
Logger.INFO("[Spawn] Registration for "+x.getEntityName()+" successful");
+ return true;
}
}
- else {
- Logger.INFO("[Spawn] Registration for "+aEntity.getName()+" failed");
- }
+ Logger.INFO("[Spawn] Mob Spawner creation for "+aEntity.getName()+" failed");
+ return false;
}
}
diff --git a/src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java b/src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java
index ee0673ee20..09ff48aff5 100644
--- a/src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java
+++ b/src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java
@@ -1,13 +1,17 @@
package gtPlusPlus.plugin.villagers;
+import static gtPlusPlus.plugin.villagers.VillagerUtils.mVillagerMap;
+
import java.util.HashMap;
+import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.VillagerRegistry;
import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler;
import gtPlusPlus.api.interfaces.IPlugin;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.block.ModBlocks;
+import gtPlusPlus.core.entity.EntityPrimedMiningExplosive;
import gtPlusPlus.core.entity.monster.EntityGiantChickenBase;
import gtPlusPlus.core.entity.monster.EntitySickBlaze;
import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct;
@@ -15,6 +19,7 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.plugin.manager.Core_Manager;
import gtPlusPlus.plugin.villagers.block.BlockGenericSpawner;
+import gtPlusPlus.plugin.villagers.entity.EntityBaseVillager;
import net.minecraft.util.ResourceLocation;
public class Core_VillagerAdditions implements IPlugin {
@@ -37,26 +42,43 @@ public class Core_VillagerAdditions implements IPlugin {
shouldLoad = true;
}
if (shouldLoad) {
+ //Register Custom Villager Entity
+ EntityRegistry.registerGlobalEntityID(EntityBaseVillager.class, "VillagerV5", EntityRegistry.findGlobalUniqueEntityId(), Utils.rgbtoHexValue(180, 120, 120), Utils.rgbtoHexValue(0, 0, 0));
+
//Try register some test spawners
Utils.createNewMobSpawner(0, EntityGiantChickenBase.class);
Utils.createNewMobSpawner(1, EntitySickBlaze.class);
Utils.createNewMobSpawner(2, EntityStaballoyConstruct.class);
+
+ VillagerUtils.registerNewVillager(0, "TESTIFICATE", "TESTIFICATE", "TESTIFICATE", null, null);
+ VillagerUtils.registerNewVillager(1, "TESTIFICATE1", "TESTIFICATE1", "TESTIFICATE1", null, null);
+ VillagerUtils.registerNewVillager(2, "TESTIFICATE2", "TESTIFICATE2", "TESTIFICATE2", null, null);
+
+ if (mVillagerMap.size() > 0) {
+ for (VillagerObject g : mVillagerMap.values()) {
+ if (g != null && g.mID >= 0) {
+ VillagerRegistry.instance().registerVillagerId(g.mID);
+ log("Registered a Custom Villager with ID of "+g.mID+".");
+ Utils.createNewMobSpawner(10+g.mID, EntityBaseVillager.class);
+ if (mVillagerSkins.get(g.mID) != null) {
+ VillagerRegistry.instance().registerVillagerSkin(g.mID, mVillagerSkins.get(g.mID));
+ log("Registered a Custom Skin for Villager with ID of "+g.mID+".");
+ }
+ }
+ }
+ }
//Register all Villager ID's and their Custom Trades.
if (mVillagerTrades.size() > 0) {
for (Pair<Integer, IVillageTradeHandler> g : mVillagerTrades) {
if (g != null && g.getKey() != null) {
- VillagerRegistry.instance().registerVillagerId(g.getKey());
if (g.getValue() != null) {
VillagerRegistry.instance().registerVillageTradeHandler(g.getKey(), g.getValue());
- }
- if (mVillagerSkins.get(g.getKey()) != null) {
- VillagerRegistry.instance().registerVillagerSkin(g.getKey(), mVillagerSkins.get(g.getKey()));
+ log("Registered a Custom Trade for Villager with ID of "+g.getKey()+".");
}
}
}
- return true;
- }
+ }
}
return false;
}
diff --git a/src/Java/gtPlusPlus/plugin/villagers/VillagerObject.java b/src/Java/gtPlusPlus/plugin/villagers/VillagerObject.java
new file mode 100644
index 0000000000..c0684b6227
--- /dev/null
+++ b/src/Java/gtPlusPlus/plugin/villagers/VillagerObject.java
@@ -0,0 +1,31 @@
+package gtPlusPlus.plugin.villagers;
+
+import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler;
+import gtPlusPlus.api.objects.data.Pair;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.plugin.villagers.entity.EntityBaseVillager;
+import net.minecraft.util.ResourceLocation;
+
+public class VillagerObject {
+
+ public final int mID;
+ public final String mName;
+
+
+ public VillagerObject(int aID, String aName, Object aProfession, Object aCareer, ResourceLocation aSkin, IVillageTradeHandler aCustomTrade) {
+
+ mID = aID;
+ mName = aName;
+
+ //Register Custom Trade to Registry.
+ if (aCustomTrade != null) {
+ Core_VillagerAdditions.mVillagerTrades.put(new Pair<Integer, IVillageTradeHandler>(aID, aCustomTrade));
+ }
+ //Register Skin to Registry.
+ if (aSkin != null) {
+ Core_VillagerAdditions.mVillagerSkins.put(aID, aSkin);
+ }
+ VillagerUtils.registerNewVillager(aID, this);
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java b/src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java
index 3139bbe698..848b0fcfbb 100644
--- a/src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java
+++ b/src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java
@@ -1,28 +1,20 @@
package gtPlusPlus.plugin.villagers;
+import java.util.HashMap;
+
import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler;
-import gtPlusPlus.api.objects.data.Pair;
-import gtPlusPlus.core.util.Utils;
-import gtPlusPlus.plugin.villagers.entity.EntityBaseVillager;
import net.minecraft.util.ResourceLocation;
public class VillagerUtils {
+ public static final HashMap<Integer, VillagerObject> mVillagerMap = new HashMap<Integer, VillagerObject>();
public static void registerNewVillager(int aID, String aName, Object aProfession, Object aCareer, ResourceLocation aSkin, IVillageTradeHandler aCustomTrade) {
-
- //Register Custom Trade to Registry.
- if (aCustomTrade != null) {
- Core_VillagerAdditions.mVillagerTrades.put(new Pair<Integer, IVillageTradeHandler>(aID, aCustomTrade));
- }
- //Register Skin to Registry.
- if (aSkin != null) {
- Core_VillagerAdditions.mVillagerSkins.put(aID, aSkin);
- }
-
- EntityBaseVillager entityvillager = new EntityBaseVillager(null, aID);
- Utils.createNewMobSpawner(aID, entityvillager);
-
+ registerNewVillager(aID, new VillagerObject(aID, aName, aProfession, aCareer, aSkin, aCustomTrade));
+ }
+
+ public static void registerNewVillager(int aID, VillagerObject aVillager) {
+ mVillagerMap.put(aID, aVillager);
}
diff --git a/src/Java/gtPlusPlus/plugin/villagers/block/BlockGenericSpawner.java b/src/Java/gtPlusPlus/plugin/villagers/block/BlockGenericSpawner.java
index 5f3e704818..916f360012 100644
--- a/src/Java/gtPlusPlus/plugin/villagers/block/BlockGenericSpawner.java
+++ b/src/Java/gtPlusPlus/plugin/villagers/block/BlockGenericSpawner.java
@@ -7,8 +7,7 @@ import java.util.List;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import gtPlusPlus.core.creative.AddToCreativeTab;
-import gtPlusPlus.core.item.base.itemblock.ItemBlockMeta;
+import gtPlusPlus.core.item.base.itemblock.ItemBlockSpawner;
import gtPlusPlus.plugin.villagers.Core_VillagerAdditions;
import gtPlusPlus.plugin.villagers.tile.TileEntityGenericSpawner;
import net.minecraft.block.BlockMobSpawner;
@@ -28,7 +27,7 @@ public class BlockGenericSpawner extends BlockMobSpawner {
this.setBlockName("blockMobSpawnerEx");
this.setBlockTextureName("mob_spawner");
this.setResistance(2000.0F);
- GameRegistry.registerBlock(this, ItemBlockMeta.class, "blockMobSpawnerEx");
+ GameRegistry.registerBlock(this, ItemBlockSpawner.class, "blockMobSpawnerEx");
Core_VillagerAdditions.mInstance.log("Registered Custom Spawner Block.");
}
diff --git a/src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java b/src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java
index 429ca104ac..dc97aa4ce6 100644
--- a/src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java
+++ b/src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java
@@ -45,6 +45,10 @@ public class EntityBaseVillager extends EntityVillager {
* extend EntityVillager and just implement IMerchant instead.
*/
+ public EntityBaseVillager(World aWorld){
+ this(aWorld, 0);
+ }
+
public EntityBaseVillager(World aWorld, int aID) {
super(aWorld, aID);
}
diff --git a/src/Java/gtPlusPlus/plugin/villagers/tile/TileEntityGenericSpawner.java b/src/Java/gtPlusPlus/plugin/villagers/tile/TileEntityGenericSpawner.java
index 9f2e992d74..53c0c78a23 100644
--- a/src/Java/gtPlusPlus/plugin/villagers/tile/TileEntityGenericSpawner.java
+++ b/src/Java/gtPlusPlus/plugin/villagers/tile/TileEntityGenericSpawner.java
@@ -128,8 +128,14 @@ public class TileEntityGenericSpawner extends TileEntityMobSpawner {
@Override
public void writeToNBT(NBTTagCompound p_145841_1_) {
if (hasInternalFieldBeenSet()) {
- String s = (String) classToNameMap_Ex.get(mSpawners.get(this.mID));
- if (s == null){
+ String s = (String) classToNameMap_Ex.get(this.getClass());
+ if (s == null){
+ for (Object g : classToNameMap_Ex.values()) {
+ if (g instanceof String) {
+ Logger.INFO("Found Translation for "+((Class) nameToClassMap_Ex.get(g)).getName()+": "+g);
+ }
+ }
+
//throw new RuntimeException(this.getClass() + " is missing a mapping! This is a bug!");
s = mSpawners.containsKey(this.mID) ? mSpawners.get(this.mID).getSimpleName() : "bad.class.name";
p_145841_1_.setString("id", s);
@@ -140,7 +146,7 @@ public class TileEntityGenericSpawner extends TileEntityMobSpawner {
p_145841_1_.setInteger("mID", this.mID);
}
else {
- Logger.WARNING(this.getClass() + " is not missing a mapping! Used key: "+s);
+ Logger.INFO(this.getClass() + " is not missing a mapping! Used key: "+s);
p_145841_1_.setString("id", s);
p_145841_1_.setInteger("x", this.xCoord);
p_145841_1_.setInteger("y", this.yCoord);