Jump to content

[1.6.4][SMP] Mad Science - Machines, items, and mobs for laboratories!


Recommended Posts

Posted

What is Mad Science?

A modification for Minecraft created using Minecraft Forge and Universal Electricity. It adds machines, items, and mobs to create your own laboratory! Remember kids, science has no limits… and no bounds…

 

MadScienceBust.png

 

Our scientists have worked hard to bring you some of the finest equipment for genetic research Minecraft has to offer. These custom built machines fit into one of three separate categories. The categories represent the different stages of the game in which you will encounter them, and also will be expected to craft at that tier of the game.

 

Features

  1. [*]Harness powerful machines like the
Computer Mainframe to combine multiple Genome Data Reels to create new and crazy forms of life such as the Disgusting Meat Cube!

[*]Use the Cryogenic Tube to harvest electrical power from Villagers memories, you can also playback existing Memory Data Reels for maximum power output!

[*]Create spawn-eggs for mobs using the Genome Incubator! No need to perform crazy experiments unless you want!

[*]Discover the true purpose of Nether Quartz! This vanilla Minecraft ore has been fully realized as the source for technology in this mod. Using the Thermosonic Bonder and the purified version of Nether Quartz known as Fused-Quartz you can create Silicon Wafers, CPUs, RAM, and myriad of other circuits.

[*]Recycle all components created and used. With custom blocks like the Syringe Sanitizer to clean your dirty needles and the Cryogenic Freezer to keep your DNA Samples and Filled Syringes nice and fresh you will be able to store those samples indefinitely until you are ready to experiment.

Installation Instructions

 

Adding Mad Science to ’Feed the Beast’ mod-pack.

Adding Mad Science to ’Tekkit’ mod-pack.

Adding Forge to Unmodded Minecraft 1.6.4 on Windows

 

Video Overview

 

External Links

Mad Science Minecraft Mod

Curse Forge Mod Page

Minecraft Forum Post

Posted

Version 0.3 is out! Major release with fixes to make the mod more compatible with other mods. If you guys have any suggestions for mobs or machines post them here or email us at [email protected]

  • Removed Basic Components completely.
  • Removed all Ore generation methods in favor of vanilla recipes.
  • Changed Thermosonic Bonder recipe to use vanilla items instead of Basic Component ones.
  • Finalized UE integration at 2.3.0.197 until 3.x becomes more stable.
  • Updated HOWTO section on website accordingly to remove BC references.
  • Fixed problem with client rendering methods being called on dedicated server, this is fixed so Mad Science can run on single, client-server, or dedicated server!

Posted

Version 0.4 is out and has a fix to make it more compatible with other mods!

  • Renamed 'LiquidDNA' and 'LiquidMutantDNA' internally to 'madDNA' and 'madMutantDNA' respectively. This is to fix compatibility problems with other mods. Looking at you Binnie.
  • Fixed bug with Meat Cube not visually showing in GUI how much liquid mutant DNA is inside of it even though it was working properly.
  • Cleaned up interaction with Liquid Registry in Forge. Any future compatibility problems can be sorted out via configuration files.

We have fixed an issue identified by ‘DrummingFish’ on the Minecraft Forum so a nice shout out to him for letting us know and giving us the crash log to fix it!

 

The problem was compatibility with other mods such as the popular Extra Bee’s made by Binnie. The DNA for his bees is respectively called ‘liquidDNA’ just as ours was. So rather than argue semantics we just added a ‘mad’ prefix to all our names which should prevent any conflicts in the future in the Forge Liquid Registry.

Posted

Version 0.5 is out! With this latest version we had to address a problem with client-side only functions attempting to be called by the server.

  • Fixed problem pointed out by 'NABOSUECO98' where Thermosonic Bonder was not properly working on a dedicated server environment. Thank you for telling us so we could fix it!
  • Removed all other calls to scaling functions for textures that need it to be displayed on the server.
  • Groundwork laid for upgrading to UE 3.x when it becomes more widely adopted.

Posted

