Jump to content

EverythingGames

Forge Modder
  • Posts

    388
  • Joined

  • Last visited

Everything posted by EverythingGames

  1. What do you mean exactly? Do you want to return an itemStack when you eat something? If so, check if the ticks for use remaining on the item is lapsed and add an item to the player's inventory. You can do this by overriding item methods such as onItemRightClick() and checking the item use duration.
  2. Create your own entity projectile / throwable, implement damage to it when it hits an entity. Spawn it when you perform some action in-game, such as overriding onItemRightClick() in an Item type. Very simple, actually. - Try looking at the snowball vanilla code, onItemRightClick() in ItemSnowball
  3. Thanks, that HaloCraft does exactly what I need to do...render obj models for items. The OBJ loader they use though - its pretty much the same as .B3D from what I can tell. I already have a wavefront converted B3D, so I gave it another try while also looking at the HaloCraft's code. The way they do it is that they add the loader to the ModelLoaderRegistry, add their mod to the loader, and finally they set up a custom resource location pointing to the obj model path in the model directory. I tried that with the B3D loader, it didn't work - I'm still going to try the API you suggested, though. Hopefully I can do magic with that API!
  4. That didn't do a thing. I need step by step instructions on what I'm supposed to do (I understand nobody is familiar with this system) considering there are a bunch of different ways one could think of doing this, as I have found out...I don't see why my .JSON doesn't read right. I seen in another post, a guy got his to render - which means this is possible. Looks like this going to be Forge's WaveFront support for 1.8... a format nobody ever knew about...B3D! Why scrap the AdvancedModelLoader? I hear this all the time from modders - why reinvent the wheel? Anyway, I'll still try to get this working (though I'm about to give up on it )!
  5. What if he wants to bind textures not of .JSON models dynamically in-game? Why would he want to pre-create a bunch of .JSON models for his item? There really needs to be a feature for binding textures to items just like IItemRenderer had back then... Yes, you can use IPerspectiveAwareModel to change the model based on the camera transform, ISmartItemModel based on the itemstack information, IFlexibleBakedModel for an explicit vertex format, etc. If you just want to create a bunch of .JSON models but don't need any of the interfaces above, simply override the getModel() method your item class and return any ModelResourceLocation you want for that item. Don't forget to add your extra .JSONs do the ModelBakery by using the ModelBakery.addVariantName(String) method. Hope that helps you out!
  6. For further info, here is what I've already done: Registered an item Added Mod domain to B3DLoader; Setup the .JSON rendering for the item above B3DLoader.instance.addDomain(MainReference.ID); ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(MainReference.ID + ":" + item.getUnlocalizedName().substring(5), "inventory")); Wrote the .JSON for the item above { "forge_marker": 1, "variants": { "inventory": { "model": "generic:item/ak47.b3d", "transform": "forge:default-tool", "textures": { "layer0": "generic:items/ak47" } } } } Code throws JSONParseException at run-time com.google.gson.JsonParseException: BlockModel requires either elements or parent, found neither at net.minecraft.client.renderer.block.model.ModelBlock$Deserializer.parseModelBlock(ModelBlock.java:252) ~[ModelBlock$Deserializer.class:?] at net.minecraft.client.renderer.block.model.ModelBlock$Deserializer.deserialize(ModelBlock.java:323) ~[ModelBlock$Deserializer.class:?] at com.google.gson.TreeTypeAdapter.read(TreeTypeAdapter.java:58) ~[TreeTypeAdapter.class:?] at com.google.gson.Gson.fromJson(Gson.java:803) ~[Gson.class:?] at com.google.gson.Gson.fromJson(Gson.java:741) ~[Gson.class:?] at net.minecraft.client.renderer.block.model.ModelBlock.deserialize(ModelBlock.java:47) ~[ModelBlock.class:?] at net.minecraft.client.resources.model.ModelBakery.loadModel(ModelBakery.java:269) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.access$800(ModelLoader.java:73) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:650) ~[ModelLoader$VanillaLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:107) [ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.loadAnyModel(ModelLoader.java:228) [ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.getModel(ModelLoader.java:211) [ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.loadItems(ModelLoader.java:190) [ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:99) [ModelLoader.class:?] at net.minecraft.client.resources.model.ModelManager.onResourceManagerReload(ModelManager.java:29) [ModelManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:130) [simpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:511) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:356) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:117) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] My item's .JSON and .b3d model are in assets/modid/models/item My .b3d model's texture is in assets/modid/textures/items Can anyone tell me what I am doing wrong? Am I registering the .JSON for the item correctly? Is my .JSON wrong? Is there something wrong with my B3D model? Am I pointing to any resource's path wrong?
  7. If his .JSON was wrong, it wouldn't render his model. @NathanLeadill how did you get that B3D to render as an item (I've been trying for days)? Maybe the way you load your B3D is causing your model to not accept its transforms.
  8. Wouldn't you just need to change the gravity integer to a negative number? (I don't know where you would do that, but that's a thought)
  9. Well, if you are using the latest build of Forge (or close to it) for 1.8, you can utilize the fix LexManos implemented a little while ago. Just override the method shouldCauseReequipAnimation() in your classes of the Item type and simply return false.
  10. I tried adding the variant name to the model bakery. I get an error at run-time saying the model was not found - when you add to the model bakery (variant name) it treats the file as a .JSON, I am using a .b3d. I have a test item setup - its .JSON contains the code needed to find the .JSON model and its texture path. When using that it throws the JSONParseException while also throwing an error on not finding the correct .JSON for the test item. I even tried using B3DLoader.instance.loadModel(resourcelocation) to cache my model, but I keep getting the .JSON Parse error. Is there any way to tell Forge that my item's .JSON is custom and points to a B3D model? I would really like to talk to Fry (RainWarrior) to see what he says to do to render B3D items (his B3D loader class supports items). Any ideas from anyone at what I should try to do next to get this working - much appreciation.
  11. I don't think rendering B3D models for items is possible...hence why Forge only has an example for B3D block models...
  12. I just tried adding ".b3d" with my modid when using addDomain() and still nothing. How do I actually attach this to my item? I've seen other people using .JSON code to refer to their .b3d model and texture. I tried doing that in the item's .JSON, but as said in an earlier post, I get a run-time exception of JsonParseException. Something is not reading right, and I am very confused on how I tell Forge to use my .b3d.
  13. Ah, but if you look at the class it says to add the modid as the string parameter, but if you look at the method itself it checks for ".b3d". So, are you saying I register the .b3d model with the addDomain() method?
  14. That makes the Model Loader treat the .JSON as a block model and throws a run-time exception saying it cannot find the elements or parent of the block model. Keep in mind I want to do this for an item. I am using your .JSON code inside the .JSON that is normally registered for the item - that .JSON is pointing to the .B3D model but it throws the JsonParseException. Any ideas?
  15. Thanks for the replies. I am getting a JSONParseException (the JSON was found apparently, but an error was found) and I don't really know why. Am I doing something wrong in the JSON code, or is it in my model loading code? Here is the code for both: Model Loading Code public void calledInClientProxy() { B3DLoader.instance.addDomain(MainReference.ID); ModeLoader.setupCustomModelResourceLocation(item, 0 , new ModelResourceLocation(/*item JSON path*/); //Is this needed? } JSON Code { "forge_marker": 1, "variants": { "inventory": { "model": "generic:item/model.b3d", //Yes, my modid is "generic" and the B3D model name is "model" "transform": "forge:default-tool", "textures": { "layer0": "generic:null" //No B3D model texture as of now } } } } Do I even need to set up a custom ModelResourceLocation or is registering the item render, like you would normally for items, sufficient enough? Thanks for any previous/further replies.
  16. The model registry instance is included in the model bake event. Even if I did register my IModel, how would I replace the item's ModelResourceLocation? How do IModels work? I know I had to do that when using ISmartItemModel an other IBakedModel types.
  17. Code like this will allow the implementation of B3D to IModel, but I cannot replace a modelresourcelocation with an IModel using the putObject(0 method, provided in the ModelBakeEvent. Here is that piece of code: @SubscribeEvent public void onEvent(ModelBakeEvent event) { try { final ResourceLocation resourcelocation = new ResourceLocation(MainReference.ID + ":" + "models/item/model.b3d"); final IModel model = B3DLoader.instance.loadModel(resourcelocation); //Then what? } catch(IOException exception) { exception.printStackTrace(); } } Does anyone have any experience with B3D or are there any suggestions at all? I would really love to have this feature in my mod.
  18. You can get an IModel object by using the B3DLoader.loadModel(ResourceLocation) method, but how do I attach that to an item?
  19. After hours and hours of work I still can't figure this out. I am trying to replace an item's model with a B3D model using the ModelBakeEvent. I converted a Wavefront model to B3D using RainWarrior's B3D exporter. Why is this code not working? @SubscribeEvent public void onEvent(ModelBakeEvent event) { final ResourceLocation resourcelocation = new ResourceLocation(MainReference.ID + ":" + "models/item/model.b3d"); final ModelResourceLocation modelresourcelocationone = new ModelResourceLocation(MainReference.ID + ":" + "item", "inventory"); final ModelResourceLocation modelresourcelocationtwo = new ModelResourceLocation(resourcelocation, "inventory"); final IBakedModel bakedmodel = event.modelManager.getModel(modelresourcelocationtwo); event.modelBakery.addVariantName(item, MainReference.ID + ":" + "model"); event.modelRegistry.putObject(modelresourcelocationone, bakedmodel); }
  20. Anyone know how to load this B3D model as an item?
  21. Alright, so I have my B3D model, I tried adding the domain and specifying a new ModelResourceLocation to a B3D for a test item, but the item still renders as the purple and black missing texture. The B3D model is in the assets/modid/models/item path and the code mentioned above is ran in the pre-init on the client side. Here's the code: B3DLoader.instance.addDomain(MainReference.ID); ModelLoader.setCustomModelResourceLocation(MainProxyCommon.testitem, 0, new ModelResourceLocation(MainReference.ID + ":" + "testitemname", "inventory"));
  22. Ah, well that makes more sense. I did a bit more research and others have said they had created B3D models by converting .obj and wavefront models in Blender. Hope this is the case, from there it is pretty easy rendering them from what I've seen. Another thing to add - I think B3D must be just a forge thing (a way to get realistic 3D models in Minecraft) considering they have classes for the models and their ain't a thing about B3D on google searching for it!
  23. You need to create a ScaledResolution (look at the source code using your IDE) object and get the scaled width / height from there. After that, divide both the width and height by 2 (getting the exact center of the screen based on its resolution) and then add / subtract from there. Pure math.
  24. Hi, I figured I want the ease of being able to efficiently use models without spending the time making a less quality .JSON model, while also getting a realistic model in the end. I heard about, and looked through Forge's src and their tutorial on how to use B3D models for items / blocks. My question is what exactly is this and how do I use it (is this just a forge thing)? If its a model format, why did forge not use something more popular like .obj or .BLEND? Also, is it possible to convert other models to this format? Thanks.
  25. Well, I managed to get it working exactly to how I want it. Forgot I had to override the isGui3d() method (silly mistake!) along with returning a different IBakedModel with its own transforms in handlePerspective(). In the earlier post, you were correct, IPerspectiveAwareModel is all you need. Thanks again!
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.