import net.minecraft.item.ItemStack;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
+import net.minecraftforge.oredict.OreDictionary;
import pcc.chemicraft.ChemiCraft;
import pcc.chemicraft.ChemiCraftConfiguration;
import pcc.chemicraft.ChemiCraftRegister;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
+import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod(modid = "ChemiCraftBase", name = "ChemiCraftBase", version = "beta1")
private void apiProcessing(final FMLPostInitializationEvent event) {
// API用の処理
+ for (int i = 0; i < this.apiBase.getAtomOres().size(); i++) {
+ OreDictionary.registerOre("ore" + this.apiBase.getAtomOresAtomName().get(i), new ItemStack(this.blockAtomOres[i / 16], 1, i % 16));
+ GameRegistry.registerWorldGenerator(this.apiBase.getAtomOres().get(i));
+ }
+
Iterator<String> langoresItr = this.apiBase.getAtomOresName().iterator();
while (langoresItr.hasNext()){
String lang = langoresItr.next();
LanguageRegistry.instance().addNameForObject(
new ItemStack(this.atomOresID[i / 16], 1, i % 16),
lang,
- names.get(i));
+ names.get(i)
+ );
}
}
+
}
}
import pcc.chemicraft.base.gen.EnumOreSpawnFrequency;
import pcc.chemicraft.base.gen.WorldGenAtomsOre;
+import pcc.chemicraft.util.AtomInfo;
import pcc.chemicraft.util.Formula;
import pcc.chemicraft.util.ListHash;
* @param par6PosY 鉱石が生成される高度(nowY < PosY == Generate)
*/
public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, int par4Size, int par5Frequency, int par6PosY){
- atomOresList.add(
- new WorldGenAtomsOre(
- par3Id,
- getAtomOresMetaOfLastIndex(),
- par4Size,
- par5Frequency,
- par6PosY));
-
- atomOresAtomList.add(par1Name);
atomOresFormulasHash.put(par1Name, par2Formula);
- String var7 = par1Name;
- if (!var7.contains(" Ore")) {
- var7 = var7.concat(" Ore");
- }
+ if (!AtomInfo.isExisting(par1Name)) {
+ atomOresList.add(
+ new WorldGenAtomsOre(
+ par3Id,
+ getAtomOresMetaOfLastIndex(),
+ par4Size,
+ par5Frequency,
+ par6PosY));
+
+ atomOresAtomList.add(par1Name);
+
+ String var7 = par1Name;
+ if (!var7.contains(" Ore")) {
+ var7 = var7.concat(" Ore");
+ }
- addAtomOresLanguage(var7, "en_US");
+ addAtomOresLanguage(par1Name, var7, "en_US");
+ }
}
/**
* 既に登録した鉱石の新しい名前・言語を追加します
- * @param par1Name 英語名
+ * @param par1KeyName 鉱石追加の際に用いたpar1Nameに当たる文字列
* @param par2NewName 新しい名前
- * @param par3Language 言語
+ * @param par3NewLanguage 新しい言語
*/
- public void addAtomOresLanguage(String par1Name, String par2Language){
- atomOresNameListHash.add(
- par2Language,
- par1Name
- );
+ public void addAtomOresLanguage(String par1KeyName, String par2NewName, String par3NewLanguage){
+ if (this.atomOresAtomList.contains(par1KeyName)){
+ atomOresNameListHash.add(
+ par3NewLanguage,
+ par2NewName
+ );
+ }
}
package pcc.chemicraft.base;
+import java.util.Iterator;
+
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
new Formula("H2O"));
//鉱石分解の追加
- for (int i = 0; i < this.mod.apiBase.getAtomOresAtomName().size(); i++) {
+ Iterator<String> arrayOreNames = this.mod.apiBase.getAtomOresFormulas().keySet().iterator();
+ while (arrayOreNames.hasNext()) {
+ String name = arrayOreNames.next();
+ ItemStack itemstack;
+ try {
+ itemstack = OreDictionary.getOres(name).get(0);
+ } catch (IndexOutOfBoundsException e) {
+ int var1 = this.mod.apiBase.getAtomOresAtomName().indexOf(name);
+ itemstack = new ItemStack(this.mod.blockAtomOres[var1 / 16], 1, var1 % 16);
+ }
this.mod.api.addPyrolysisDecompositionRecipe(
- new ItemStack(this.mod.blockAtomOres[i / 16], 1, i - i / 16 * 16),
- this.mod.apiBase.getAtomOresFormulas().get(this.mod.apiBase.getAtomOresAtomName().get(i)));
+ itemstack,
+ this.mod.apiBase.getAtomOresFormulas().get(name));
}
}
// 鉱石を追加
for (int i = 0; i < this.mod.chemicalData.ATOMSLIST.length; i++) {
if (AtomInfo.isSolid(i + 1) && !AtomInfo.isLanthanoid(i + 1)
- && !AtomInfo.isActinoid(i + 1)) {
+ && !AtomInfo.isActinoid(i + 1) && !AtomInfo.isOreOfVanilla(i + 1)) {
//鉱石をAPIに追加
this.mod.apiBase.addAtomOres(
ChemiCraftCore.ATOMSNAME[i],
new Formula(this.mod.chemicalData.ATOMSLIST[i]),
this.mod.atomOresID[this.mod.apiBase.getAtomOresLastIndex()],
- EnumOreSpawnFrequency.NORMAL);
+ EnumOreSpawnFrequency.NORMAL
+ );
//日本語名で追加
- this.mod.apiBase.addAtomOresLanguage(ChemiCraftCore.ATOMSNAMEJP[i] + "鉱石", "ja_JP");
+ this.mod.apiBase.addAtomOresLanguage(
+ ChemiCraftCore.ATOMSNAME[i],
+ ChemiCraftCore.ATOMSNAMEJP[i] + "鉱石",
+ "ja_JP"
+ );
}
}
"Lanthanoid",
new Formula("LaCePrNdPmSmEuGdTbDyHoErTmYbLu"),
this.mod.atomOresID[this.mod.apiBase.getAtomOresLastIndex()],
- EnumOreSpawnFrequency.RARE);
+ EnumOreSpawnFrequency.RARE
+ );
// LaCePrNdPmSmEuGdTbDyHoErTmYbLu
- this.mod.apiBase.addAtomOresLanguage("ランタノイド鉱石", "ja_JP");
+ this.mod.apiBase.addAtomOresLanguage(
+ "Lanthanoid",
+ "ランタノイド鉱石",
+ "ja_JP"
+ );
// アクチノイド鉱石
this.mod.apiBase.addAtomOres(
this.mod.atomOresID[this.mod.apiBase.getAtomOresLastIndex()],
EnumOreSpawnFrequency.RARE);
// AcThPaUNpPuAmCmBkCfEsFmMdNoLr
- this.mod.apiBase.addAtomOresLanguage("アクチノイド鉱石", "ja_JP");
+ this.mod.apiBase.addAtomOresLanguage(
+ "Actinoid",
+ "アクチノイド鉱石",
+ "ja_JP"
+ );
}
import java.util.Random;
+import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
private int posY;
public WorldGenAtomsOre(int id, int meta, int size, int frequency, int posY) {
- super(id, meta, size);
+ super(id, meta, size, Block.stone.blockID);
this.frequency = frequency;
this.posY = posY;
}
- public WorldGenAtomsOre(int id, int meta, int size, EnumOreSpawnFrequency frequency, int posY) {
- super(id, meta, size);
- this.frequency = frequency.getFrequency();
- this.posY = posY;
+ public WorldGenAtomsOre(int id, int meta, EnumOreSpawnFrequency frequency) {
+ this(id, meta, frequency.getSize(), frequency.getFrequency(), frequency.getPosY());
}
@Override
package pcc.chemicraft.base.item;
+import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
return par1ItemStack;
}
+ @Override
+ public void updateIcons(IconRegister par1IconRegister){
+ this.iconIndex = par1IconRegister.registerIcon("egg");
+ }
}
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.Icon;
import pcc.chemicraft.base.ChemiCraftBase;
import pcc.chemicraft.base.ChemiCraftBaseAPI;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
/**
* 鉱石のアイテム版です
this.setHasSubtypes(true);
}
- /* 一時保留。詳しい仕様が決まらないと変更が難しいため。 --WIP--
@Override
@SideOnly(Side.CLIENT)
public Icon getIconFromDamage(int par1) {
return ChemiCraftBase.instance.blockAtomOres[0].getBlockTextureFromSideAndMetadata(2, BlockAtomOres.getBlockFromDye(par1));
}
- */
@Override
public int getMetadata(int par1) {
@Override
public String getUnlocalizedName(ItemStack par1ItemStack) {
int var2 = this.itemID - (ChemiCraftBase.instance.atomOresID[0]);
- return super.getUnlocalizedName() + "." + ChemiCraftBaseAPI.instance().getAtomOresAtomName().get(par1ItemStack.getItemDamage() + var2 * 16);
+ return super.getUnlocalizedName() + "." + ChemiCraftBaseAPI.instance()
+ .getAtomOresAtomName()
+ .get(par1ItemStack.getItemDamage() + var2 * 16);
}
}
}
public void doRenderAtomsGrenade(EntityAtomsGrenade par1AtomGrenade, double par2, double par4, double par6, float par8, float par9) {
+ this.loadTexture(ChemiCraftCore.instance.BASE_PATH + "/items/atoms_grenade.png");
GL11.glPushMatrix();
GL11.glTranslatef((float)par2, (float)par4, (float)par6);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
float var10 = this.field_77002_a;
GL11.glScalef(var10 / 1.0F, var10 / 1.0F, var10 / 1.0F);
byte var11 = 1;
- this.loadTexture(ChemiCraftCore.instance.TEXTURE);
Tessellator var12 = Tessellator.instance;
float var13 = (float)(var11 % 16 * 16 + 0) / 256.0F;
float var14 = (float)(var11 % 16 * 16 + 16) / 256.0F;
"Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
"Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
"Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
- "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
+ "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Flerovium", "Ununpentium", "Livermorium", "Ununseptium", "Ununoctium" };
/**
* 元素名日本語版配列
"ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
"ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
"アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
- "ã\83\9cã\83¼ã\83ªã\82¦ã\83 ", "ã\83\8fã\83\83ã\82·ã\82¦ã\83 ", "ã\83\9eã\82¤ã\83\88ã\83\8dã\83ªã\82¦ã\83 ", "ã\83\80ã\83¼ã\83 ã\82¹ã\82¿ã\83\81ã\82¦ã\83 ", "ã\83¬ã\83³ã\83\88ã\82²ã\83\8bã\82¦ã\83 ", "ã\82³ã\83\9aã\83«ã\83\8bã\82·ã\82¦ã\83 ", "ã\82¦ã\83³ã\82¦ã\83³ã\83\88ã\83ªã\82¦ã\83 ", "ã\82¦ã\83³ã\82¦ã\83³ã\82¯ã\82¢ã\82¸ã\82¦ã\83 ", "ã\82¦ã\83³ã\82¦ã\83³ã\83\9aã\83³ã\83\81ã\82¦ã\83 ", "ã\82¦ã\83³ã\82¦ã\83³ã\83\98ã\82ã\82·ウム", "ウンウンセプチウム", "ウンウンオクチウム" };
+ "ã\83\9cã\83¼ã\83ªã\82¦ã\83 ", "ã\83\8fã\83\83ã\82·ã\82¦ã\83 ", "ã\83\9eã\82¤ã\83\88ã\83\8dã\83ªã\82¦ã\83 ", "ã\83\80ã\83¼ã\83 ã\82¹ã\82¿ã\83\81ã\82¦ã\83 ", "ã\83¬ã\83³ã\83\88ã\82²ã\83\8bã\82¦ã\83 ", "ã\82³ã\83\9aã\83«ã\83\8bã\82·ã\82¦ã\83 ", "ã\82¦ã\83³ã\82¦ã\83³ã\83\88ã\83ªã\82¦ã\83 ", "ã\83\95ã\83¬ã\83ã\83\93ã\82¦ã\83 ", "ã\82¦ã\83³ã\82¦ã\83³ã\83\9aã\83³ã\83\81ã\82¦ã\83 ", "ã\83ªã\83\90ã\83¢ã\83ªウム", "ウンウンセプチウム", "ウンウンオクチウム" };
/**
* this is ChemiCraft instance.
@Override
public void start() {
//Itemを変数に代入
- this.mod.itemAtoms = new ItemAtoms(this.mod.atomsID).setUnlocalizedName("atoms");
+ this.mod.itemAtoms = new ItemAtoms(this.mod.atomsID).setUnlocalizedName(ChemiCraft.TEXTURE + "atoms");
this.mod.itemCompounds = new ItemCompounds(this.mod.compoundsID).setUnlocalizedName("compounds");
this.mod.itemGasCollectingBottle = new ItemGasCollectingBottle(this.mod.gasCollectingBottleID).setUnlocalizedName("gasCollectingBottle");
this.mod.itemChemicalCells = new ItemChemicalCell(this.mod.chemicalCellsID).setUnlocalizedName("chemicalCell");
import java.util.List;
import java.util.Random;
+import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.Icon;
import net.minecraft.world.World;
+import pcc.chemicraft.ChemiCraft;
import pcc.chemicraft.core.ChemiCraftCore;
import pcc.chemicraft.util.AtomInfo;
import cpw.mods.fml.relauncher.Side;
public class ItemAtoms extends Item {
+ private Icon[] icons;
+
public ItemAtoms(int par1){
super(par1);
this.maxStackSize = 64;
- public int getMetadata(int par1)
- {
- return par1;
+ @Override
+ @SideOnly(Side.CLIENT)
+ public Icon getIconFromDamage(int par1) {
+ return this.icons[par1];
}
@Override
public String getUnlocalizedName(ItemStack par1ItemStack){
- return super.getUnlocalizedName() + ChemiCraftCore.instance.ATOMSNAME[par1ItemStack.getItemDamage()];
+ return super.getUnlocalizedName() + "." + ChemiCraftCore.instance.ATOMSNAME[par1ItemStack.getItemDamage()];
+ }
+
+
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void updateIcons(IconRegister par1IconRegister) {
+ this.icons = new Icon[ChemiCraftCore.instance.ATOMSNAME.length];
+
+ for (int i = 0; i < ChemiCraftCore.instance.ATOMSNAME.length; i++) {
+ this.icons[i] = par1IconRegister.registerIcon(ChemiCraft.TEXTURE + "atoms_" + ChemiCraftCore.instance.ATOMSNAME[i]);
+ }
}
}
\ No newline at end of file
+/*
package pcc.chemicraft.testcase;
import static org.junit.Assert.*;
}
}
+*/
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
+import net.minecraftforge.oredict.OreDictionary;
import pcc.chemicraft.util.Auxiliary.Probability;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
};
+ public static final Integer[] OREOFVANILLA = new Integer[] {
+ 6, 26, 79
+ };
+
+
/**
* X, Y, Z座標
*/
int var1 = 0;
Probability var2 = new Probability();
switch (par1) {
- case 92:
- var1 = 90;
- break;
- case 91:
- var1 = 92;
+ case 92:
+ var1 = 90;
+ break;
+ case 91:
+ var1 = 92;
+ break;
+ case 90:
+ switch (var2.getProbability(1, 1)) {
+ case 0:
+ var1 = 91;
break;
- case 90:
- switch (var2.getProbability(1, 1)) {
- case 0:
- var1 = 91;
- break;
- case 1:
- var1 = 88;
- break;
- }
+ case 1:
+ var1 = 88;
break;
- case 88:
+ }
+ break;
+ case 88:
+ var1 = 86;
+ break;
+ case 86:
+ var1 = 84;
+ break;
+ case 85:
+ switch (var2.getProbability(1, 1)) {
+ case 0:
var1 = 86;
break;
- case 86:
- var1 = 84;
+ case 1:
+ var1 = 83;
break;
- case 85:
- switch (var2.getProbability(1, 1)) {
- case 0:
- var1 = 86;
- break;
- case 1:
- var1 = 83;
- break;
- }
+ }
+ break;
+ case 84:
+ switch (var2.getProbability(1, 1)) {
+ case 0:
+ var1 = 85;
break;
- case 84:
- switch (var2.getProbability(1, 1)) {
- case 0:
- var1 = 85;
- break;
- case 1:
- var1 = 82;
- break;
- }
+ case 1:
+ var1 = 82;
break;
- case 83:
- switch (var2.getProbability(1, 1)) {
- case 0:
- var1 = 84;
- break;
- case 1:
- var1 = 81;
- break;
- }
+ }
+ break;
+ case 83:
+ switch (var2.getProbability(1, 1)) {
+ case 0:
+ var1 = 84;
break;
- case 82:
- switch (var2.getProbability(1, 1)) {
- case 0:
- var1 = 83;
- break;
- case 1:
- var1 = 80;
- break;
- }
+ case 1:
+ var1 = 81;
break;
- case 81:
- var1 = 82;
+ }
+ break;
+ case 82:
+ switch (var2.getProbability(1, 1)) {
+ case 0:
+ var1 = 83;
break;
- case 80:
- var1 = 81;
+ case 1:
+ var1 = 80;
break;
- default:
- return -1;
+ }
+ break;
+ case 81:
+ var1 = 82;
+ break;
+ case 80:
+ var1 = 81;
+ break;
+ default:
+ return -1;
}
return var1;
}
+ public static boolean isOreOfVanilla(int par1) {
+ for (int var2:OREOFVANILLA) {
+ if (par1 == var2) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+
public static boolean isExisting(String par1) {
+ for (String var2:OreDictionary.getOreNames()) {
+ if ("ore" + par1 == var2) {
+ return true;
+ }
+ }
return false;
}
for (int i = 0; i < var2.length; i++) {
if (Character.isLetter(var2[i])) {
if (Character.isUpperCase(var2[i])) {
- if (var4 < 0) {
+ if (var4 <= 0) {
var4 = 1;
}
if (var3 != null) {
}
}
if (var3 != null) {
- if (var4 < 0) {
+ if (var4 <= 0) {
var4 = 1;
}
this.setAtom(var3, var4 * var5);