Version 0.6 is out and fixes yet another major problem! Thanks to our players we have been able to quickly identify these issues and get them fixed. A big shout out to TheTechnician, DrummingFish and anicet74 for helping us fix this quicker rather than later!

 

Forge: 9.11.1.965+

Minecraft Compatibility: 1.6.4

Dependencies: Universal Electricity 2.3.0.197

 

Changelog

  • Overhauled the mod config and corrected a major problem where changes to config files would be overwritten before they could be read!
  • Fixed a problem with the meatcube dividing by zero when randomly choosing a time to update it's animation. This time will now never be zero and any saved worlds with this value will auto-fix on load.
  • Added support for viewing Cryotube GUI from any of the 3 blocks that make up the total structure. Likewise if any of these 'ghost' blocks are broken the entire machine will give you the item as you would expect. You can only hook cables and wires up to the bottom block, this is by design.

  • 2 weeks later...
Posted

Version 0.7 is out and we have a grocery list of changes for you! We have added a new machine the Data Reel Duplicator and also added nine (9) new mobs for you to experiment with. We would like to thank the users that submitted their ideas for some of the mobs in this upcoming version. As thanks to them we use the names they gave the creature and tried to re-create what they requested (within reason, some of you guys are crazy.. but we like crazy).

 

Here are their names and creatures for future reference:

 

Bart74

[Cow + Sheep] “Wooly cow”

 

Deuce_Loosely

[slime + Squid] “Shoggoth”

 

monodemono

[Enderman + Spider] “The Abomination”

 

Pyrobrine

[Enderman + Skeleton] “Wither Skeleton”

[Villager + Zombie] “Villager Zombie”

[Horse + Skeleton] “Skeleton Horse”

[Zombie + Horse] “Zombie horse”

 

TheTechnician

[Enderman + Squid] “Ender Squid”

 

Version 0.7

  • Interfaced with Not Enough Items (NEI) to hide Cryotube Ghost block since it was causing confusion for players when seeing them side-by-side in NEI item list. This block is only used in the multi-block structure that is the Cryotube and should only be spawned by code.
  • Updated GUI's for some of the machines to match the others in the mod by adding silhouettes of input items for container slots.
  • Added 'Data Reel Duplicator' a new machine that will allow you to create a copy of any data reel. It could be a genome data reel or a memory data reel so long as you have another empty data reel you can copy the information onto it without error. Requires only power and regents to function.
  • Fixed bug with icons for water still, water flowing, lava still, lava flowing and fire all being transparent. Bug was items rendering in the world but 2D item icons were transparent.
  • Renamed 'Example Mob' to Werewolf since he is wolf + villager and updated his sounds accordingly.
  • Added mob 'Creeper Cow' [Cow + Creeper] which will give you raw beef and gunpowder when killed and also mutant DNA when milked, however his explosion is 2x greater than that of a creeper due to his size.
  • Added mob 'Wooly Cow' [Cow + Sheep] suggested by Bart74. A cow with wool, like a sheep you can still get milk from it, but also wool and up to 5 pieces at a time!
  • Added mob 'Shoggoth' [slime + Squid] suggested by Deuce_Loosely. Looks like a big black slime with multiple eyes and tentacles sticking out of it. It acts like a regular slime except it can be fed slimeballs and regenerate back to it's original giant size. They are hostile to every mob except other shoggoths.
  • Added mob 'The Abomination' [Enderman + Spider] suggested by monodemono. Short like a squid, black like an enderman. This creature can randomly teleport when taking damage. It lays eggs inside victims bodies human or animal that turn into eggs which in turn spawn more of the creatures whenever a player gets near the eggs. They drop spider and enderman drops. Terminate with an extreme prejudice.
  • Abomination Eggs spawn source block of mutant DNA if you manage to destroy them before the egg hatches. Default hatching time is 5 minutes or 6,000 ticks.
  • Added ability to spawn unused Mojang mobs 'Wither Skeleton' [Enderman + Skeleton], 'Villager Zombie' [Villager + Zombie], 'Skeleton Horse' [Horse + Skeleton] and 'Zombie horse' [Zombie + Horse]. Suggested by Pyrobrine, what an awesome idea keep em' coming.
  • Added mob 'Ender Squid' suggestd by TheTechnician. Just an interesting twist on Enderman, immune to water damage, and have an extra set of limbs, and a purple/blue hue to them.
  • Renamed 'Human DNA' to 'Villager DNA' in accordance with the rest of Minecraft naming scheme.
  • Fixed a bug that would crash dedicated server when attempting to decay syringes and DNA samples. Side-effect of this is syringes and DNA samples now decay even in creative mode.
  • Updated sounds for disgusting meatcube.
  • Switched hosting providers from Hostgator to Linode for speed/caching purposes. Check them out yourself if you want a reliable and customizable server with SSH access.
  • Added section on site for compataibility with other mods, this way players can know ahead of time if they will have ID conflicts or other problems.
  • Added section on site for license information. Mad Science makes use of officialy of the 'Minecraft Mod Public License' (same one used by Buildcraft).

