diff --git a/block/misc/BlockTinyTNT.java b/block/misc/BlockTinyTNT.java index abe3b8179..ce70be714 100644 --- a/block/misc/BlockTinyTNT.java +++ b/block/misc/BlockTinyTNT.java @@ -22,10 +22,10 @@ import net.minecraft.world.World; import appeng.block.AEBaseBlock; import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderTinyTNT; -import appeng.client.render.entity.EntityIds; import appeng.client.texture.FullIcon; import appeng.core.AppEng; import appeng.core.features.AEFeature; +import appeng.entity.EntityIds; import appeng.entity.EntityTinyTNTPrimed; import appeng.helpers.DispenserBehaviorTinyTNT; import appeng.helpers.ICustomCollision; diff --git a/client/ClientHelper.java b/client/ClientHelper.java index 083e9377f..d42b70c68 100644 --- a/client/ClientHelper.java +++ b/client/ClientHelper.java @@ -36,10 +36,10 @@ import appeng.client.render.TESRWrapper; import appeng.client.render.WorldRender; import appeng.client.render.effects.EnergyFx; import appeng.client.render.effects.LightningEffect; -import appeng.client.render.entity.RenderTinyTNTPrimed; import appeng.client.texture.CableBusTextures; import appeng.client.texture.ExtraTextures; import appeng.entity.EntityTinyTNTPrimed; +import appeng.entity.RenderTinyTNTPrimed; import appeng.server.ServerHelper; import appeng.util.Platform; import cpw.mods.fml.client.registry.ClientRegistry; diff --git a/entity/EntityGrowingCrystal.java b/entity/EntityGrowingCrystal.java new file mode 100644 index 000000000..a1449507b --- /dev/null +++ b/entity/EntityGrowingCrystal.java @@ -0,0 +1,71 @@ +package appeng.entity; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import appeng.api.implementations.items.IGrowableCrystal; +import appeng.util.Platform; + +final public class EntityGrowingCrystal extends EntityItem +{ + + private int progress_1000 = 0; + + public float getProgress() + { + return (float) progress_1000 / 1000.0f; + } + + public EntityGrowingCrystal(World w) { + super( w ); + } + + public EntityGrowingCrystal(World w, double x, double y, double z, ItemStack is) { + super( w, x, y, z, is ); + } + + @Override + public void onUpdate() + { + super.onUpdate(); + + if ( Platform.isClient() ) + return; + + ItemStack is = this.getEntityItem(); + Item gc = is.getItem(); + + if ( gc instanceof IGrowableCrystal ) // if it changes this just stops being an issue... + { + int j = MathHelper.floor_double( this.posX ); + int i = MathHelper.floor_double( this.posY ); + int k = MathHelper.floor_double( this.posZ ); + + Block blk = worldObj.getBlock( j, i, k ); + Material mat = blk.getMaterial(); + IGrowableCrystal cry = (IGrowableCrystal) is.getItem(); + + float multiplier = cry.getMultiplier( blk, mat ); + if ( Platform.isServer() && mat.isLiquid() ) + { + progress_1000 += Math.min( 1, getSpeed( j, i, k ) * multiplier ); + if ( progress_1000 > 1000 ) + { + setEntityItemStack( cry.triggerGrowth( is ) ); + } + } + else + progress_1000 = 0; + } + } + + private int getSpeed(int x, int y, int z) + { + return 10; + } + +} diff --git a/client/render/entity/EntityIds.java b/entity/EntityIds.java similarity index 77% rename from client/render/entity/EntityIds.java rename to entity/EntityIds.java index a67e9b5cd..6cfe4d621 100644 --- a/client/render/entity/EntityIds.java +++ b/entity/EntityIds.java @@ -1,9 +1,6 @@ -package appeng.client.render.entity; +package appeng.entity; import net.minecraft.entity.Entity; -import appeng.entity.EntityChargedQuartz; -import appeng.entity.EntitySingularity; -import appeng.entity.EntityTinyTNTPrimed; public class EntityIds { @@ -11,6 +8,7 @@ public class EntityIds public static final int TINY_TNT = 10; public static final int SINGULARITY = 11; public static final int CHARGED_QUARTZ = 12; + public static final int GROWING_CRYSTAL = 13; public static int get(Class droppedEntity) { @@ -20,6 +18,8 @@ public class EntityIds return SINGULARITY; if ( droppedEntity == EntityChargedQuartz.class ) return CHARGED_QUARTZ; + if ( droppedEntity == EntityChargedQuartz.class ) + return GROWING_CRYSTAL; throw new RuntimeException( "Missing entity id: " + droppedEntity.getName() ); } diff --git a/client/render/entity/RenderTinyTNTPrimed.java b/entity/RenderTinyTNTPrimed.java similarity index 96% rename from client/render/entity/RenderTinyTNTPrimed.java rename to entity/RenderTinyTNTPrimed.java index 457415696..b83325ea9 100644 --- a/client/render/entity/RenderTinyTNTPrimed.java +++ b/entity/RenderTinyTNTPrimed.java @@ -1,4 +1,4 @@ -package appeng.client.render.entity; +package appeng.entity; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.Render; @@ -10,7 +10,6 @@ import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; -import appeng.entity.EntityTinyTNTPrimed; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/integration/modules/dead/IC2.java b/integration/modules/IC2.java similarity index 59% rename from integration/modules/dead/IC2.java rename to integration/modules/IC2.java index 4c0af833f..28bd4dbf8 100644 --- a/integration/modules/dead/IC2.java +++ b/integration/modules/IC2.java @@ -1,8 +1,7 @@ -package appeng.integration.modules.dead; +package appeng.integration.modules; import ic2.api.energy.tile.IEnergyTile; import ic2.api.recipe.RecipeInputItemStack; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; @@ -27,22 +26,24 @@ public class IC2 implements IIntegrationModule, IIC2 { AEApi.instance().registries().matterCannon().registerAmmo( getItem( "uraniumDrop" ), 238.0289 ); - // certus quartz - maceratorRecipe( AEApi.instance().materials().materialCertusQuartzCrystal.stack( 1 ), AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) ); - - maceratorRecipe( AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( 1 ), AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) ); - - // fluix - maceratorRecipe( AEApi.instance().materials().materialFluixCrystal.stack( 1 ), AEApi.instance().materials().materialFluixDust.stack( 1 ) ); - - // nether quartz - maceratorRecipe( new ItemStack( Item.netherQuartz ), AEApi.instance().materials().materialNetherQuartzDust.stack( 1 ) ); + /* + * // certus quartz maceratorRecipe( AEApi.instance().materials().materialCertusQuartzCrystal.stack( 1 ), + * AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) ); + * + * maceratorRecipe( AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( 1 ), + * AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) ); + * + * // fluix maceratorRecipe( AEApi.instance().materials().materialFluixCrystal.stack( 1 ), + * AEApi.instance().materials().materialFluixDust.stack( 1 ) ); + * + * // nether quartz maceratorRecipe( new ItemStack( Itemq ), + * AEApi.instance().materials().materialNetherQuartzDust.stack( 1 ) ); + */ } /* - * private void compressorRecipe(ItemStack in, ItemStack out) { - * ic2.api.recipe.Recipes.compressor.addRecipe( new RecipeInputItemStack( - * in, in.stackSize ), null, out ); } + * private void compressorRecipe(ItemStack in, ItemStack out) { ic2.api.recipe.Recipes.compressor.addRecipe( new + * RecipeInputItemStack( in, in.stackSize ), null, out ); } */ private void maceratorRecipe(ItemStack in, ItemStack out) { @@ -64,7 +65,7 @@ public class IC2 implements IIntegrationModule, IIC2 @Override public ItemStack getItem(String name) { - return ic2.api.item.Items.getItem( name ); + return ic2.api.item.IC2Items.getItem( name ); } } diff --git a/items/materials/MaterialType.java b/items/materials/MaterialType.java index 75cb7dce5..2a0f803c7 100644 --- a/items/materials/MaterialType.java +++ b/items/materials/MaterialType.java @@ -5,10 +5,10 @@ import java.util.EnumSet; import net.minecraft.entity.Entity; import net.minecraft.util.IIcon; import net.minecraftforge.oredict.OreDictionary; -import appeng.client.render.entity.EntityIds; import appeng.core.AppEng; import appeng.core.features.AEFeature; import appeng.entity.EntityChargedQuartz; +import appeng.entity.EntityIds; import appeng.entity.EntitySingularity; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.relauncher.Side; @@ -46,7 +46,7 @@ public enum MaterialType Wireless(AEFeature.WirelessAccessTerminal), WirelessBooster(AEFeature.WirelessAccessTerminal), - BlankPattern, FormationCore, AnnihilationCore, + FormationCore, AnnihilationCore, EnderDust(AEFeature.QuantumNetworkBridge, "dustEnder", EntitySingularity.class), Singularity(AEFeature.QuantumNetworkBridge, EntitySingularity.class), QESingularity( AEFeature.QuantumNetworkBridge, EntitySingularity.class); diff --git a/items/misc/ItemCrystalSeed.java b/items/misc/ItemCrystalSeed.java new file mode 100644 index 000000000..7fc59b8b5 --- /dev/null +++ b/items/misc/ItemCrystalSeed.java @@ -0,0 +1,108 @@ +package appeng.items.misc; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import appeng.api.AEApi; +import appeng.api.implementations.items.IGrowableCrystal; +import appeng.items.AEBaseItem; + +public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal +{ + + IIcon certus[] = new IIcon[3]; + IIcon fluix[] = new IIcon[3]; + IIcon nether[] = new IIcon[3]; + + public ItemCrystalSeed() { + super( ItemCrystalSeed.class ); + } + + @Override + public String getUnlocalizedName(ItemStack is) + { + int damage = is.getItemDamage(); + + if ( damage <= 600 ) + return getUnlocalizedName() + ".Certus"; + + if ( damage <= 1200 ) + return getUnlocalizedName() + ".Nether"; + + if ( damage <= 1800 ) + return getUnlocalizedName() + ".Fluix"; + + return getUnlocalizedName(); + } + + @Override + public ItemStack triggerGrowth(ItemStack is) + { + is.setItemDamage( is.getItemDamage() + 1 ); + + if ( is.getItemDamage() > 1800 ) // max! + return is; + + if ( is.getItemDamage() == 600 ) + return AEApi.instance().materials().materialPureifiedCertusQuartzCrystal.stack( is.stackSize ); + if ( is.getItemDamage() == 1200 ) + return AEApi.instance().materials().materialPureifiedNetherQuartzCrystal.stack( is.stackSize ); + if ( is.getItemDamage() == 1800 ) + return AEApi.instance().materials().materialPureifiedFluixCrystal.stack( is.stackSize ); + + return is; + } + + @Override + public IIcon getIconFromDamage(int damage) + { + IIcon list[] = null; + + if ( damage < 600 ) + list = certus; + + if ( damage < 1200 ) + list = nether; + + if ( damage < 1800 ) + list = fluix; + + if ( list == null ) + return Items.diamond.getIconFromDamage( 0 ); + + if ( damage < 200 ) + return list[0]; + else if ( damage < 400 ) + return list[1]; + else + return list[2]; + } + + @Override + public float getMultiplier(Block blk, Material mat) + { + return 1.0f; + } + + @Override + public void registerIcons(IIconRegister ir) + { + String preFix = "appliedenergistics2:GrowthSeed."; + + certus[0] = ir.registerIcon( preFix + "Certus" ); + certus[1] = ir.registerIcon( preFix + "Certus1" ); + certus[2] = ir.registerIcon( preFix + "Certus2" ); + + nether[0] = ir.registerIcon( preFix + "Nether" ); + nether[1] = ir.registerIcon( preFix + "Nether1" ); + nether[2] = ir.registerIcon( preFix + "Nether2" ); + + fluix[0] = ir.registerIcon( preFix + "Fluix" ); + fluix[1] = ir.registerIcon( preFix + "Fluix1" ); + fluix[2] = ir.registerIcon( preFix + "Fluix2" ); + } + +}