-
Posts
180 -
Joined
-
Last visited
Everything posted by SackCastellon
-
[1.6.4] How to make "meta items" based on NBT Tags.
SackCastellon replied to SackCastellon's topic in Modder Support
Ok, cool, but can you explain it a little bit? Please -
I want to make a "meta items" based on NBT Tags. Anyone knows how?
-
Item/Block IDs in Minecraft 1.7
SackCastellon replied to SackCastellon's topic in General Discussion
Thanks to everyone, i'll try to find some way to solve my problem -
Item/Block IDs in Minecraft 1.7
SackCastellon replied to SackCastellon's topic in General Discussion
:( :'( :'( That's a bad new, i thought the ID would become "unlimited" or any case bigger than 32000, because i had planned to make a mod of about 16.800.000 blocks. -
Item/Block IDs in Minecraft 1.7
SackCastellon replied to SackCastellon's topic in General Discussion
Thanks, that was all i wanted to know. Only one question more, the IDs still will be limited to 4096 for blocks and 32000 for Items, or they will be "unlimited"? -
I only want to know if the Item/Block ID in Minecraft 1.7 are based on Integers (numbers) as always or they are based on Strings (text). Thanks.
-
How to load different textures for one item / block?
SackCastellon replied to SackCastellon's topic in Modder Support
Thanks -
How to load different textures for one item / block?
SackCastellon replied to SackCastellon's topic in Modder Support
Any good tutorial? -
For example if i have those two pictures: https://dl.dropboxusercontent.com/u/184200482/img/multi_img_1.png[/img] https://dl.dropboxusercontent.com/u/184200482/img/multi_img_2.png[/img] And i want to create the following: https://dl.dropboxusercontent.com/u/184200482/img/multi_img_3.png[/img] Which method do i have to use? Thanks for your help.
-
[1.6.4] Problem using class transformer
SackCastellon replied to SackCastellon's topic in Modder Support
First, it only was a test. I was trying to add one of my mod's block to the canSustainPlant() method, to make my block able to sustain cactus. (i know it can be made by another way, that's why it was only a test) -
[1.6.4] Problem using class transformer
SackCastellon replied to SackCastellon's topic in Modder Support
bump! -
I've followed this tutorial This is the error: Client> 2013-10-07 21:27:54 [iNFO] [ForgeModLoader] Forge Mod Loader version 6.4.20.916 for Minecraft 1.6.4 loading Client> 2013-10-07 21:27:54 [iNFO] [ForgeModLoader] Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_25, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre7 Client> 2013-10-07 21:27:54 [WARNING] [ForgeModLoader] The coremod codechicken.core.launch.CodeChickenCorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft Client> 2013-10-07 21:27:55 [WARNING] [ForgeModLoader] The coremod codechicken.nei.asm.NEICorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft Client> 2013-10-07 21:27:55 [WARNING] [ForgeModLoader] The coremod SackCastellon.stainedsand.asm.FMLLoadingPlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft Client> 2013-10-07 21:27:55 [iNFO] [sTDOUT] Loaded 40 rules from AccessTransformer config file fml_at.cfg Client> 2013-10-07 21:27:56 [iNFO] [sTDOUT] Loaded 109 rules from AccessTransformer config file forge_at.cfg Client> 2013-10-07 21:27:56 [iNFO] [sTDOUT] Loaded 40 rules from AccessTransformer config file fml_at.cfg Client> 2013-10-07 21:27:59 [iNFO] [ForgeModLoader] Found valid fingerprint for Minecraft Forge. Certificate fingerprint e3c3d50c7c986df74c645c0ac54639741c90a557 Client> 2013-10-07 21:27:59 [iNFO] [ForgeModLoader] Found valid fingerprint for Minecraft. Certificate fingerprint cd99959656f753dc28d863b46769f7f8fbaefcfc Client> 2013-10-07 21:27:59 [iNFO] [sTDOUT] Adding AccessTransformer: nei_at.cfg Client> 2013-10-07 21:27:59 [iNFO] [sTDOUT] Adding Accesstransformer map: temp.dat Client> 2013-10-07 21:27:59 [iNFO] [sTDOUT] Loaded 54 rules from AccessTransformer config file temp.dat Client> 2013-10-07 21:27:59 [iNFO] [ForgeModLoader] Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker Client> 2013-10-07 21:27:59 [iNFO] [ForgeModLoader] Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker Client> 2013-10-07 21:28:00 [iNFO] [ForgeModLoader] Launching wrapped minecraft {net.minecraft.client.main.Main} Client> 2013-10-07 21:28:03 [iNFO] [sTDOUT] Inserted super call into axv.c Client> 2013-10-07 21:28:03 [iNFO] [sTDOUT] awy was overriden from NotEnoughItems 1.6.1.5.jar Client> 2013-10-07 21:28:04 [iNFO] [Minecraft-Client] Setting user: SackCastellon Client> 2013-10-07 21:28:04 [iNFO] [Minecraft-Client] (Session ID is token:90ca425180524de0bdcc3be3136f8b06:6cac2c21103b48159c90a79568a3638d) Client> 2013-10-07 21:28:04 [iNFO] [sTDOUT] Class aqz patched! Client> 2013-10-07 21:28:04 [sEVERE] [ForgeModLoader] Unable to launch Client> java.lang.reflect.InvocationTargetException Client> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) Client> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) Client> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) Client> at java.lang.reflect.Method.invoke(Unknown Source) Client> at net.minecraft.launchwrapper.Launch.launch(Launch.java:131) Client> at net.minecraft.launchwrapper.Launch.main(Launch.java:27) Client> Caused by: java.lang.NoClassDefFoundError: net/minecraft/block/Block Client> at net.minecraft.stats.StatList.func_75921_a(StatList.java:185) Client> at net.minecraft.stats.StatList.<clinit>(StatList.java:96) Client> at net.minecraft.client.Minecraft.<init>(Minecraft.java:329) Client> at net.minecraft.client.main.Main.main(SourceFile:83) Client> ... 6 more Client> Caused by: java.lang.ClassNotFoundException: net.minecraft.block.Block Client> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186) Client> at java.lang.ClassLoader.loadClass(Unknown Source) Client> at java.lang.ClassLoader.loadClass(Unknown Source) Client> ... 10 more Client> Caused by: java.lang.NullPointerException Client> at org.objectweb.asm.Item.a(Unknown Source) Client> at org.objectweb.asm.ClassWriter.a(Unknown Source) Client> at org.objectweb.asm.ClassWriter.newClass(Unknown Source) Client> at org.objectweb.asm.ClassWriter.visit(Unknown Source) Client> at org.objectweb.asm.ClassVisitor.visit(Unknown Source) Client> at org.objectweb.asm.commons.RemappingClassAdapter.visit(Unknown Source) Client> at cpw.mods.fml.common.asm.transformers.deobf.FMLRemappingAdapter.visit(FMLRemappingAdapter.java:33) Client> at org.objectweb.asm.ClassReader.accept(Unknown Source) Client> at org.objectweb.asm.ClassReader.accept(Unknown Source) Client> at cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer.transform(DeobfuscationTransformer.java:39) Client> at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:274) Client> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:172) Client> ... 12 more Game ended with no troubles detected (exit code 0) Deleting C:\Users\xxxxxx\AppData\Roaming\.minecraft\versions\1.6.4-Forge9.11.1.916\1.6.4-Forge9.11.1.916-natives-6111697258571 Couldn't delete C:\Users\xxxxxx\AppData\Roaming\.minecraft\versions\1.6.4-Forge9.11.1.916\1.6.4-Forge9.11.1.916-natives-6111697258571 - scheduling for deletion upon exit ClassTransformer.class package SackCastellon.stainedsand.asm; import java.io.File; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import SackCastellon.stainedsand.library.Reference; import net.minecraft.launchwrapper.IClassTransformer; public class ClassTransformer implements IClassTransformer { @Override public byte[] transform(String arg0, String arg1, byte[] arg2) { if (arg0.equals("aqz") || arg0.equals("net.minecraft.block.Block")) { arg2 = patchClassInJar(arg0, arg2, arg0, FMLLoadingPlugin.location); } return arg2; } public byte[] patchClassInJar(String name, byte[] bytes, String ObfName, File location) { try { ZipFile zip = new ZipFile(location); ZipEntry entry = zip.getEntry(name.replace('.', '/') + ".class"); if (entry == null) { System.out.println("[" + Reference.MODID + "] " + name + " not found in " + location.getName()); } else { InputStream zin = zip.getInputStream(entry); bytes = new byte[(int) entry.getSize()]; zin.read(bytes); zin.close(); System.out.println("Class " + name + " patched!"); } zip.close(); } catch (Exception e) { throw new RuntimeException("[" + Reference.MODID + "] Error overriding " + name + " from " + location.getName(), e); } return bytes; } } FMLLoadingPlugin.class package SackCastellon.stainedsand.asm; import java.io.File; import java.util.Map; import cpw.mods.fml.relauncher.IFMLLoadingPlugin; public class FMLLoadingPlugin implements IFMLLoadingPlugin { public static File location; @Override public String[] getASMTransformerClass() { return new String[]{ClassTransformer.class.getName()}; } @Override public void injectData(Map<String, Object> data) { location = (File) data.get("coremodLocation"); } @Override @Deprecated public String[] getLibraryRequestClass() { // TODO Auto-generated method stub return null; } @Override public String getModContainerClass() { // TODO Auto-generated method stub return null; } @Override public String getSetupClass() { // TODO Auto-generated method stub return null; } } I hope you can help me. Thanks
-
[Solved] Minecraft Crash When Testing My Mod
SackCastellon replied to SackCastellon's topic in Modder Support
SOLVED!! I simply replace some values and the problem went out. -
[Solved] Minecraft Crash When Testing My Mod
SackCastellon replied to SackCastellon's topic in Modder Support
Ok. Yes, but i don't know what is he refered about. -
[Solved] Minecraft Crash When Testing My Mod
SackCastellon replied to SackCastellon's topic in Modder Support
I don't see the isPresent() check. No, i'm using Java 7 -
When i try to run my mod on Eclipse, Minecraft crash, this is the crash report: ---- Minecraft Crash Report ---- // This doesn't make any sense! Time: 30/08/13 20:34 Description: Initializing game java.lang.IllegalStateException: Optional.get() cannot be called on an absent value at com.google.common.base.Absent.get(Absent.java:42) at SackCastellon.betterwood.extrabiomesxl.lib.loader.BlockLoader.init(BlockLoader.java:17) at SackCastellon.betterwood.extrabiomesxl.common.BetterWood.init(BetterWood.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:540) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:194) at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:174) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:105) at cpw.mods.fml.common.Loader.initializeMods(Loader.java:697) at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:232) at net.minecraft.client.Minecraft.startGame(Minecraft.java:506) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:796) at net.minecraft.client.main.Main.main(Main.java:93) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:57) at net.minecraft.launchwrapper.Launch.main(Launch.java:18) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at com.google.common.base.Absent.get(Absent.java:42) at SackCastellon.betterwood.extrabiomesxl.lib.loader.BlockLoader.init(BlockLoader.java:17) at SackCastellon.betterwood.extrabiomesxl.common.BetterWood.init(BetterWood.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:540) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:194) at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:174) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:105) at cpw.mods.fml.common.Loader.initializeMods(Loader.java:697) at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:232) at net.minecraft.client.Minecraft.startGame(Minecraft.java:506) -- Initialization -- Details: Stacktrace: at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:796) at net.minecraft.client.main.Main.main(Main.java:93) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:57) at net.minecraft.launchwrapper.Launch.main(Launch.java:18) -- System Details -- Details: Minecraft Version: 1.6.2 Operating System: Windows 7 (amd64) version 6.1 Java Version: 1.7.0_21, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 822571232 bytes (784 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Suspicious classes: FML and Forge are installed IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP v8.04 FML v6.2.35.804 Minecraft Forge 9.10.0.804 6 mods loaded, 6 mods active mcp{8.04} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized FML{6.2.35.804} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized Forge{9.10.0.804} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized ExtrabiomesXL{3.14.1} [ExtrabiomesXL] (bin) Unloaded->Constructed->Pre-initialized->Initialized SKC-Core{1.0.0.0} [sKC Core] (bin) Unloaded->Constructed->Pre-initialized->Initialized SKC-BetterWood-ExtrabiomesXL{1.0.0.0} [betterWood ] (bin) Unloaded->Constructed->Pre-initialized->Errored Launched Version: 1.6 LWJGL: 2.9.0 OpenGL: Intel(R) HD Graphics GL version 2.1.0 - Build 8.15.10.2827, Intel Is Modded: Definitely; Client brand changed to 'fml,forge' Type: Client (map_client.txt) Resource Pack: Default Current Language: English (US) Profiler Position: N/A (disabled) Vec3 Pool Size: ~~ERROR~~ NullPointerException: null Somebody know why it crash?
-
I've made a new boat, but don't load the texture. Causing the boat look like this: Here are the classes: Item Class package SackCastellon.betterwood.common.items; import java.util.List; import SackCastellon.betterwood.common.BetterWood; import SackCastellon.betterwood.common.entity.EntityBoatSpruce; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumMovingObjectType; import net.minecraft.util.Icon; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; public class ItemBoatSpruce extends Item { public ItemBoatSpruce(int par1) { super(par1); this.setMaxStackSize(1); this.setCreativeTab(BetterWood.tabBetterWood); } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { float f = 1.0F; float f1 = par3EntityPlayer.prevRotationPitch + (par3EntityPlayer.rotationPitch - par3EntityPlayer.prevRotationPitch) * f; float f2 = par3EntityPlayer.prevRotationYaw + (par3EntityPlayer.rotationYaw - par3EntityPlayer.prevRotationYaw) * f; double d0 = par3EntityPlayer.prevPosX + (par3EntityPlayer.posX - par3EntityPlayer.prevPosX) * (double)f; double d1 = par3EntityPlayer.prevPosY + (par3EntityPlayer.posY - par3EntityPlayer.prevPosY) * (double)f + 1.62D - (double)par3EntityPlayer.yOffset; double d2 = par3EntityPlayer.prevPosZ + (par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ) * (double)f; Vec3 vec3 = par2World.getWorldVec3Pool().getVecFromPool(d0, d1, d2); float f3 = MathHelper.cos(-f2 * 0.017453292F - (float)Math.PI); float f4 = MathHelper.sin(-f2 * 0.017453292F - (float)Math.PI); float f5 = -MathHelper.cos(-f1 * 0.017453292F); float f6 = MathHelper.sin(-f1 * 0.017453292F); float f7 = f4 * f5; float f8 = f3 * f5; double d3 = 5.0D; Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3); MovingObjectPosition movingobjectposition = par2World.clip(vec3, vec31, true); if (movingobjectposition == null) { return par1ItemStack; } else { Vec3 vec32 = par3EntityPlayer.getLook(f); boolean flag = false; float f9 = 1.0F; List list = par2World.getEntitiesWithinAABBExcludingEntity(par3EntityPlayer, par3EntityPlayer.boundingBox.addCoord(vec32.xCoord * d3, vec32.yCoord * d3, vec32.zCoord * d3).expand((double)f9, (double)f9, (double)f9)); int i; for (i = 0; i < list.size(); ++i) { Entity j = (Entity)list.get(i); if (j.canBeCollidedWith()) { float k = j.getCollisionBorderSize(); AxisAlignedBB entityboat = j.boundingBox.expand((double)k, (double)k, (double)k); if (entityboat.isVecInside(vec3)) { flag = true; } } } if (flag) { return par1ItemStack; } else { if (movingobjectposition.typeOfHit == EnumMovingObjectType.TILE) { i = movingobjectposition.blockX; int var34 = movingobjectposition.blockY; int var32 = movingobjectposition.blockZ; if (par2World.getBlockId(i, var34, var32) == Block.snow.blockID) { --var34; } EntityBoatSpruce var33 = new EntityBoatSpruce(par2World, (double)((float)i + 0.5F), (double)((float)var34 + 1.0F), (double)((float)var32 + 0.5F)); var33.rotationYaw = (float)(((MathHelper.floor_double((double)(par3EntityPlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) - 1) * 90); if (!par2World.getCollidingBoundingBoxes(var33, var33.boundingBox.expand(-0.1D, -0.1D, -0.1D)).isEmpty()) { return par1ItemStack; } if (!par2World.isRemote) { par2World.spawnEntityInWorld(var33); } if (!par3EntityPlayer.capabilities.isCreativeMode) { --par1ItemStack.stackSize; } } return par1ItemStack; } } } public void registerIcons(IconRegister iconRegister) { this.itemIcon = iconRegister.registerIcon("betterwood:SpruceBoat"); } /** * Gets an icon index based on an item's damage value */ public Icon getIconFromDamage(int par1) { return this.itemIcon; } } Entity Class package SackCastellon.betterwood.common.entity; import java.util.List; import SackCastellon.betterwood.api.Items; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class EntityBoatSpruce extends Entity { private boolean field_70279_a; private double speedMultiplier; private int boatPosRotationIncrements; private double boatX; private double boatY; private double boatZ; private double boatYaw; private double boatPitch; @SideOnly(Side.CLIENT) private double velocityX; @SideOnly(Side.CLIENT) private double velocityY; @SideOnly(Side.CLIENT) private double velocityZ; public EntityBoatSpruce(World par1World) { super(par1World); this.field_70279_a = true; this.speedMultiplier = 0.07D; this.preventEntitySpawning = true; this.setSize(1.5F, 0.6F); this.yOffset = this.height / 2.0F; } /** * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to * prevent them from trampling crops */ protected boolean canTriggerWalking() { return false; } protected void entityInit() { this.dataWatcher.addObject(17, new Integer(0)); this.dataWatcher.addObject(18, new Integer(1)); this.dataWatcher.addObject(19, new Float(0.0F)); } /** * Returns a boundingBox used to collide the entity with other entities and blocks. This enables the entity to be * pushable on contact, like boats or minecarts. */ public AxisAlignedBB getCollisionBox(Entity par1Entity) { return par1Entity.boundingBox; } /** * returns the bounding box for this entity */ public AxisAlignedBB getBoundingBox() { return this.boundingBox; } /** * Returns true if this entity should push and be pushed by other entities when colliding. */ public boolean canBePushed() { return true; } public EntityBoatSpruce(World par1World, double par2, double par4, double par6) { this(par1World); this.setPosition(par2, par4 + (double)this.yOffset, par6); this.motionX = 0.0D; this.motionY = 0.0D; this.motionZ = 0.0D; this.prevPosX = par2; this.prevPosY = par4; this.prevPosZ = par6; } /** * Returns the Y offset from the entity's position for any entity riding this one. */ public double getMountedYOffset() { return (double)this.height * 0.0D - 0.30000001192092896D; } /** * Called when the entity is attacked. */ public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) { if (this.isEntityInvulnerable()) { return false; } else if (!this.worldObj.isRemote && !this.isDead) { this.setForwardDirection(-this.getForwardDirection()); this.setTimeSinceHit(10); this.setDamageTaken(this.getDamageTaken() + par2 * 10.0F); this.setBeenAttacked(); boolean flag = par1DamageSource.getEntity() instanceof EntityPlayer && ((EntityPlayer)par1DamageSource.getEntity()).capabilities.isCreativeMode; if (flag || this.getDamageTaken() > 40.0F) { if (this.riddenByEntity != null) { this.riddenByEntity.mountEntity(this); } if (!flag) { this.dropItemWithOffset(Items.SpruceBoat.get().itemID, 1, 0.0F); } this.setDead(); } return true; } else { return true; } } @SideOnly(Side.CLIENT) /** * Setups the entity to do the hurt animation. Only used by packets in multiplayer. */ public void performHurtAnimation() { this.setForwardDirection(-this.getForwardDirection()); this.setTimeSinceHit(10); this.setDamageTaken(this.getDamageTaken() * 11.0F); } /** * Returns true if other Entities should be prevented from moving through this Entity. */ public boolean canBeCollidedWith() { return !this.isDead; } @SideOnly(Side.CLIENT) /** * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, * posY, posZ, yaw, pitch */ public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9) { if (this.field_70279_a) { this.boatPosRotationIncrements = par9 + 5; } else { double d3 = par1 - this.posX; double d4 = par3 - this.posY; double d5 = par5 - this.posZ; double d6 = d3 * d3 + d4 * d4 + d5 * d5; if (d6 <= 1.0D) { return; } this.boatPosRotationIncrements = 3; } this.boatX = par1; this.boatY = par3; this.boatZ = par5; this.boatYaw = (double)par7; this.boatPitch = (double)par8; this.motionX = this.velocityX; this.motionY = this.velocityY; this.motionZ = this.velocityZ; } @SideOnly(Side.CLIENT) /** * Sets the velocity to the args. Args: x, y, z */ public void setVelocity(double par1, double par3, double par5) { this.velocityX = this.motionX = par1; this.velocityY = this.motionY = par3; this.velocityZ = this.motionZ = par5; } /** * Called to update the entity's position/logic. */ public void onUpdate() { super.onUpdate(); if (this.getTimeSinceHit() > 0) { this.setTimeSinceHit(this.getTimeSinceHit() - 1); } if (this.getDamageTaken() > 0.0F) { this.setDamageTaken(this.getDamageTaken() - 1.0F); } this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; byte b0 = 5; double d0 = 0.0D; for (int d3 = 0; d3 < b0; ++d3) { double d1 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(d3 + 0) / (double)b0 - 0.125D; double d2 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(d3 + 1) / (double)b0 - 0.125D; AxisAlignedBB axisalignedbb = AxisAlignedBB.getAABBPool().getAABB(this.boundingBox.minX, d1, this.boundingBox.minZ, this.boundingBox.maxX, d2, this.boundingBox.maxZ); if (this.worldObj.isAABBInMaterial(axisalignedbb, Material.water)) { d0 += 1.0D / (double)b0; } } double var23 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); double d4; double d5; if (var23 > 0.26249999999999996D) { d4 = Math.cos((double)this.rotationYaw * Math.PI / 180.0D); d5 = Math.sin((double)this.rotationYaw * Math.PI / 180.0D); for (int d10 = 0; (double)d10 < 1.0D + var23 * 60.0D; ++d10) { double d6 = (double)(this.rand.nextFloat() * 2.0F - 1.0F); double d7 = (double)(this.rand.nextInt(2) * 2 - 1) * 0.7D; double d8; double l; if (this.rand.nextBoolean()) { d8 = this.posX - d4 * d6 * 0.8D + d5 * d7; l = this.posZ - d5 * d6 * 0.8D - d4 * d7; this.worldObj.spawnParticle("splash", d8, this.posY - 0.125D, l, this.motionX, this.motionY, this.motionZ); } else { d8 = this.posX + d4 + d5 * d6 * 0.7D; l = this.posZ + d5 - d4 * d6 * 0.7D; this.worldObj.spawnParticle("splash", d8, this.posY - 0.125D, l, this.motionX, this.motionY, this.motionZ); } } } double d11; double var24; if (this.worldObj.isRemote && this.field_70279_a) { if (this.boatPosRotationIncrements > 0) { d4 = this.posX + (this.boatX - this.posX) / (double)this.boatPosRotationIncrements; d5 = this.posY + (this.boatY - this.posY) / (double)this.boatPosRotationIncrements; d11 = this.posZ + (this.boatZ - this.posZ) / (double)this.boatPosRotationIncrements; var24 = MathHelper.wrapAngleTo180_double(this.boatYaw - (double)this.rotationYaw); this.rotationYaw = (float)((double)this.rotationYaw + var24 / (double)this.boatPosRotationIncrements); this.rotationPitch = (float)((double)this.rotationPitch + (this.boatPitch - (double)this.rotationPitch) / (double)this.boatPosRotationIncrements); --this.boatPosRotationIncrements; this.setPosition(d4, d5, d11); this.setRotation(this.rotationYaw, this.rotationPitch); } else { d4 = this.posX + this.motionX; d5 = this.posY + this.motionY; d11 = this.posZ + this.motionZ; this.setPosition(d4, d5, d11); if (this.onGround) { this.motionX *= 0.5D; this.motionY *= 0.5D; this.motionZ *= 0.5D; } this.motionX *= 0.9900000095367432D; this.motionY *= 0.949999988079071D; this.motionZ *= 0.9900000095367432D; } } else { if (d0 < 1.0D) { d4 = d0 * 2.0D - 1.0D; this.motionY += 0.03999999910593033D * d4; } else { if (this.motionY < 0.0D) { this.motionY /= 2.0D; } this.motionY += 0.007000000216066837D; } if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase) { d4 = (double)((EntityLivingBase)this.riddenByEntity).moveForward; if (d4 > 0.0D) { d5 = -Math.sin((double)(this.riddenByEntity.rotationYaw * (float)Math.PI / 180.0F)); d11 = Math.cos((double)(this.riddenByEntity.rotationYaw * (float)Math.PI / 180.0F)); this.motionX += d5 * this.speedMultiplier * 0.05000000074505806D; this.motionZ += d11 * this.speedMultiplier * 0.05000000074505806D; } } d4 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); if (d4 > 0.35D) { d5 = 0.35D / d4; this.motionX *= d5; this.motionZ *= d5; d4 = 0.35D; } if (d4 > var23 && this.speedMultiplier < 0.35D) { this.speedMultiplier += (0.35D - this.speedMultiplier) / 35.0D; if (this.speedMultiplier > 0.35D) { this.speedMultiplier = 0.35D; } } else { this.speedMultiplier -= (this.speedMultiplier - 0.07D) / 35.0D; if (this.speedMultiplier < 0.07D) { this.speedMultiplier = 0.07D; } } if (this.onGround) { this.motionX *= 0.5D; this.motionY *= 0.5D; this.motionZ *= 0.5D; } this.moveEntity(this.motionX, this.motionY, this.motionZ); if (this.isCollidedHorizontally && var23 > 0.2D) { if (!this.worldObj.isRemote && !this.isDead) { this.setDead(); int d12; for (d12 = 0; d12 < 3; ++d12) { this.dropItemWithOffset(Block.planks.blockID, 1, 0.0F); } for (d12 = 0; d12 < 2; ++d12) { this.dropItemWithOffset(Item.stick.itemID, 1, 0.0F); } } } else { this.motionX *= 0.9900000095367432D; this.motionY *= 0.949999988079071D; this.motionZ *= 0.9900000095367432D; } this.rotationPitch = 0.0F; d5 = (double)this.rotationYaw; d11 = this.prevPosX - this.posX; var24 = this.prevPosZ - this.posZ; if (d11 * d11 + var24 * var24 > 0.001D) { d5 = (double)((float)(Math.atan2(var24, d11) * 180.0D / Math.PI)); } double var25 = MathHelper.wrapAngleTo180_double(d5 - (double)this.rotationYaw); if (var25 > 20.0D) { var25 = 20.0D; } if (var25 < -20.0D) { var25 = -20.0D; } this.rotationYaw = (float)((double)this.rotationYaw + var25); this.setRotation(this.rotationYaw, this.rotationPitch); if (!this.worldObj.isRemote) { List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); int var26; if (list != null && !list.isEmpty()) { for (var26 = 0; var26 < list.size(); ++var26) { Entity i1 = (Entity)list.get(var26); if (i1 != this.riddenByEntity && i1.canBePushed() && i1 instanceof EntityBoatSpruce) { i1.applyEntityCollision(this); } } } for (var26 = 0; var26 < 4; ++var26) { int var27 = MathHelper.floor_double(this.posX + ((double)(var26 % 2) - 0.5D) * 0.8D); int j1 = MathHelper.floor_double(this.posZ + ((double)(var26 / 2) - 0.5D) * 0.8D); for (int k1 = 0; k1 < 2; ++k1) { int l1 = MathHelper.floor_double(this.posY) + k1; int i2 = this.worldObj.getBlockId(var27, l1, j1); if (i2 == Block.snow.blockID) { this.worldObj.setBlockToAir(var27, l1, j1); } else if (i2 == Block.waterlily.blockID) { this.worldObj.destroyBlock(var27, l1, j1, true); } } } if (this.riddenByEntity != null && this.riddenByEntity.isDead) { this.riddenByEntity = null; } } } } public void updateRiderPosition() { if (this.riddenByEntity != null) { double d0 = Math.cos((double)this.rotationYaw * Math.PI / 180.0D) * 0.4D; double d1 = Math.sin((double)this.rotationYaw * Math.PI / 180.0D) * 0.4D; this.riddenByEntity.setPosition(this.posX + d0, this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset(), this.posZ + d1); } } /** * (abstract) Protected helper method to write subclass entity data to NBT. */ protected void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) {} /** * (abstract) Protected helper method to read subclass entity data from NBT. */ protected void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) {} @SideOnly(Side.CLIENT) public float getShadowSize() { return 0.0F; } public boolean func_130002_c(EntityPlayer par1EntityPlayer) { if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != par1EntityPlayer) { return true; } else { if (!this.worldObj.isRemote) { par1EntityPlayer.mountEntity(this); } return true; } } public void setDamageTaken(float par1) { this.dataWatcher.updateObject(19, Float.valueOf(par1)); } public float getDamageTaken() { return this.dataWatcher.func_111145_d(19); } public void setTimeSinceHit(int par1) { this.dataWatcher.updateObject(17, Integer.valueOf(par1)); } public int getTimeSinceHit() { return this.dataWatcher.getWatchableObjectInt(17); } public void setForwardDirection(int par1) { this.dataWatcher.updateObject(18, Integer.valueOf(par1)); } public int getForwardDirection() { return this.dataWatcher.getWatchableObjectInt(18); } @SideOnly(Side.CLIENT) public void func_70270_d(boolean par1) { this.field_70279_a = par1; } } Render Class package SackCastellon.betterwood.common.render; import org.lwjgl.opengl.GL11; import SackCastellon.betterwood.common.entity.EntityBoatSpruce; import cpw.mods.fml.relauncher.*; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBoat; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; @SideOnly(Side.CLIENT) public class RenderBoatSpruce extends Render { private static final ResourceLocation field_110782_f = new ResourceLocation("betterwood:entity/SpruceBoat.png"); protected ModelBase modelBoat; public RenderBoatSpruce() { this.shadowSize = 0.5F; this.modelBoat = new ModelBoat(); } public void renderBoat(EntityBoatSpruce par1EntityBoat, double par2, double par4, double par6, float par8, float par9) { GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glRotatef(180.0F - par8, 0.0F, 1.0F, 0.0F); float f2 = (float)par1EntityBoat.getTimeSinceHit() - par9; float f3 = par1EntityBoat.getDamageTaken() - par9; if (f3 < 0.0F) { f3 = 0.0F; } if (f2 > 0.0F) { GL11.glRotatef(MathHelper.sin(f2) * f2 * f3 / 10.0F * (float)par1EntityBoat.getForwardDirection(), 1.0F, 0.0F, 0.0F); } float f4 = 0.75F; GL11.glScalef(f4, f4, f4); GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4); this.func_110777_b(par1EntityBoat); GL11.glScalef(-1.0F, -1.0F, 1.0F); this.modelBoat.render(par1EntityBoat, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); } protected ResourceLocation func_110781_a(EntityBoatSpruce par1EntityBoatSpruce) { return field_110782_f; } protected ResourceLocation func_110775_a(Entity par1Entity) { return this.func_110781_a((EntityBoatSpruce)par1Entity); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { this.renderBoat((EntityBoatSpruce)par1Entity, par2, par4, par6, par8, par9); } }
-
I've make a language file with a Spanish translation and some letters have accents, and when i run Minecraft those letters aren't displayed and insted them a quiestion mark is showed. The language file is a ".lang" file. Somebody know why does it happen? And how can i fix it? Thanks for Helping.
-
I want to create some meta blocks with more than 16 values, but i saw here that the meta blocks only can hold 16 values, so i will need to use Tile Entities, but his respective tutorial is unfinished.. So, does anybody knows how to create meta blocks with more than 16 values using Tile Entities? Thanks for helping
-
[1.6.2] [Solved] How to create Language Files?
SackCastellon replied to SackCastellon's topic in Modder Support
Thanks, again -
Anybody knows how to create language files (en_US.lang), where store all the names and make posible different translations to other languages?
-
Does somebody knows how can i make this lore editable by language files (en_US.lang) for a easy translation (es_ES.lang) The lore @Override public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4){ NBTTagCompound nbt = par1ItemStack.getTagCompound(); { par3List.add("Custom Lore Line 1"); par3List.add("Custom Lore Line 2"); } } And in the language file might appear like this, or something similar: lore.itemGeneric.line1=Custom Lore Line 1 lore.itemGeneric.line2=Custom Lore Line 2 Thanks for helping
-
[1.6.2] [Solved] Config file doesn't work
SackCastellon replied to SackCastellon's topic in Modder Support
Then how can i link the ids from the confighandler with the item loader? -
[1.6.2] [Solved] Config file doesn't work
SackCastellon replied to SackCastellon's topic in Modder Support
The ConfigHandler.class is ok, no errors, but when i place this code ConfigHandler.loadConfig(new File(par1.getModConfigurationDirectory(), "CraftableHorseArmor.cfg")); in the PreInt the par1 is errored, how can i fix it? EDIT: fixed i replaced par1 by event In you configuration you declare the items in the config class, but i've my items declarated in another class: package SackCastellon.craftablehorsearmor.lib.loader; import cpw.mods.fml.common.registry.LanguageRegistry; import SackCastellon.craftablehorsearmor.common.item.SKCItem; import SackCastellon.craftablehorsearmor.common.CraftableHorseArmor; import SackCastellon.craftablehorsearmor.lib.handler.ConfigHandler; import net.minecraft.item.*; public class ItemLoader { public static Item Knot; public static void init() { Knot = new SKCItem(ConfigHandler.KnotID, NameLoader.Item_Knot_unlocalizedName); } public static void addNames() { LanguageRegistry.addName(Knot, NameLoader.Item_Knot_Name); } } And i want to create a KnotID field to vincule the ConfigHandler.class that sets the ID and the ItemLoader.class where the items are declarated, i hope you understand me.