feat: fixes, features

...and me being too lazy to write a proper commit message
This commit is contained in:
LordMZTE 2022-10-23 22:29:34 +02:00
parent a1ecb870e3
commit 2f77e5c471
Signed by: LordMZTE
GPG key ID: B64802DC33A64FF6
21 changed files with 842 additions and 544 deletions

View file

@ -27,13 +27,14 @@ import atomicscience.fenlie.TFissionReactor;
import atomicscience.fenlie.TNuclearBoiler;
import atomicscience.fenlie.TReactorTap;
import atomicscience.hecheng.BElectromagnet;
import atomicscience.hecheng.BElectromagnetBoiler;
import atomicscience.hecheng.BElectromagnetGlass;
import atomicscience.hecheng.BFusionReactor;
import atomicscience.hecheng.BPlasma;
import atomicscience.hecheng.IBAccelerator;
import atomicscience.hecheng.IBPlasma;
import atomicscience.hecheng.IBSiren;
import atomicscience.hecheng.TElectromagnet;
import atomicscience.hecheng.TElectromagnetBoiler;
import atomicscience.hecheng.TFusionReactor;
import atomicscience.jiqi.BChemicalExtractor;
import atomicscience.jiqi.BFunnel;
@ -130,6 +131,7 @@ public class AtomicScience {
public static Block bFusionReactor;
public static BPlasma bPlasma;
public static Block bElectromagnet;
public static Block bElectromagnetBoiler;
public static Block bChemicalExtractor;
public static Block bSiren;
public static Block bElectromagnetGlass;
@ -220,6 +222,7 @@ public class AtomicScience {
bFusionReactor = new BFusionReactor();
bPlasma = new BPlasma();
bElectromagnet= new BElectromagnet();
bElectromagnetBoiler = new BElectromagnetBoiler();
bChemicalExtractor = new BChemicalExtractor();
bSiren = new BSiren();
bElectromagnetGlass = new BElectromagnetGlass();
@ -297,6 +300,7 @@ public class AtomicScience {
GameRegistry.registerBlock(bFusionReactor, "bFusionReactor");
GameRegistry.registerBlock(bPlasma, IBPlasma.class, "bPlasma");
GameRegistry.registerBlock(bElectromagnet, "bElectromagnet");
GameRegistry.registerBlock(bElectromagnetBoiler, "bElectromagnetBoiler");
GameRegistry.registerBlock(bChemicalExtractor, "bChemicalExtractor");
GameRegistry.registerBlock(bSiren, IBSiren.class, "bSiren");
GameRegistry.registerBlock(bElectromagnetGlass, "bElectromagnetGlass");
@ -328,8 +332,7 @@ public class AtomicScience {
AtomicScience.CONFIGURATION.save();
MinecraftForge.EVENT_BUS.register(itCellAntimatter);
MinecraftForge.EVENT_BUS.register(FulminationEventHandler.INSTANCE);
OreDictionary.registerOre("ingotUranium", itUranium);
OreDictionary.registerOre("breederUranium", new ItemStack(itUranium, 1, 1));
OreDictionary.registerOre("breederUranium", itUranium);
OreDictionary.registerOre("blockRadioactive", blockRadioactive);
OreDictionary.registerOre("cellEmpty", itCell);
OreDictionary.registerOre("cellUranium", itCellUranium);
@ -357,7 +360,7 @@ public class AtomicScience {
GameRegistry.registerTileEntity(TTurbine.class, "ASTurbine");
GameRegistry.registerTileEntity(TNuclearBoiler.class, "ASNuclearBoiler");
GameRegistry.registerTileEntity(TThermometer.class, "ASThermometer");
GameRegistry.registerTileEntity(TElectromagnet.class, "ASElectromagnet");
GameRegistry.registerTileEntity(TElectromagnetBoiler.class, "ASElectromagnetBoiler");
GameRegistry.registerTileEntity(TChemicalExtractor.class,
"ASChemicalExtractor");
GameRegistry.registerTileEntity(TFunnel.class, "ASFunnel");
@ -399,140 +402,8 @@ public class AtomicScience {
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
UniversalRecipes.init();
if (Loader.isModLoaded("IC2")) {
OreDictionary.registerOre("cellEmpty", itCell);
GameRegistry.addRecipe(new ShapelessOreRecipe(
itYellowcake, GameRegistry.findItem("IC2", "reactorUraniumSimple")));
Item ic2FluidCell = GameRegistry.findItem("IC2", "itemFluidCell");
GameRegistry.addRecipe(new ShapelessOreRecipe(ic2FluidCell, itCell));
GameRegistry.addRecipe(new ShapelessOreRecipe(itCell, "cellEmpty"));
}
Recipes.addRecipes();
GameRegistry.addRecipe(new ShapelessOreRecipe(
new ItemStack(itCellAntimatter, 1, 1), itCellAntimatter,
itCellAntimatter, itCellAntimatter, itCellAntimatter, itCellAntimatter,
itCellAntimatter, itCellAntimatter, itCellAntimatter));
GameRegistry.addRecipe(new ShapelessOreRecipe(
new ItemStack(itCellAntimatter, 8, 0),
new Object[] {new ItemStack(itCellAntimatter, 1, 1)}));
GameRegistry.addRecipe(new ShapedOreRecipe(
new ItemStack(bFunnel, 2), " B ", "B B", "B B", 'B', "ingotBronze"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(bFunnel, 2), " B ",
"B B", "B B", 'B', "ingotIron"));
GameRegistry.addRecipe(new ShapedOreRecipe(
bAtomicAssembler, "CCC", "SXS", "SSS", 'X', bCentrifuge, 'C',
"calclavia:CIRCUIT_T3", 'S', "plateSteel"));
GameRegistry.addRecipe(new ShapedOreRecipe(
bFulminationGenerator, "OSO", "SCS", "OSO", 'O', Blocks.obsidian, 'C',
"calclavia:CIRCUIT_T2", 'S', "plateSteel"));
GameRegistry.addRecipe(new ShapedOreRecipe(
bAccelerator, "SCS", "CMC", "SCS", 'M', "calclavia:MOTOR", 'C',
"calclavia:CIRCUIT_T3", 'S', "plateSteel"));
GameRegistry.addRecipe(new ShapelessOreRecipe(
bElectromagnetGlass, new Object[] {bElectromagnet, Blocks.glass}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bCentrifuge,
new Object[] {"BSB", "MCM", "BSB", Character.valueOf('C'),
"calclavia:CIRCUIT_T2", Character.valueOf('S'),
"plateSteel", Character.valueOf('B'), "ingotBronze",
Character.valueOf('M'), "calclavia:MOTOR"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bNuclearBoiler,
new Object[] {"S S", "FBF", "SMS", Character.valueOf('F'),
Blocks.furnace, Character.valueOf('S'), "plateSteel",
Character.valueOf('B'), Items.bucket,
Character.valueOf('M'), "calclavia:MOTOR"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bChemicalExtractor,
new Object[] {"BSB", "MCM", "BSB", Character.valueOf('C'),
"calclavia:CIRCUIT_T3", Character.valueOf('S'),
"plateSteel", Character.valueOf('B'), "ingotBronze",
Character.valueOf('M'), "calclavia:MOTOR"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
new ItemStack(bSiren, 2),
new Object[] {"NPN", Character.valueOf('N'), Blocks.noteblock,
Character.valueOf('P'), "plateBronze"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bFissionReactor,
new Object[] {"SCS", "MEM", "SCS", Character.valueOf('E'), "cellEmpty",
Character.valueOf('C'), "calclavia:CIRCUIT_T2",
Character.valueOf('S'), "plateSteel",
Character.valueOf('M'), "calclavia:MOTOR"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bFusionReactor,
new Object[] {"CPC", "PFP", "CPC", Character.valueOf('P'), "plateSteel",
Character.valueOf('F'), bFissionReactor,
Character.valueOf('C'), "calclavia:CIRCUIT_T3"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bTurbine, new Object[] {" B ", "BMB", " B ", Character.valueOf('B'),
"plateBronze", Character.valueOf('M'),
"calclavia:MOTOR"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bReactorTap,
new Object[] {"SBS", "TMT", "SBS", Character.valueOf('S'),
"plateBronze", Character.valueOf('T'), "ingotBronze",
Character.valueOf('M'), "calclavia:MOTOR",
Character.valueOf('B'), Items.bucket}));
GameRegistry.addRecipe(new ShapedOreRecipe(
new ItemStack(itCell, 16),
new Object[] {" T ", "TGT", " T ", Character.valueOf('T'), "ingotTin",
Character.valueOf('G'), Blocks.glass}));
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(itCellWater),
itCell, Items.water_bucket));
GameRegistry.addRecipe(new ShapedOreRecipe(
ElectricItemHelper.getUncharged(new ItemStack(itThermometer)),
new Object[] {"SSS", "GCG", "GSG", Character.valueOf('S'), "ingotSteel",
Character.valueOf('G'), Blocks.glass,
Character.valueOf('C'), "calclavia:CIRCUIT_T1"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bThermometer, new Object[] {"SSS", "SWS", "SSS", Character.valueOf('S'),
"ingotSteel", Character.valueOf('W'),
ElectricItemHelper.getUncharged(
new ItemStack(itThermometer))}));
GameRegistry.addRecipe(new ShapedOreRecipe(
bControlRod, new Object[] {"I", "I", "I", Character.valueOf('I'),
Items.iron_ingot}));
GameRegistry.addRecipe(new ShapedOreRecipe(
itCellUranium,
new Object[] {"CUC", "CUC", "CUC", Character.valueOf('U'),
"ingotUranium", Character.valueOf('C'), "cellEmpty"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
itCellBreederFuel,
new Object[] {"CUC", "CUC", "CUC", Character.valueOf('U'),
"breederUranium", Character.valueOf('C'), "cellEmpty"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
new ItemStack(bElectromagnet, 2),
new Object[] {"BBB", "BMB", "BBB", Character.valueOf('B'),
"ingotBronze", Character.valueOf('M'),
"calclavia:MOTOR"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
new ItemStack(bElectromagnet, 2),
new Object[] {"BBB", "BMB", "BBB", Character.valueOf('B'), "ingotIron",
Character.valueOf('M'), "calclavia:MOTOR"}));
GameRegistry.addRecipe(new ShapedOreRecipe(
itHazmatHelmet,
new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'),
Items.leather_helmet, Character.valueOf('C'),
"calclavia:CIRCUIT_T1", Character.valueOf('S'),
Blocks.wool}));
GameRegistry.addRecipe(new ShapedOreRecipe(
itHazmatChestplate,
new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'),
Items.leather, Character.valueOf('C'),
"calclavia:CIRCUIT_T1", Character.valueOf('S'),
Blocks.wool}));
GameRegistry.addRecipe(new ShapedOreRecipe(
itHazmanLeggings,
new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'),
Items.leather_leggings, Character.valueOf('C'),
"calclavia:CIRCUIT_T1", Character.valueOf('S'),
Blocks.wool}));
GameRegistry.addRecipe(new ShapedOreRecipe(
itHazmatBoots,
new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'),
Items.leather_boots, Character.valueOf('C'),
"calclavia:CIRCUIT_T1", Character.valueOf('S'),
Blocks.wool}));
EntityRegistry.registerGlobalEntityID(
EMatter.class, "ASParticle", EntityRegistry.findGlobalUniqueEntityId());
EntityRegistry.registerModEntity(EMatter.class, "ASParticle", 49, this, 80,
@ -645,20 +516,6 @@ public class AtomicScience {
}
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void textureHook(Post event) {
// TODO: WTF
// if (event.map == Minecraft.getMinecraft().renderEngine.field_94155_m) {
FLUID_URANIUM_HEXAFLOURIDE.setIcons(
event.map.registerIcon("atomicscience:uraniumHexafluoride"));
// TODO: might override railcraft icon?
FLUID_STEAM.setIcons(event.map.registerIcon("atomicscience:steam"));
FLUID_TOXIC_WASTE.setIcons(
event.map.registerIcon("atomicscience:toxicWaste"));
}
// TODO: WTF
// @EventHandler public void serverStarting(FMLServerStartingEvent event) {
// FlagRegistry.registerModFlag(

View file

@ -64,5 +64,12 @@ public class BToxicWaste extends BlockFluidClassic {
public void registerBlockIcons(IIconRegister iconRegister) {
this.blockIcon = iconRegister.registerIcon("atomicscience:toxicWaste");
AtomicScience.FLUID_TOXIC_WASTE.setIcons(this.blockIcon);
// TODO: WTF
AtomicScience.FLUID_URANIUM_HEXAFLOURIDE.setIcons(
iconRegister.registerIcon("atomicscience:uraniumHexafluoride"));
// TODO: might override railcraft icon?
AtomicScience.FLUID_STEAM.setIcons(
iconRegister.registerIcon("atomicscience:steam"));
}
}

View file

@ -0,0 +1,239 @@
package atomicscience;
import atomicscience.recipe.RecipeBuilder;
import atomicscience.recipe.ShapedOreRecipeAdapter;
import atomicscience.recipe.ShapelessOreRecipeAdapter;
import basiccomponents.common.BasicComponents;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import universalelectricity.core.item.ElectricItemHelper;
public class Recipes {
/**
* Registers the recipes and OreDictionary entries.
*/
public static void addRecipes() {
OreDictionary.registerOre("cellEmpty", AtomicScience.itCell);
if (Loader.isModLoaded("IC2")) {
new RecipeBuilder(new ShapelessOreRecipeAdapter())
.output(AtomicScience.itYellowcake)
.ingredient(GameRegistry.findItem("IC2", "reactorUraniumSimple"))
.register();
new RecipeBuilder(new ShapelessOreRecipeAdapter())
.output(GameRegistry.findItem("IC2", "itemFluidCell"))
.ingredient(AtomicScience.itCell)
.register();
new RecipeBuilder(new ShapelessOreRecipeAdapter())
.output(AtomicScience.itCell)
.ingredient("cellEmpty")
.register();
}
new RecipeBuilder(new ShapelessOreRecipeAdapter())
.output(new ItemStack(AtomicScience.itCellAntimatter, 1, 1))
.ingredient(AtomicScience.itCellAntimatter)
.ingredient(AtomicScience.itCellAntimatter)
.ingredient(AtomicScience.itCellAntimatter)
.ingredient(AtomicScience.itCellAntimatter)
.ingredient(AtomicScience.itCellAntimatter)
.ingredient(AtomicScience.itCellAntimatter)
.ingredient(AtomicScience.itCellAntimatter)
.ingredient(AtomicScience.itCellAntimatter)
.register();
new RecipeBuilder(new ShapelessOreRecipeAdapter())
.output(AtomicScience.itCellAntimatter, 8)
.ingredient(new ItemStack(AtomicScience.itCellAntimatter, 1, 1))
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bFunnel, 2)
.pattern(" B ", "B B", "B B")
.ingredient('B', "ingotBronze")
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bFunnel, 2)
.pattern(" I ", "I I", "I I")
.ingredient('I', "ingotIron")
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bAtomicAssembler)
.pattern("CCC", "SXS", "SSS")
.ingredient('X', AtomicScience.bCentrifuge)
.ingredient('C', BasicComponents.itemCircuitElite)
.ingredient('S', "plateSteel")
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bFulminationGenerator)
.pattern("OSO", "SCS", "OSO")
.ingredient('O', Blocks.obsidian)
.ingredient('C', BasicComponents.itemCircuitAdvanced)
.ingredient('S', "plateSteel")
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bAccelerator)
.pattern("SCS", "CMC", "SCS")
.ingredient('M', BasicComponents.itemMotor)
.ingredient('C', BasicComponents.itemCircuitElite)
.ingredient('S', "plateSteel")
.register();
new RecipeBuilder(new ShapelessOreRecipeAdapter())
.output(AtomicScience.bElectromagnetGlass)
.ingredient(AtomicScience.bElectromagnet)
.ingredient(Blocks.glass)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bCentrifuge)
.pattern("BSB", "MCM", "BSB")
.ingredient('C', BasicComponents.itemCircuitAdvanced)
.ingredient('S', "plateSteel")
.ingredient('B', "ingotBronze")
.ingredient('M', BasicComponents.itemMotor)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bNuclearBoiler)
.pattern("S S", "FBF", "SMS")
.ingredient('F', Blocks.furnace)
.ingredient('S', "plateSteel")
.ingredient('B', Items.bucket)
.ingredient('M', BasicComponents.itemMotor)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bChemicalExtractor)
.pattern("BSB", "MCM", "BSB")
.ingredient('C', BasicComponents.itemCircuitElite)
.ingredient('S', "plateSteel")
.ingredient('B', "ingotBronze")
.ingredient('M', BasicComponents.itemMotor)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bSiren, 2)
.pattern("NPN")
.ingredient('N', Blocks.noteblock)
.ingredient('P', "plateBronze")
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bFissionReactor)
.pattern("SCS", "MEM", "SCS")
.ingredient('E', "cellEmpty")
.ingredient('C', BasicComponents.itemCircuitAdvanced)
.ingredient('S', "plateSteel")
.ingredient('M', BasicComponents.itemMotor)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bFusionReactor)
.pattern("CPC", "PFP", "CPC")
.ingredient('P', "plateSteel")
.ingredient('F', AtomicScience.bFissionReactor)
.ingredient('C', BasicComponents.itemCircuitElite)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bTurbine)
.pattern(" B ", "BMB", " B ")
.ingredient('B', "plateBronze")
.ingredient('M', BasicComponents.itemMotor)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bReactorTap)
.pattern("SBS", "TMT", "SBS")
.ingredient('S', "plateBronze")
.ingredient('M', BasicComponents.itemMotor)
.ingredient('B', Items.bucket)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.itCell, 16)
.pattern(" T ", "TGT", " T ")
.ingredient('T', "ingotTin")
.ingredient('G', Blocks.glass)
.register();
new RecipeBuilder(new ShapelessOreRecipeAdapter())
.output(AtomicScience.itCellWater)
.ingredient(AtomicScience.itCell)
.ingredient(Items.water_bucket)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(ElectricItemHelper.getUncharged(AtomicScience.itThermometer))
.pattern("SSS", "GCG", "GSG")
.ingredient('S', "ingotSteel")
.ingredient('G', Blocks.glass)
.ingredient('C', BasicComponents.itemCircuitBasic)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bThermometer)
.pattern("SSS", "SWS", "SSS")
.ingredient('S', "ingotSteel")
.ingredient(
'W', ElectricItemHelper.getUncharged(AtomicScience.itThermometer))
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bControlRod)
.pattern("I", "I", "I")
.ingredient('I', Items.iron_ingot)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.itCellUranium)
.pattern("CUC", "CUC", "CUC")
.ingredient('U', AtomicScience.itUranium)
.ingredient('C', "cellEmpty")
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.itCellBreederFuel)
.pattern("CUC", "CUC", "CUC")
.ingredient('C', "cellEmpty")
.ingredient('U', "breederUranium")
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bElectromagnet, 2)
.pattern("BBB", "BMB", "BBB")
.ingredient('B', "ingotBronze")
.ingredient('M', BasicComponents.itemMotor)
.register();
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.bElectromagnet, 2)
.pattern("III", "IMI", "III")
.ingredient('I', Items.iron_ingot)
.ingredient('M', BasicComponents.itemMotor)
.register();
for (ItemArmor armorPiece :
new ItemArmor[] {Items.leather_helmet, Items.leather_chestplate,
Items.leather_leggings, Items.leather_boots}) {
new RecipeBuilder(new ShapedOreRecipeAdapter())
.output(AtomicScience.itHazmatHelmet)
.pattern("SSS", " A ", "SCS")
.ingredient('A', armorPiece)
.ingredient('C', BasicComponents.itemCircuitBasic)
.ingredient('S', Blocks.wool)
.register();
}
}
}