Posted

The latest version of Mad Science version 0.8 is out now! We are happy to report that things are going really well! We have sorted out all the problems with the mod now and are going to be included in the Voltz modpack! This is a really awesome thing and has all of us who work on it very excited. Mad Science is also now featured on the Universal Electricity website along with the other popular mods that make use of the UE API.

  • Upgraded Universal Electricity API to latest recommended, version 3.0.1.42. UE is now a dependency and required to run Mad Science.
  • Now a featured mod on http://universalelectricity.com/ (w00t!)
  • Added options to config: Tweak individual machine energy usage for consumption, production and total internal storage defaults.
  • Added options to config: Disable syringe/DNA sample decay feature if desired.
  • Added options to config: Adjust decay rate of syringes and DNA samples in seconds.
  • Added options to config: Adjust cook time for mainframe computer processing time to create new life forms. By default they are all 2600 ticks (approx 2 minutes).
  • Filled syringes and DNA samples will not decay in cold environments such as snow biomes where temperature is low.
  • Adjusted default decay time for filled syringes and DNA samples to be 30 seconds.
  • Cryotube now turns off and resets if rotten flesh count reaches 64 in internal output slot for it.
  • Cryotube now has new sound for when it is turned off.
  • Cyrotube dead animation is now only played when rotten flesh output slot is full and redstone power is still applied.
  • Cryotube sounds for hatching and growing villagers in the tube reduced by 90%.
  • Updated Cryotube GUI to show icons in output slots for items that will occupy those slots.
  • Cryotube on state now correctly shows when redstone signal on and no nether star or villager spawn eggs or data reels.
  • Increased Cryotube hatching time by double the previous amount.
  • Updated sounds for syringes when stabbing mobs or yourself.
  • Breaking disgusting meat cube will now reward you with a single bone rather than a full meat cube for you to place back down.

Posted

Quick fix! Version 0.81 - Fixes crash on dedicated server with syringes decay. (jeez these biome query functions are very fickle!). Removed feature that checks to see if needle is in cold biome until reliable server-only method can be written. Sorry about that everybody, our bad!

Posted

I just noticed, what is your picture?

The Mad Science logo - what is it. It looks like the eye from zela got a ride from some insect.

Communication is a vital tool, in the game industry you won't go anywhere without it. People are either going to learn to talk, or move on.

  • 3 weeks later...
Posted

NOTE: Remember to delete your configuration file madscience.cfg and let it regenerate if you have previously installed the mod and are upgrading!

 

Grab the latest version 0.9 of Mad Science! We have a new machine which acts like a quarry called a soniclocator, a new mob which is used in it's creation, several optimizations and improvements to help make the move to 1.7x more painless and more awesome features for you guys like autoID resolving now and localization support.

 

