Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

aw_wolfe

Members
  • Joined

  • Last visited

Everything posted by aw_wolfe

  1. I am interested in adding a unique item, which could be found with some probability in one of several ways (nether chest, fishing, mob drop). I can save a 'global' if item exists, but having trouble with checking against it to see if a new one should be created. I can trap the LootTableLoadEvent and add the item to say, CHESTS_NETHER_BRIDGE or where ever I wish, with what ever probability I want. However, I only want the item to occur once. So, like if it occurs, I'd want to remove it from the loot tables. However, after the LootTableLoadEvent, they appear to be 'frozen' (unable to alter items in table). Similarly, I know how to do it from a entity death event and add item there if possible, but doesn't help me with chests or fishing. The PlayerContainerEvent.Open potentially could be used, but I don't think there is a way to prevent the player from creating their own chest and finding the item (only want in MC generated chests). I found Draco18s Artifacts on GitHub which looks sweet, but trying to puruse the code... looks like it uses chest hooks and a single item which then behaves like many other items...not quite what I want and I don't see the compatibility functions (hooks,etc) in 1.11.2. So, I am not sure that is the way I should go for this in 1.11.2. Further, I want the item to be found, so I don't want to simply turn down the probability in the loot tables, just want one, and then turn the probability off. Trying to trap the created event on the item itself (to possible destroy itself if item already exists globally) wasn't getting anywhere. onCreated looks like a crafting event, not when MC creates it. Any thoughts on best course to pursue? Thanks, Tony
  2. I just think I need to pay attention better to where Forge takes over from MC. Mimicing the MC method wouldn't work now that I think about it. Difficult to think through sometimes when not able to focus on this for more than a few minutes at a time during the day. Thanks, Tony
  3. I could easily be wrong (am most of the time), but scanning through and trying a lit bit, I came to the following... ( I deleted the code I was actually trying)... but summarizing...I was trying to register the mod potiontype and mod potion in a similar fashion as in the Potion.registerPotions, and PotionType.registerPotionTypes was causing errors.... Registries are marked final and Potion constructor is marked private....I did not simply go to the GameRegistry.register(). Looks like the PotionCore code uses the basic framework of the classes, but then relies on trapping events and checking to see if instanceof is modded potion, then implements it's code, rather than using the built in system to have it call the potioneffect,etc... It seems using the built in system would be better if possible. I can play around and see if I can get it to work by registering a ModPotionType, ModPotion, ModPotionEffect straight to the GameRegistry and see if that automatically takes care of implementing the events for me, just wasn't assuming it would, which is why I was trying to look at how the vanilla potions were created and handled.
  4. I'm looking at starting a new mod with new potions and potion effects. From what I can tell in 1.11.2, the potion registry is private and you are unable to register directly to it. In researching around, I've found PotionCore, awesome to all those that post their mod's code, on github that basically shows creating an entire extended potion system to support the new potions/potion effects. I should be able to follow the example and get my project working, but I was wondering IF it was necessary to do, or am I missing some way to register new potions, potiontypes, etc.... without having to create an entire support structure for it.....also, does anyone know why this is the direction Forge went with the potion registry (some older examples seem to indicate you could register directly). Thanks, Tony
  5. Koward, Thanks. I guess I'm still at the point where I assume anything wrong is my issue. Good to know that maybe I'm getting the hang of things...sorta. You do any custom work on Forge itself? I was trying to setup a modified forge workspace, but couldn't get it to generate a complete snapshot (only got a few files). Wanted to be able to substitute other things than Items or blocks. Between only basic+ java, new to me gradle, new to me maven, new to me forge, and little time, just couldn't get it and put it on the back burner. Eventually, as I get a better understanding, I want to go back and work on a few things in forge itself.
  6. jeffryfisher, super thanks for taking the time to try and help. I have no idea why the doubledoor issues was failing in my original mod. Again, if either oak (wooden) or dark oak were substituted it worked fine, but if both were, then crashed. I have to assume something else in my mod was causing an issue, or forge had difficulty when a lot of other items/blocks are added, some kind of overflow issue ? Anyway, isolating the double doors into a new mod showed that both could be substituted if done in a mod by itself. Maybe a better design anyway to have separate mods with segragated functionality, rather than piling everything into a single mod. I spent way too much time assuming something was wrong with the mapping of modid/item, directory structure, json files etc....Turned out I was calling the substitution in the fml init instead of preInit. Arg, ugh. kicking myself, but nice to be able to move on to something else. I updated the github repro. I love the doubledoor functionality, maybe someone else will want it or can use the code examples. Tony
  7. No warnings in the log. I've been trying to debug for a bit, but not super familiar with eclipse and conditional breakpoints..so taking a while...not working the way I think it should. Anyway, ends up crashing when protected void loadBlock(BlockStateMapper blockstatemapper, Block block, final ResourceLocation resourcelocation) gets passed a resourcelocation with one of the original doors (class BlockDoor --instead of my BlockDoubleDoor and the resource location is a null). Actual fault: ModelBakery... private ResourceLocation getBlockstateLocation(ResourceLocation location) // location is null { return new ResourceLocation(location.getResourceDomain(), "blockstates/" + location.getResourcePath() + ".json"); } Now, why is an original BlockDoor getting passed in? Why is it null? Not sure, would need to back continue tracking down. However, I wanted to create a new project and just have the double doors, isolate my issue and post to github for help. However, now....it compiles and runs , however the texutures aren't getting mapped. Arg!! same directory structure from my other project. I'm not seeing my mapping error. Sees the language mappings, model mappings work, and my doubledoor functions, just get the pink/black blocks and items. I need sleep. One step forward, two steps backward. It's here if you have any inkling to take a look and see why the textures aren't mapping. https://github.com/awwolfe/minecraft_double_door
  8. Small progress, If I change to //ok, I really don't think this was doing this before. But if I only register one of them it works, but trying to register both does not. //works substitute(Blocks.OAK_DOOR,oakDoor); //substitute(Blocks.DARK_OAK_DOOR,darkOakDoor); //works //substitute(Blocks.OAK_DOOR,oakDoor); substitute(Blocks.DARK_OAK_DOOR,darkOakDoor); //errors substitute(Blocks.OAK_DOOR,oakDoor); substitute(Blocks.DARK_OAK_DOOR,darkOakDoor);
  9. I am replacing all the vanilla doors with a custom behavior (BlockDoubleDoor extends BlockDoor). preInit{ ironDoor=new BlockDoubleDoor("iron_door",Material.IRON,5.0F, SoundType.METAL,"iron_door"); oakDoor=new BlockDoubleDoor("wooden_door",Material.WOOD,3.0F,SoundType.WOOD,"wooden_door"); darkOakDoor=new BlockDoubleDoor("dark_oak_door",Material.WOOD,3.0F,SoundType.WOOD,"dark_oak_door"); spruceDoor=new BlockDoubleDoor("spruce_door",Material.WOOD,3.0F,SoundType.WOOD,"spruce_door"); jungleDoor=new BlockDoubleDoor("jungler_door",Material.WOOD,3.0F,SoundType.WOOD,"jungle_door"); birchDoor=new BlockDoubleDoor("birch_door",Material.WOOD,3.0F,SoundType.WOOD,"birch_door"); acaciaDoor=new BlockDoubleDoor("acacia_door",Material.WOOD,3.0F,SoundType.WOOD,"acacia_door"); substitute(Blocks.IRON_DOOR,ironDoor); //works //substitute(Blocks.OAK_DOOR,oakDoor); //errors, halts //substitute(Blocks.DARK_OAK_DOOR,darkOakDoor); //errors, halts substitute(Blocks.SPRUCE_DOOR,spruceDoor); //works substitute(Blocks.JUNGLE_DOOR,jungleDoor); //works substitute(Blocks.BIRCH_DOOR,birchDoor); //works substitute(Blocks.ACACIA_DOOR,acaciaDoor); //works } public BlockDoubleDoor(String name, Material materialIn,float hardness, SoundType sound,String unlocalizedname){ super(materialIn); this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(OPEN, Boolean.valueOf(false)).withProperty(HINGE, BlockDoor.EnumHingePosition.LEFT).withProperty(POWERED, Boolean.valueOf(false)).withProperty(HALF, BlockDoor.EnumDoorHalf.LOWER)); setUnlocalizedName(unlocalizedname); setHardness(hardness); setSoundType(sound); } public static void substitute(Block toReplace, Block newBlock) { if(newBlock instanceof BlockDoor){ substitute(toReplace, newBlock, new ItemDoor(newBlock)); } else{ substitute(toReplace, newBlock, new ItemBlock(newBlock)); } } ublic static void substitute(Block toReplace, Block newBlock, Item newItem) { try { ResourceLocation oldName = Block.REGISTRY.getNameForObject(toReplace); String nameToSubstitute = oldName.toString(); String nameToRegister = DadMod.modId + ":" + oldName.getResourcePath(); System.out.println("Substitute:"+nameToSubstitute+" with "+nameToRegister); newBlock.setRegistryName(nameToRegister); GameRegistry.addSubstitutionAlias(nameToSubstitute.toString(), GameRegistry.Type.BLOCK, newBlock); newItem.setRegistryName(nameToRegister); GameRegistry.addSubstitutionAlias(nameToSubstitute.toString(), GameRegistry.Type.ITEM, newItem); } catch (ExistingSubstitutionException e) { e.printStackTrace(); throw new RuntimeException(e); } } error when trying to substitute dark oak or wooden doors: " java.lang.NullPointerException: Initializing game at net.minecraft.client.renderer.block.model.ModelResourceLocation.<init>(ModelResourceLocation.java:24) at net.minecraft.client.renderer.block.statemap.DefaultStateMapper.getModelResourceLocation(DefaultStateMapper.java:15) at net.minecraft.client.renderer.block.statemap.StateMapperBase.putStateModelLocations(StateMapperBase.java:56) at net.minecraft.client.renderer.block.statemap.BlockStateMapper.getVariants(BlockStateMapper.java:74) at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:122) at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:252)" Seems like the replacement is working, but something about loading models is not. All the jsons (blockstates,models (block & items), textures (with variants)) for all the types of doors were copied over to my projects and verified mutliple times that they are in the correct directories. Is there anything different about the Dark Oak and Wooden doors that would cause them to fail, while the other ones work?
  10. First, I'm new to mc modding and working with eclipse (main experience with C++, c# and Unity 3d)...so I apologize ahead of time if my issues are truly stupid. Further, I may well be over my head, but doesn't seem like what I'm trying to do should be difficult once setup. I've been learning forge modding and ran into an issue that I couldn't solve with forge as is, with replacing vanilla stuff. Anyway the GameRegistry.Type and addSubstitutionAlias only support Blocks and Items. So I cloned the forge files from github and added Type.Biome and inserted code into addSubstitutionAlias to affect the iBiomeRegistry in GameData. (I could also see making a few more changes here and there in the future). If things worked, I was going to offer any changes back to forge for update review. I've done ./gradlew setupForge... However, building the project doesn't produce the files in the [home]/.gradle/cache/...../snapshot folder that my mod project classpath points to. Trying to manually point to the newly built stuff in the /myForge/build/distributions folder allows eclipse to not show errors (can't use source code viewing though yet), but ./gradlew build produces errors...doen't recognized the new Type.Biome (looks like still using the original forge in the [home]/gradle/cache/..../snapshot So, my questions are... On linux... 1) How do I get myForge project to generate a viable snapshot? I can build, but do not get same set of .jars. Taking the stuff out of my newly created mdk.zip and trying to setup new project produces errors. (example of several different tries.... Could not resolve all dependencies for configuration ':forgeGradleUserDevPackage'. > Could not find net.minecraftforge:forge:1.11.2-13.20.0.0. 2) How should I setup my development environment (eclipse/gradle) so that I can swap in and out new versions of forge? (official forge releases and mine) Pointing to my newly created .jars as external libraries in eclipse doesn't allow me to build with them with gradlew. Thanks, Tony
  11. I've not had any luck adding a new plant to a vanilla biome and haven't found anything that worked in older versions that works for me in 1.11.2. Here's my failed approaches: 1) Create a new biome and replace it over vanilla biome. a) GameRegistry.addSubstitutionaliase --- Type only takes Items or Blocks --so info on that isn't helping for 1.11.2 b) using biomemanager (add mine, remove theirs) [in preInit] ImmutableList<BiomeEntry> list=BiomeManager.getBiomes(BiomeType.WARM); //find the biome BiomeEntry plains=null; Iterator it=list.iterator(); while(it.hasNext()){ BiomeEntry be=(BiomeEntry)it.next(); if(be.biome.getBiomeName().toLowerCase().equals("plains")){ System.out.println("*******************Plains Biome Found***********"); plains=be; //be.itemWeight=0; --has no effect //it.remove() -- causes Immutable modification error //below doesn't do anything--see below on replacing BiomeDecorator //BiomeDecorator bd=be.biome.createBiomeDecorator(); //BiomeDecoratorD bd2=new BiomeDecoratorD(bd); //be.biome.theBiomeDecorator=bd2; } } if(plains!=null){ System.out.println("Plains Remove"); BiomeManager.removeBiome(BiomeType.WARM, plains); } With something like this, I get both "Plains Biome Found" and "Plains Remove" printed out. However, the plains biome is still listed if I do a check just afterwards. Set <ResourceLocation> biomes=Biome.REGISTRY.getKeys(); Iterator<ResourceLocation> itR=biomes.iterator(); while(itR.hasNext()){ ResourceLocation test=(ResourceLocation)itR.next(); if(test!=null){ System.out.println("Biome in registry:"+test.getResourceDomain()+":"+test.getResourcePath()); } } And still is generated with a newly created game. c) Trap the DecorateBiomeEvent.Decorate event and change plants there I can successfully trap the event (say of a grass generated) and DENY it, however, if I try to create anything during this event trap, it creates another Decoration event, which spins out of control and causes a stack overflow error. Further, trapping the BiomeEvent.CreateDecorator and trying to set the decorator here to one of my causes another Creator Event and spins out of control, causing a stack overflow. BiomeDecoratorD biome_decorator=new BiomeDecoratorD(event.getNewBiomeDecorator()); event.setNewBiomeDecorator(biome_decorator); d) replace the biomeDecorator I can find the biomeplains (above) and try setting theBiomeDecorator =new myBiomeDecorator(); //no errors, but mine is never ran. See above in preInit where I try to set the replacement @Override public void decorate(World par1World, Random par2Random, Biome biome, BlockPos pos) { System.out.println("BiomeDecoratorD:decorate***************"); //never called //super.decorate(par1World, par2Random, biome, pos); //normal biome is still generated } So, if anyone knows how to do this in 1.11.2, please point me in the right direction---first which approach, a sample line or two would be helpful as well if you can take the time.
  12. Well, thanks for taking the time, not everyone does or would for a question asked/answered so often. I did search first and browsed through the titles (albiet not every single one of them) and a few postings that might have been related but didn't see anything that matched what I thought my issue was. Most that I saw were about file/directory structure issues, which by my testing, I did not believe was my issue. Google searches for 1.11 crop tutorials were very limited. Thanks again for your time. Tony
  13. Thanks! Makes sense since the seed class creation needs the crop block. For some reason, I was thinking the other way around.
  14. I am trying to do the basic corn tutorial (https://shadowfacts.net/tutorials/forge-modding-1112/crops) So I have a BlockCornCrop extends BlockCrops, ItemSeedCorn, ItemCorn. I am also implementing the IModelProvider (again, basic for many tuts). In my ModItems, I am registering the ItemSeedCorn and ItemCorn. In my ModBlocks I am registering the BlockCornCrop Here's the issue: in my mod class if I do: @Mod.EventHandler public void init(FMLInitializationEvent event){ ModItems.init(); //registers corn, corn seed ModBlocks.init();//registers corn crop } The seeds are plantable, they grow and can be harvested (Which seems to indicate my corn blocks, json mappings, textures, etc are good), BUT the textures for corn seeds and corn are not loaded (pink square thing). if I do: @Mod.EventHandler public void preInit(FMLPreInitializationEvent even){ ModItems.init(); ModBlocks.init(); } OR: @Mod.EventHandler public void init(FMLInitializationEvent event){ ModBlocks.init(); } @Mod.EventHandler public void preInit(FMLPreInitializationEvent even){ ModItems.init(); } Then the seed and corn textures load (so tells me I think I have all the textures and json files in the correct spots. But when I go to plant the corn seeds MC crashes. I'm assuming it is an issue with where the init/registration takes place and not with the actual corn code, json files, directory structure. I can put those up if what I'm doing looks like it should work.
  15. Elix_x, Thanks. I've been going through the Tough as Nails code and they are not overriding biomes, but rather the weather system. I am slowing making my way through it, but wil skip the biome replacement idea for now. Tony
  16. OreCruncher: thanks..... Tough as Nails looks great. I figured I was re-inventing the wheel a bit on some of what I was doing, but was a good way for me to learn a new environment by starting from scratch on something. Though at some point, tearing your hair out stops being fun :). Will go through it tomorrow, test it, and pull out what I need. Tony
  17. Thanks. I already have a calendar, daytime/night cycle manager (longer days in summer, longer nights in winter). A weather controller (rain more in spring), etc.... The snow was an issue. I also still can't get my forest biome to replace the standard forest. Is there a good biome tutorial for 1.11.2 ? All biomes tuts I've seen so far are for older version where most of the functions approaches are deprepricated. I'll see if I can manually create own renderRainSnow () and install on client players. Once I have the effect, then really just need to find where MC adds snow to blocks during snow to complete the effect. I'll post code back here if I can get it working.
  18. I would like to add snow for seasonal changes and am not sure which approach makes the most sense...better design... Add the ability to snow in areas that are not normally set to snow. The biomes have a boolean snow enabled, but it is read only, so can't change it. Also, the EntityRenderer.renderRainSnow also uses a float temperature value, which is biome specific (height modified), but is also read-only. My options, as far as I can tell: 1) create a new biome for each one I want to replace an expose the temperature and snow enabled, which I can then set manually as the seasons progress. I've experimented with this, by using the BiomeManager and removing all forests, adding my own class derived form BiomeForest (but not working, something I'm doing isn't working) 2) create a new rain/snow manager that mimics MC behavior from EntityRenderer.renderRainSnow but with my modifications...seems easier to me to implement (mainly copy paste), but less flexible later. I've been struggling to get option 1 working ImmutableList <BiomeEntry> blist=BiomeManager.getBiomes(BiomeType.WARM); Iterator bit=blist.iterator(); while(bit.hasNext()){ BiomeEntry en=(BiomeEntry)bit.next(); if(en.biome.getBiomeName().toLowerCase().contains("forest")){ BiomeManager.removeBiome(BiomeType.WARM, en); } } blist=BiomeManager.getBiomes(BiomeType.COOL); bit=blist.iterator(); while(bit.hasNext()){ BiomeEntry en=(BiomeEntry)bit.next(); if(en.biome.getBiomeName().toLowerCase().contains("forest")){ BiomeManager.removeBiome(BiomeType.COOL, en); } } //after removing all forest biomes with BiomeManager BiomeProperties seasons_forest=new Biome.BiomeProperties("SForest").setTemperature(0.1F).setRainfall(0.8F).setSnowEnabled(); BiomeManager.addBiome(BiomeType.WARM, new BiomeEntry(new BiomeForestR(BiomeForest.Type.NORMAL, seasons_forest), 10)); BiomeManager.addBiome(BiomeType.COOL, new BiomeEntry(new BiomeForestR(BiomeForest.Type.NORMAL, seasons_forest), 10)); //this generates a list with "Extreme Hills,Plains,Swampland,SForest ImmutableList<BiomeEntry> list=BiomeManager.getBiomes(BiomeType.WARM); Iterator it=list.iterator(); System.out.println("Dump Biomes"); while(it.hasNext()){ BiomeEntry en=(BiomeEntry)it.next(); System.out.println(en.biome.getBiomeName()); } But when I check by playing game the normal forest is created with temp 0.7 and snow enabled=false instead of my 0.1 and snow enable=true. I am probably doing something wrong with replacing the forests, but I don't want to spend more time pursuing option 1, if it is not the best approach. Thanks, Tony
  19. I've noticed and would finally like to fix my issue of custom textures not loading when I run from eclipse...I've been dealing with it, but it is getting old. here is the issue I have custom textures in src/main/resources/assets/seasonsmod/textures/items I point to them in individual json files like: { "parent": "item/generated", "textures": { "layer0": "seasonsmod:items/thermometer" } } Building and running from ./gradlew works. The texures load.... ./gradlew build .... ./gradlew runClient However, running from Eclipse, the textures do not load (I get the pink square image). If, however, I copy the files into bin/assets/seasonsmod/textures/items the textures will load the first time I run from Eclipse, but running a second time causes the textures in the directory (bin/assets/seasonsmod/textures/items) to be erased and once again I get the pink square texture. Is this a project setting error in Eclipse? (I have build automatically off...but have tried both ways). Anyone know what my issue is? Thanks, Tony Solved: I deleted the bin,build, eclipse folder. re-ran ./gradlew eclipse and haven' yet noticed the issue again.
  20. Ok. Thanks. I don't think I need to save the information, more of a physical property, i.e. every stone would always weigh the same. So I was thinking that every load would add the property onto the block type each time. I'm ok with a look up table, but was wanting to design in a way that another mod could access the information if it wanted to. How do mods access other mods ? Can an API be set up like // //PSUEDO CODE--just to express my question // //my_mod external float getBlockWeight(String blockName){ //do my lookup table return doLookupTable(blockName); } //different_mod float weight=my_mod.getBlockWeight("minecraft:stone");
  21. I want to add an integer and float property to some vanilla blocks...something that can be accessed later with a blockstate.getProperty or something. An example is a weight value. Each block type would have a weight that I specify. I could have a lookup table, but I wanted to see if possible to add it in the 'proper way' that would also then allow other mods to have access to the new property. Further, I was hoping to avoid creating a new extended class for every block I wanted to add the new properties to, but instead add a new IProperty (?) to the default blockstate that I would create/init at mod loading. I do not see a register property function or a way to reset the default state with new property (hopefully, I'm missing one that is exposed). I'm still trying to figure out the properties design, so maybe way off base. --Does this make sense? Am I going about it the correct way? I just want to see if I'm stumbling/fumbling in the correct direction. Thanks, Tony
  22. Thanks. I do get a return on /find command, even for the large searches...even if to say '0 found'. I figured the large search area would be well outside anything generated when my player is first created. I am testing against searching for diamonds and can search a radius of 300 in about 6 seconds. I loaded new ore mod in a new world (generated with old ore mod and no mithril) and it did not find any. Then spend a few minutes flying off in one direction and re-searched, and found some. So Draco is correct. I did not expect minecraft to create that many chunks at start of game. I think I'll write a custom command to turn some stone into mithril and use it once to 'patch' a world and then rely on the worldgen to take care of new areas. Thanks.
  23. 1.11.2 I lack in understanding how minecraft generates the world block information. I had been assuming that everything is generated on the fly when the system asks for a chunk of blocks and then minecraft data only stores things that the players have changed. So it 'overlays' the changes onto the procedural generation.--This may not be correct. My issue is that I created some ores and set them to generate (using one of many examples) and they all did (or so I thought). One ore was meant to be very rare, much rarer than diamonds. I am using this modding to teach my kids java, so for fun, I sent them looking for the rare or ('mithril'). They couldn't find it. So I created a custom command "/find [object] [radius]" that searches a given radius of blocks for a specific object(block). Anyway, my rare ore wasn't generating at all. Testing it out, the minimum parameters I found actually generated any ore were (size=3, chances=1),so calling WorldGenMinable(ore, [size<3]) never produced any ore, ever. genSurface(...){ .... generateOre(ModBlocks.oreMithril.getDefaultState(),world,random,chunkX*16,chunkZ*16,2,30,3,1);//min to spawn any } private void generateOre(IBlockState ore, World world, Random random, int x, int z, int minY, int maxY, int size, int chances) { int deltaY = maxY - minY; for (int i = 0; i < chances; i++) { BlockPos pos = new BlockPos(x + random.nextInt(16), minY + random.nextInt(deltaY), z + random.nextInt(16)); WorldGenMinable generator = new WorldGenMinable(ore, size); generator.generate(world, random, pos); } } I'm sure there is some reason in the WorldGenMinable code why...but, while doing all this, my kids were building their little world. After fixing the mithril ore, I tested in newly created world and it worked, generating at a rate of about 1/10 of diamond ore. Updating the mod in the game my kids were enjoying, and reloading the game. I once again checked with my /find command and the mithril was still not being generated. This I'm not sure why. my find searches over 8,000,000 blocks. I did not think that the blocks were created and stored at game creation, only a table or registered blocks and a procedural generation was done...if so, the new updated mod should have created some mithril. Obviously, I don't know what is going on. If anyone can state how the minecraft world gen, data, overlay works, I'd appreciate it. Also, if there is anything I can do to update a previous world with new worldgen (no new ores, just changing the chances of creating), I'd more than appreciate it (kids too). Thanks, Tony
  24. Simply registering my custom command over the vanilla one worked. Did not need to listen for and trap event. //mod class @Mod.EventHandler public void serverLoad(FMLServerStartingEvent event){ event.registerServerCommand(new CommandDate()); event.registerServerCommand(new CommandTimeR()); } //custom command class public class CommandTimeR extends CommandTime{ public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { //my custom code }

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.