View file

@ -20,6 +20,7 @@ public class TAtomicAssembler extends TInventory {
public float rotationYaw3;
public EntityItem entityItem;
@Override
public void updateEntity() {
super.updateEntity();
if (!this.isDisabled()) {
@ -70,11 +71,9 @@ public class TAtomicAssembler extends TInventory {
var3 = var3.copy();
var3.stackSize = 1;
if (this.entityItem == null) {
this.entityItem =
new EntityItem(this.worldObj, 0.0D, 0.0D, 0.0D, var3);
this.entityItem = new EntityItem(this.worldObj, 0.0D, 0.0D, 0.0D, var3);
} else if (!var3.isItemEqual(this.entityItem.getEntityItem())) {
this.entityItem =
new EntityItem(this.worldObj, 0.0D, 0.0D, 0.0D, var3);
this.entityItem = new EntityItem(this.worldObj, 0.0D, 0.0D, 0.0D, var3);
}
++this.entityItem.age;
@ -85,6 +84,7 @@ public class TAtomicAssembler extends TInventory {
}
}
@Override
public ElectricityPack getRequest() {
return this.canWork()
? new ElectricityPack(10000.0D / this.getVoltage(), this.getVoltage())
@ -111,6 +111,7 @@ public class TAtomicAssembler extends TInventory {
this.getBlockMetadata(), nbt);
}
@Override
public void openInventory() {
if (!this.worldObj.isRemote) {
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
@ -124,8 +125,7 @@ public class TAtomicAssembler extends TInventory {
return false;
}
if (super.containingItems[i].getItem() !=
AtomicScience.itCellStrangeMatter) {
if (super.containingItems[i].getItem() != AtomicScience.itCellStrangeMatter) {
return false;
}
}
@ -154,25 +154,32 @@ public class TAtomicAssembler extends TInventory {
}
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.smeltingTicks = nbt.getInteger("smeltingTicks");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setInteger("smeltingTicks", this.smeltingTicks);
}
@Override
public double getVoltage() {
return UniversalElectricity.isVoltageSensitive ? 480.0D : 120.0D;
}
public int getSizeInventory() { return 7; }
@Override
public int getSizeInventory() {
return 7;
}
@Override
public boolean isItemValidForSlot(int slotID, ItemStack itemStack) {
return slotID == 6
? true
? itemStack.isStackable()
: itemStack.getItem() == AtomicScience.itCellStrangeMatter;
}
}

View file

@ -237,7 +237,7 @@ public class TAutoBuilder
targetPosition =
(new Vector3((double)x, 1.0D, (double)z)).add(diDian);
targetPosition.setBlock(
this.worldObj, AtomicScience.bElectromagnet);
this.worldObj, AtomicScience.bElectromagnetBoiler);
targetPosition =
(new Vector3((double)x, -1.0D, (double)z)).add(diDian);
targetPosition.setBlock(
@ -329,7 +329,6 @@ public class TAutoBuilder
}
public static enum AutoBuilderType {
JIA_SU_QI("Particle Accelerator"),
FEN_LIE("Fission Reactor"),
HE_CHENG("Fusion Reactor"),

View file

@ -0,0 +1,16 @@
package atomicscience;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class TileEntityFilteredSlot extends Slot {
public TileEntityFilteredSlot(IInventory arg0, int arg1, int arg2, int arg3) {
super(arg0, arg1, arg2, arg3);
}
@Override
public boolean isItemValid(ItemStack arg0) {
return this.inventory.isItemValidForSlot(this.getSlotIndex(), arg0);
}
}

View file

@ -263,7 +263,7 @@ public class EMatter extends Entity implements IEntityAdditionalSpawnData {
}
super.worldObj.playSoundEffect(
super.posX, super.posY, super.posZ, "atomicscience.antimatter", 1.5F,
super.posX, super.posY, super.posZ, SoundManager.ANTIMATTER, 1.5F,
1.0F - super.worldObj.rand.nextFloat() * 0.3F);
this.setDead();
}
@ -276,13 +276,11 @@ public class EMatter extends Entity implements IEntityAdditionalSpawnData {
public static boolean canExist(World worldObj, Vector3 position,
ForgeDirection facing) {
if (position.getBlock(worldObj) != Blocks.air) {
AtomicScience.LOGGER.info("block not air " + position);
return false;
} else {
for (int i = 0; i <= 1; ++i) {
ForgeDirection dir = ForgeDirection.getOrientation(i);
if (!isElectromagnet(worldObj, position, dir)) {
AtomicScience.LOGGER.info("not alectromagnet " + position);
return false;
}
}

View file

@ -19,21 +19,47 @@ import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.tile.TileEntityAdvanced;
public class TReactorTap extends TileEntityAdvanced implements IFluidHandler {
private final Set<FluidTank> tanks = new HashSet<>();
private long lastFindTime = -1L;
@Override
public void updateEntity() {
super.updateEntity();
if (!this.worldObj.isRemote && this.ticks % 20 == 0) {
FluidTank optimalTank = this.getOptimalTank();
if (optimalTank == null)
return;
ForgeDirection rotation =
ForgeDirection.getOrientation(this.worldObj.getBlockMetadata(
this.xCoord, this.yCoord, this.zCoord));
Vector3 neighborPos = new Vector3(this).modifyPositionFromSide(rotation);
if (neighborPos.getTileEntity(this.worldObj) instanceof IFluidHandler) {
IFluidHandler fHandler =
(IFluidHandler)neighborPos.getTileEntity(this.worldObj);
int drained =
fHandler.fill(rotation.getOpposite(), optimalTank.getFluid(), true);
if (drained != 0)
optimalTank.drain(drained, true);
}
}
}
public void find() {
this.tanks.clear();
final World world = this.worldObj;
final Vector3 position = new Vector3(this);
Pathfinder finder = (new Pathfinder(new IPathCallBack() {
Pathfinder finder =
(new Pathfinder(new IPathCallBack() {
public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode) {
HashSet<Vector3> neighbors = new HashSet<>();
for (int i = 0; i < 6; ++i) {
ForgeDirection direction = ForgeDirection.getOrientation(i);
Vector3 positionx = currentNode.clone().modifyPositionFromSide(direction);
Vector3 positionx =
currentNode.clone().modifyPositionFromSide(direction);
Block connectedBlockID = positionx.getBlock(world);
if (connectedBlockID == Blocks.air ||
connectedBlockID instanceof BlockLiquid ||
@ -79,7 +105,9 @@ public class TReactorTap extends TileEntityAdvanced implements IFluidHandler {
FluidTank optimalTank = null;
for (FluidTank tank : this.tanks) {
if (this.getLiquidSafe(tank.getFluid()) > this.getLiquidSafe(optimalTank.getFluid())) {
int optimalTankContent =
optimalTank == null ? 0 : optimalTank.getFluidAmount();
if (tank.getFluidAmount() > optimalTankContent) {
optimalTank = tank;
}
}
@ -87,14 +115,6 @@ public class TReactorTap extends TileEntityAdvanced implements IFluidHandler {
return optimalTank;
}
public int getLiquidSafe(FluidStack stack) {
return stack != null ? stack.amount : 0;
}
public boolean canUpdate() {
return false;
}
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
return 0;
}

View file

@ -5,14 +5,15 @@ import atomicscience.jiqi.BBase;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class BElectromagnet extends BBase implements IElectromagnet {
private IIcon iconTop;
protected IIcon iconTop;
public BElectromagnet() { super("electromagnet"); }
public BElectromagnet() { this("electromagnet"); }
public BElectromagnet(String id) { super(id); }
@Override
public IIcon getIcon(int side, int metadata) {
@ -23,15 +24,8 @@ public class BElectromagnet extends BBase implements IElectromagnet {
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
super.registerBlockIcons(iconRegister);
this.iconTop = iconRegister.registerIcon(
this.getUnlocalizedName().replace("tile.", "") + "_top");
this.blockIcon = iconRegister.registerIcon(
this.getUnlocalizedName().replace("tile.", ""));
}
@Override
public TileEntity createNewTileEntity(World var1, int meta) {
return new TElectromagnet();
this.iconTop = iconRegister.registerIcon("atomicscience:electromagnet_top");
this.blockIcon = iconRegister.registerIcon("atomicscience:electromagnet");
}
@Override

View file

@ -0,0 +1,13 @@
package atomicscience.hecheng;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BElectromagnetBoiler extends BElectromagnet {
public BElectromagnetBoiler() { super("electromagnetBoiler"); }
@Override
public TileEntity createNewTileEntity(World var1, int meta) {
return new TElectromagnetBoiler();
}
}

View file

@ -2,7 +2,7 @@ package atomicscience.hecheng;
import atomicscience.api.IElectromagnet;
import atomicscience.api.Plasma;
import atomicscience.hecheng.TElectromagnet;
import atomicscience.hecheng.TElectromagnetBoiler;
import atomicscience.jiqi.BBase;
import java.util.Random;
import net.minecraft.block.Block;
@ -50,9 +50,9 @@ public class BPlasma extends BBase implements Plasma.IPlasma {
}
} else {
TileEntity var10 = zhaoDiDian.getTileEntity(worldObj);
if (var10 instanceof TElectromagnet) {
((TElectromagnet) var10)
.setTemperature(((TElectromagnet) var10).getTemperature() + 100.0F);
if (var10 instanceof TElectromagnetBoiler) {
((TElectromagnetBoiler) var10)
.setTemperature(((TElectromagnetBoiler) var10).getTemperature() + 100.0F);
}
}
}

View file

@ -9,7 +9,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.tile.TileEntityAdvanced;
public class TElectromagnet extends TileEntityAdvanced implements ITemperature {
public class TElectromagnetBoiler extends TileEntityAdvanced implements ITemperature {
public static final int MAX_TEMP = 5000;
private float temperature = 0.0F;

View file

@ -3,7 +3,6 @@ package atomicscience.hecheng;
import atomicscience.AtomicScience;
import atomicscience.jiqi.TInventory;
import calclavia.lib.render.ITagRender;
import com.google.common.io.ByteArrayDataInput;
import java.util.HashMap;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;

View file

@ -2,6 +2,7 @@ package atomicscience.jiqi;
import atomicscience.AtomicScience;
import atomicscience.TAtomicAssembler;
import atomicscience.TileEntityFilteredSlot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
@ -14,13 +15,13 @@ public class CAssembler extends Container {
public CAssembler(InventoryPlayer par1InventoryPlayer,
TAtomicAssembler tileEntity) {
this.tileEntity = tileEntity;
this.addSlotToContainer(new Slot(tileEntity, 0, 80, 40));
this.addSlotToContainer(new Slot(tileEntity, 1, 53, 56));
this.addSlotToContainer(new Slot(tileEntity, 2, 107, 56));
this.addSlotToContainer(new Slot(tileEntity, 3, 53, 88));
this.addSlotToContainer(new Slot(tileEntity, 4, 107, 88));
this.addSlotToContainer(new Slot(tileEntity, 5, 80, 103));
this.addSlotToContainer(new Slot(tileEntity, 6, 80, 72));
this.addSlotToContainer(new TileEntityFilteredSlot(tileEntity, 0, 80, 40));
this.addSlotToContainer(new TileEntityFilteredSlot(tileEntity, 1, 53, 56));
this.addSlotToContainer(new TileEntityFilteredSlot(tileEntity, 2, 107, 56));
this.addSlotToContainer(new TileEntityFilteredSlot(tileEntity, 3, 53, 88));
this.addSlotToContainer(new TileEntityFilteredSlot(tileEntity, 4, 107, 88));
this.addSlotToContainer(new TileEntityFilteredSlot(tileEntity, 5, 80, 103));
this.addSlotToContainer(new TileEntityFilteredSlot(tileEntity, 6, 80, 72));
int var3;
for (var3 = 0; var3 < 3; ++var3) {
@ -62,6 +63,7 @@ public class CAssembler extends Container {
return null;
}
} else if (!this.getSlot(6).getHasStack() &&
itemStack.isStackable() &&
!this.mergeItemStack(itemStack, 6, 7, false)) {
return null;
}

View file

@ -21,25 +21,35 @@ public class TFunnel
public TFunnel() {
this.gasTank = new FluidTank(AtomicScience.FLUID_STEAM, 0, 20000);
// TODO: WTF
// this.gasTank.setTankPressure(10);
}
@Override
public void updateEntity() {
super.updateEntity();
if (super.ticks % 20L == 0L) {
if (!this.worldObj.isRemote && super.ticks % 20L == 0L) {
TileEntity tileEntity = this.worldObj.getTileEntity(
this.xCoord, this.yCoord + 1, this.zCoord);
if (tileEntity != null && tileEntity instanceof ISteamReceptor) {
FluidStack drainStack = this.gasTank.drain(AtomicScience.STEAM_RATIO, true);
if (tileEntity instanceof ISteamReceptor) {
FluidStack drainStack =
this.gasTank.drain(AtomicScience.STEAM_RATIO, true);
if (drainStack != null) {
int nengLiang = drainStack.amount;
((ISteamReceptor)tileEntity)
.onReceiveSteam(nengLiang - nengLiang / 4);
}
}
if (tileEntity instanceof IFluidHandler) {
IFluidHandler fHandler = ((IFluidHandler)tileEntity);
int transferred =
fHandler.fill(ForgeDirection.DOWN,
this.gasTank.getFluid(),
true);
if (transferred != 0)
this.gasTank.drain(transferred, true);
}
}
}

View file

@ -0,0 +1,14 @@
package atomicscience.recipe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
public interface IRecipeAdapter {
public void setOutput(ItemStack item);
public void setPattern(String... pattern);
public void addIngredient(Object... ingredients);
public IRecipe create();
}

View file

@ -0,0 +1,49 @@
package atomicscience.recipe;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class RecipeBuilder {
IRecipeAdapter adapter;
public RecipeBuilder(IRecipeAdapter adapter) { this.adapter = adapter; }
public RecipeBuilder output(ItemStack stack) {
this.adapter.setOutput(stack);
return this;
}
public RecipeBuilder output(Item item) {
this.adapter.setOutput(new ItemStack(item));
return this;
}
public RecipeBuilder output(Block block) {
this.adapter.setOutput(new ItemStack(block));
return this;
}
public RecipeBuilder output(Block block, int count) {
this.adapter.setOutput(new ItemStack(block, count));
return this;
}
public RecipeBuilder output(Item item, int count) {
this.adapter.setOutput(new ItemStack(item, count));
return this;
}
public RecipeBuilder pattern(String... pat) {
this.adapter.setPattern(pat);
return this;
}
public RecipeBuilder ingredient(Object... i) {
this.adapter.addIngredient(i);
return this;
}
public void register() { GameRegistry.addRecipe(this.adapter.create()); }
}

View file

@ -0,0 +1,41 @@
package atomicscience.recipe;
import java.util.ArrayList;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.oredict.ShapedOreRecipe;
public class ShapedOreRecipeAdapter implements IRecipeAdapter {
ItemStack output;
String[] pattern;
ArrayList<Object> ingredients = new ArrayList<>();
@Override
public void setOutput(ItemStack item) {
this.output = item;
}
@Override
public void setPattern(String... pattern) {
this.pattern = pattern;
}
@Override
public void addIngredient(Object... ingredients) {
this.ingredients.add(ingredients[0]);
this.ingredients.add(ingredients[1]);
}
@Override
public IRecipe create() {
ArrayList<Object> args = new ArrayList<>();
for (String pat : this.pattern)
args.add(pat);
for (Object ing : this.ingredients)
args.add(ing);
return new ShapedOreRecipe(this.output, args.toArray());
}
}

View file

@ -0,0 +1,31 @@
package atomicscience.recipe;
import java.util.ArrayList;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
public class ShapelessOreRecipeAdapter implements IRecipeAdapter {
ItemStack output;
ArrayList<Object> ingredients = new ArrayList<>();
@Override
public void setOutput(ItemStack item) {
this.output = item;
}
@Override
public void setPattern(String... pattern) {
throw new UnsupportedOperationException("Shapeless recipe has no pattern!");
}
@Override
public void addIngredient(Object... ingredients) {
this.ingredients.add(ingredients[0]);
}
@Override
public IRecipe create() {
return new ShapelessOreRecipe(this.output, this.ingredients.toArray());
}
}

View file

@ -52,7 +52,7 @@ public class GFissionReactor extends GuiContainerBase {
@Override
protected void drawGuiContainerBackgroundLayer(float par1, int x, int y) {
//super.drawGuiContainerBackgroundLayer(par1, x, y);
super.drawGuiContainerBackgroundLayer(par1, x, y);
this.drawSlot(78, 20);
if (this.tileEntity.wasteTank.getFluid() != null) {
int toxicity1 = this.tileEntity.wasteTank.getFluidAmount();

View file

@ -24,8 +24,9 @@ item.atomicscience\:uranium.0.name=Uranium-235
item.atomicscience\:uranium.1.name=Uranium-238
item.atomicscience\:rodFissileFuel.name=Fissile Fuel Rod
item.atomicscience\:rodBreederFuel.name=Breeder Fuel Rod
item.atomicscience\:uraniumHexafluoride.name=Uranium Hexafluoride
item.atomicscience\:steam.name=Steam
fluid.uranium_hexafluoride=Uranium Hexafluoride
fluid.steam=Steam
fluid.toxic_waste=Toxic Waste
## Blocks
tile.atomicscience\:reactorTap.name=Reactor Drain
@ -38,6 +39,7 @@ tile.atomicscience\:turbine.name=Reactor Turbine
tile.atomicscience\:radioactive.name=Radioactive Material
tile.atomicscience\:thermometer.name=Thermometer
tile.atomicscience\:electromagnet.name=Electromagnet
tile.atomicscience\:electromagnetBoiler.name=Electromagnet Boiler
tile.atomicscience\:chemicalExtractor.name=Chemical Extractor
tile.atomicscience\:siren.name=Siren
tile.atomicscience\:electromagnetGlass.name=Electromagnet Glass