IMPORTANT: You must be using Universal Electricity 3.1.+ or higher due to recent API changes. If you don't Mad Science will crash when placing tile entities!

 

  • Updated to UE 3.1.0
  • Removed UE as hard dep.
  • Added Soniclocator device.
  • Added auto ID resolver that will pick next available block or item ID automatically for you if there are conflicts.
  • Added Techne model loader for loading models directly from file rather than .java model format.
  • Refactored Components into individual items instead of metaitems in preparation for 1.7.
  • Added recipe for Thumper device used in crafting Soniclocator.
  • Added Enderslime mob which drops Enderslime item.
  • Merged AI of Enderman and Slime together for Enderslime and made him drop Enderslime items on death.
  • Added Enderslime block which is crafted from Enderslime items dropped from mob of the same name (can you see a theme here?)
  • Cleaned up Cryotube code and removed unused imports.
  • Added PACKETSEND_RADIUS to configuration files. Default is 25 blocks.
  • Added THERMOSONICBONDER_FINALSACRIFICE configuration option. Controls what block is used in that devices recipe.
  • Added config options for disabling Abomination teleporting and egg laying.
  • Use of reflection to hide items in NEI now rather than manual hook and dependancy.
  • Updated build scripts to remove dependancies on CCC and NEI.
  • Added localization support for Slovenien. Thank you codebracker0!
  • Revised versioning scheme to match pre-jenkins build numbers.
  • Updated to Gradle build scripts which is Forge default now.
  • Updated jenkins links in repo.

Posted

We got the hot-fix ready and present Mad Science 0.91 for download! No major changes just adding German language localization provided by a user and fixing an embarrassing spelling mistake in the English one (Crogenic Freezer vs Cryogenic Freezer). Happy gaming and see you in a week or so with another update :)

 

  • Fixed spelling mistake in English localization file. Thank you Vexatos!
  • Added German localization support. Vexatos owed beer status += 1;
  • Fixed argument out of bounds exception with Ender Squid. Thanks Kyotra!

Posted

Version bump to Mad Science 0.91.88 this fixes a crash reported on dedicated server and also adds tooltips for all items and machines in the mod, even the GUI's now have tooltips to indicate input slots and how much energy or fluid or whatever is currently inside of them. Anyway, back to work!

 

  • Added dynamically generated tooltips for combined genomes and spawn eggs which show base mob combinations.
  • Added flavor text to each tile entity.
  • Added tooltips to localization files and filled out all default English entries.
  • Added hatching, subject  neural and health tooltips to Cryotube GUI.
  • Removed individual output slot classes and made them cpw SlotFurnace classes instead.
  • Fixed 'NoClassDefFoundError' on dedicated server when running minetweaker mod.

 

Posted

Got a new update and also big version bump~ we are happy to announce we have hit version 1.00.97! This is the version that will be going in the updated Voltz modpack for 1.6.4 when that hits in the coming days so we are all very excited about that. We would have added more mobs but for stability decided against it.

  • Updated build properties to 1.0 final for Voltz modpack.
  • Added help system with pi symbol in upper right corner of every machine with GUI, clicking will open wiki link in default browser (totally not a reference to The Net).
  • Fixed invalid characters that make Minecraft use smaller font in English language file.
  • Added update checker that tells you how many builds behind you are, can be disabled.

  • 1 month later...
Posted

It's that time again! We got a brand new version of the madness with new gadgets for you all to play with this coming weekend. We have been working hard on these machines and items over the last couple of weeks and really think you all will enjoy them! The coolest one by far is the M41A Pulse Rifle which has been introduced to help players with killing some of the more aggressive critters that genetic engineering had a tendency to create. Read on for change log, full details on our site with videos!

 

Mad Science v1.00.138

 

  • Added Clay Furnace which will create whole blocks from a single iron or gold ore. Requires to be lit on fire with flint and steel.
  • Finished implementation of pulse rifle. Working magazines, bullets and grenades.
  • Initial commit for Magazine Loader tile entity, fills pulse rifle magazines quicker than any Steve.
  • Initial commit for CnC machine. Cuts weapon components for Pulse Rifle out of iron blocks using high pressure water.
  • Added initial commit for VoxBox which is based on Black Mesa Announcement System from Half-Life 1.
  • Tweaked update checker to timeout after 500 millis if unable to ping Jenkins builder server to prevent unneeded lag on startup if server is down.
  • Updated client proxy with custom particle rendering functions, grants ability to spawn bubbles and splash particles when normal MC only spawns them in water.
  • Added custom explosion class that extends MC one to give more fine grain control over parameters of explosion and particles and sounds.
  • Added Binary -> ASCII and ASCII -> Binary functions for decoding written books for CnC machine.
  • Added MD5 methods into utility functions for fingerprinting purposes.
  • Finalized code for Magazine Loader logic. Will only fill magazines up to 95/99 rounds to prevent jamming, requires at least 95 bullets in storage area to operate.
  • Fixed bug with meatcube render instancing.
  • Added Forge event hook for RenderPlayerEvent regarding Pulse Rifle. Allows EQUIPPED/3rd Person camera to convey using item status and animation.
  • Refactored each tile entity and mob to have it's own sound init class. Much cleaner now!
  • Added ricochet sounds for bullets when that event occurs.
  • Pulse Rifle Grenades cause fire and explosion damage on collision, bullets have 1/100 chance of causing critical damage which will cause a very tiny explosion (explosive rounds are the best amirite?).
  • Abomination eggs can always be broken by grenades, 1/100 chance of a bullet doing it, very susceptible to fire!
  • Fixed bug where soniclocators would not be properly removed from location registry after destruction.
  • Added config option to change clay furnace cook time in seconds. Default is 420 (7 minutes).
  • Added more verbose startup messages during startup.

 

PS> Will be updating site for a couple more hours after this post with latest info for new items and machines.

Posted

Version bump to 1.00.139 because one of our users discovered if you place an empty book into the VoxBox it would cause a crash. This has been quickly remedied!

  • VoxBox: Fixed divide by zero and bug with voxbox where it would not reset if input book was empty or has no valid dictionary words.
  • VoxBox: Disabled debugging console output.

  • 2 weeks later...
Posted

Bug fix Mondays! An issue was reported on our tracker, since it was anon whoever that was thanks for helping us fix this sooner rather than later.

 

Version 1.00.154

  • Fixed a Null Pointer Exception (NPE) bug in DNA Extractor that was created by allowing items other than needles to be inserted in last update. This system has been completely re-written and tested.

  • 1 month later...
Posted

Hey everyone! Got a new version we have been working on and playing on dev server last few weeks where we test the other UE mods. I would like to personally thank MissOpenEye the bot for the OpenEye guys which relays crash reports from their new project. It has been a huge help in locating bugs that probably would have never otherwise been known.

 

So along with a new labcoat and goggles you get tons of bug fixes! Onward with science!

 

Version 1.00.165 Changelog

 

  • Data duplicator now requires a redstone signal to function. This prevents the idle sound from playing (which can be annoying) but also indicates the machine is drawing power.
  • Fixed bug with thermosonic bonder not being fully automatable. Items can now be inserted and extracted from all sides.
  • Fixed bug with Soniclocator not being able to locate OreDictionary blocks that used metadata.
  • Fixed type casting bug in Magazine Loader breakBlock() method. Checks instanceof MagazineLoader before attempting to act on it.
  • Fixed NPE bug in clay furnace when checking if furnace was in smoldering state on idDropped().
  • Fixed bug with possible itemstack attempting to return -1 when VoxBox was broken by entity that was not a player.
  • Fixed NPE with Cryotube not checking if output slot was null properly.
  • Fixed bug with AbominationEggBlock calling hasTileEntity(0) on block creation.
  • Added Laboratory Coat and Leggings.
  • Added goggles - "They do nothing!"

 

Requirements

Forge: 9.11.1.964+

Minecraft Compatibility: 1.6.4

Dependencies: Universal Electricity 3.1+

 

Download Link

http://madsciencemod.com/files/download-info/version-1-00-165/

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Please post logs as described in the FAQ (https://forums.minecraftforge.net/topic/125488-rules-and-frequently-asked-questions-faq/), they will contain information that may help.  
    • I've been trying to find a solution for this for the past few days and cant seem to find it anywhere.   What i want to do is basically set my player's head pitch without the server noticing it. Basically client-side change.   Is there a way to do this? With mixins or anything else?   Thanks in advance.
    • Did you ever find a solution to this
    • I have followed a tutorial on how to generate ores for my mod though the data files have not been generated despite me running data in my IDE.  I have looked over and compared my code multiple times and the only differences are either with the IDs or with unnecessary code because of what my mod is (The mod is for the End so I don't need the Overworld or Nether ores), my folders are all in the right structure and no warnings are present when ran. I have been trying to figure this out for a few days now so help would be much appreciated.  The tutorial I was following.  My code -  public class ModBiomeModifiers { public static final ResourceKey<BiomeModifier> ADD_GAZITE_ORE = registerKey("add_gazite_ore"); public static final ResourceKey<BiomeModifier> TRANSCENDINE_GAZITE_ORE = registerKey("add_transcendine_ore"); public static void bootstrap(BootstrapContext<BiomeModifier> context) { var placedFeature = context.lookup(Registries.PLACED_FEATURE); var biomes = context.lookup(Registries.BIOME); context.register(ADD_GAZITE_ORE, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_END), HolderSet.direct(placedFeature.getOrThrow(ModPlacedFeatures.GAZITE_ORE_PLACED_KEY)), GenerationStep.Decoration.UNDERGROUND_ORES)); context.register(TRANSCENDINE_GAZITE_ORE, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_END), HolderSet.direct(placedFeature.getOrThrow(ModPlacedFeatures.TRANSCENDINE_ORE_PLACED_KEY)), GenerationStep.Decoration.UNDERGROUND_ORES)); } private static ResourceKey<BiomeModifier> registerKey(String name) { return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, ResourceLocation.fromNamespaceAndPath(EchoingEnd.MOD_ID, name)); } } The tutorial's code -  public class ModBiomeModifiers { public static final ResourceKey<BiomeModifier> ADD_ALEXANDRITE_ORE = registerKey("add_alexandrite_ore"); public static final ResourceKey<BiomeModifier> ADD_NETHER_ALEXANDRITE_ORE = registerKey("add_nether_alexandrite_ore"); public static final ResourceKey<BiomeModifier> ADD_END_ALEXANDRITE_ORE = registerKey("add_end_alexandrite_ore"); public static void bootstrap(BootstrapContext<BiomeModifier> context) { var placedFeature = context.lookup(Registries.PLACED_FEATURE); var biomes = context.lookup(Registries.BIOME); context.register(ADD_ALEXANDRITE_ORE, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_OVERWORLD), HolderSet.direct(placedFeature.getOrThrow(ModPlacedFeatures.ALEXANDRITE_ORE_PLACED_KEY)), GenerationStep.Decoration.UNDERGROUND_ORES)); // Individual Biomes // context.register(ADD_ALEXANDRITE_ORE, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( // HolderSet.direct(biomes.getOrThrow(Biomes.PLAINS), biomes.getOrThrow(Biomes.BAMBOO_JUNGLE)), // HolderSet.direct(placedFeature.getOrThrow(ModPlacedFeatures.ALEXANDRITE_ORE_PLACED_KEY)), // GenerationStep.Decoration.UNDERGROUND_ORES)); context.register(ADD_NETHER_ALEXANDRITE_ORE, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_NETHER), HolderSet.direct(placedFeature.getOrThrow(ModPlacedFeatures.NETHER_ALEXANDRITE_ORE_PLACED_KEY)), GenerationStep.Decoration.UNDERGROUND_ORES)); context.register(ADD_END_ALEXANDRITE_ORE, new ForgeBiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_END), HolderSet.direct(placedFeature.getOrThrow(ModPlacedFeatures.END_ALEXANDRITE_ORE_PLACED_KEY)), GenerationStep.Decoration.UNDERGROUND_ORES)); } private static ResourceKey<BiomeModifier> registerKey(String name) { return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, name)); } }   ModConfiguredFeatures:   My code -  public class ModConfiguredFeatures { public static final ResourceKey<ConfiguredFeature<?, ?>> GAZITE_ORE_KEY = registerKey("gazite_ore"); public static final ResourceKey<ConfiguredFeature<?, ?>> TRANSCENDINE_ORE_KEY = registerKey("transcendine_ore"); public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context) { RuleTest endReplaceables = new BlockMatchTest(Blocks.END_STONE); register(context, GAZITE_ORE_KEY, Feature.ORE, new OreConfiguration(endReplaceables, ModBlocks.GAZITE_ORE.get().defaultBlockState(), 4)); register(context, TRANSCENDINE_ORE_KEY, Feature.ORE, new OreConfiguration(endReplaceables, ModBlocks.TRANSCENDINE_ORE.get().defaultBlockState(), 8)); List<OreConfiguration.TargetBlockState> EndOres = List.of( OreConfiguration.target(endReplaceables, ModBlocks.GAZITE_ORE.get().defaultBlockState()), OreConfiguration.target(endReplaceables, ModBlocks.TRANSCENDINE_ORE.get().defaultBlockState())); } public static ResourceKey<ConfiguredFeature<?, ?>> registerKey(String name) { return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(EchoingEnd.MOD_ID, name)); } private static <FC extends FeatureConfiguration, F extends Feature<FC>> void register(BootstrapContext<ConfiguredFeature<?, ?>> context, ResourceKey<ConfiguredFeature<?, ?>> key, F feature, FC configuration) { context.register(key, new ConfiguredFeature<>(feature, configuration)); } }   The tutorial's code - public class ModConfiguredFeatures { public static final ResourceKey<ConfiguredFeature<?, ?>> OVERWORLD_ALEXANDRITE_ORE_KEY = registerKey("alexandrite_ore"); public static final ResourceKey<ConfiguredFeature<?, ?>> NETHER_ALEXANDRITE_ORE_KEY = registerKey("nether_alexandrite_ore"); public static final ResourceKey<ConfiguredFeature<?, ?>> END_ALEXANDRITE_ORE_KEY = registerKey("end_alexandrite_ore"); public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context) { RuleTest stoneReplaceables = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); RuleTest deepslateReplaceables = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); RuleTest netherrackReplaceables = new BlockMatchTest(Blocks.NETHERRACK); RuleTest endReplaceables = new BlockMatchTest(Blocks.END_STONE); List<OreConfiguration.TargetBlockState> overworldAlexandriteOres = List.of( OreConfiguration.target(stoneReplaceables, ModBlocks.ALEXANDRITE_ORE.get().defaultBlockState()), OreConfiguration.target(deepslateReplaceables, ModBlocks.ALEXANDRITE_DEEPSLATE_ORE.get().defaultBlockState())); register(context, OVERWORLD_ALEXANDRITE_ORE_KEY, Feature.ORE, new OreConfiguration(overworldAlexandriteOres, 9)); register(context, NETHER_ALEXANDRITE_ORE_KEY, Feature.ORE, new OreConfiguration(netherrackReplaceables, ModBlocks.ALEXANDRITE_NETHER_ORE.get().defaultBlockState(), 9)); register(context, END_ALEXANDRITE_ORE_KEY, Feature.ORE, new OreConfiguration(endReplaceables, ModBlocks.ALEXANDRITE_END_ORE.get().defaultBlockState(), 9)); } public static ResourceKey<ConfiguredFeature<?, ?>> registerKey(String name) { return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, name)); } private static <FC extends FeatureConfiguration, F extends Feature<FC>> void register(BootstrapContext<ConfiguredFeature<?, ?>> context, ResourceKey<ConfiguredFeature<?, ?>> key, F feature, FC configuration) { context.register(key, new ConfiguredFeature<>(feature, configuration)); } }   ModPlacedFeatures:   My code - public class ModPlacedFeatures { public static final ResourceKey<PlacedFeature> GAZITE_ORE_PLACED_KEY = registerKey("gazite_ore_placed"); public static final ResourceKey<PlacedFeature> TRANSCENDINE_ORE_PLACED_KEY = registerKey("transcendine_ore_placed"); public static void bootstrap(BootstrapContext<PlacedFeature> context) { var configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); register(context, GAZITE_ORE_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.GAZITE_ORE_KEY), ModOrePlacement.commonOrePlacement(9, HeightRangePlacement.uniform(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(71)))); register(context, TRANSCENDINE_ORE_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.GAZITE_ORE_KEY), ModOrePlacement.rareOrePlacement(6, HeightRangePlacement.uniform(VerticalAnchor.absolute(-32), VerticalAnchor.absolute(71)))); } private static ResourceKey<PlacedFeature> registerKey(String name) { return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(EchoingEnd.MOD_ID, name)); } private static void register(BootstrapContext<PlacedFeature> context, ResourceKey<PlacedFeature> key, Holder<ConfiguredFeature<?, ?>> configuration, List<PlacementModifier> modifiers) { context.register(key, new PlacedFeature(configuration, List.copyOf(modifiers))); } }   the tutorial's code -  public class ModPlacedFeatures { public static final ResourceKey<PlacedFeature> ALEXANDRITE_ORE_PLACED_KEY = registerKey("alexandrite_ore_placed"); public static final ResourceKey<PlacedFeature> NETHER_ALEXANDRITE_ORE_PLACED_KEY = registerKey("nether_alexandrite_ore_placed"); public static final ResourceKey<PlacedFeature> END_ALEXANDRITE_ORE_PLACED_KEY = registerKey("end_alexandrite_ore_placed"); public static void bootstrap(BootstrapContext<PlacedFeature> context) { var configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); register(context, ALEXANDRITE_ORE_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.OVERWORLD_ALEXANDRITE_ORE_KEY), ModOrePlacement.commonOrePlacement(12, HeightRangePlacement.uniform(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(80)))); register(context, NETHER_ALEXANDRITE_ORE_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.NETHER_ALEXANDRITE_ORE_KEY), ModOrePlacement.commonOrePlacement(12, HeightRangePlacement.uniform(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(80)))); register(context, END_ALEXANDRITE_ORE_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.END_ALEXANDRITE_ORE_KEY), ModOrePlacement.commonOrePlacement(12, HeightRangePlacement.uniform(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(80)))); } private static ResourceKey<PlacedFeature> registerKey(String name) { return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, name)); } private static void register(BootstrapContext<PlacedFeature> context, ResourceKey<PlacedFeature> key, Holder<ConfiguredFeature<?, ?>> configuration, List<PlacementModifier> modifiers) { context.register(key, new PlacedFeature(configuration, List.copyOf(modifiers))); } }   ModOrePlacement:   My code -  public class ModOrePlacement { public static List<PlacementModifier> orePlacement(PlacementModifier pCountPlacement, PlacementModifier pHeightRange) { return List.of(pCountPlacement, InSquarePlacement.spread(), pHeightRange, BiomeFilter.biome()); } public static List<PlacementModifier> commonOrePlacement(int pCount, PlacementModifier pHeightRange) { return orePlacement(CountPlacement.of(pCount), pHeightRange); } public static List<PlacementModifier> rareOrePlacement(int pChance, PlacementModifier pHeightRange) { return orePlacement(RarityFilter.onAverageOnceEvery(pChance), pHeightRange); } }   The tutorial's code -  public class ModOrePlacement { public static List<PlacementModifier> orePlacement(PlacementModifier pCountPlacement, PlacementModifier pHeightRange) { return List.of(pCountPlacement, InSquarePlacement.spread(), pHeightRange, BiomeFilter.biome()); } public static List<PlacementModifier> commonOrePlacement(int pCount, PlacementModifier pHeightRange) { return orePlacement(CountPlacement.of(pCount), pHeightRange); } public static List<PlacementModifier> rareOrePlacement(int pChance, PlacementModifier pHeightRange) { return orePlacement(RarityFilter.onAverageOnceEvery(pChance), pHeightRange); } }  
    • I'm creating a modpack, and i just discovered that if i try to connect to a server it gives the error: Internal Exception: io.netty.handler.codec.DecoderException: java.lang.negativearraysizeexception -1   The client log:  
  • Topics

×
×
  • Create New...

Important Information

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