Jump to content

Recommended Posts

Posted

Hey Guys. I'm not that good in making my point clear, especually in English, so don't blame me for my mistakes ^^

I'm sure a lot of people won't read long texts, so to draw your attention TL;DR: I'm looking for someone that makes my wishes of a mod based on my idea become reality, and I'm willing to pay (20-30 Euro via PayPal) for your work.

 

For these, who want to konw more now:

I already have this idea for a mod for months now, and a friend was even modding for me, but he got bored and stopped working very soon. Now I'm looking for somebody else, who could continue his project, or start a new one from scratch.

 

I'll briefly tell you something about my concept (write a PM for detailed information)

I always got bored on my Server after playing for some months. I built what i wanted to, there were too less players for pvp and my chests were full of diamonds, so i didn't have to mine anymore.

I thought it would be interesing to have a developement. I didn't want people to dig down a hole and find their first diamonds just half an hour after they joined, but I neither wanted to forbid anybody to mine a diamond, if he gets one.

So i developed a skill-system, which should solve this problem. Basically everybody is starting at level 0 and is able to scale his skill up to level 100. At level 0 you are less efficient than in vanilla Minecraft.

For each new level you get promoted to you archive one skillpoint. Each skill has 3-5 uniqe perks, where you can spend your skillpoint. If you archieve a new level in the "mining" skill for example you can spend your skillpoint in the perks Efficiency (increasing your drop chances), Speed (increasing your speed) or Durability (increasing the hitpoints a pickaxe you use has before breaking).

The blacksmith in comparison to the miner is't getting perks like speed, but if he has spent a certain ammount of skillpoints in one of his perks (armour, weapons, tools) he unlocks the recipe for more difficult tools (wood -> stone -> iron -> [....] -> diamond).

To have a difference in the "lategame" a player is able to master one job, allowing him to expand the level way beyond level 100 (nearly vanilla if equally skilled).

I want the different "Jobs" to interact with each other. A blacksmith for instance has to buy ressources from a miner to craft his weapons, while the miner has to deliver the blacksmith his ores to get good, efficient pickaxes for his work.

In addition to that my friend and I planned a lot of new items and blocks like more weapons, a new anvil and a hammer for the blacksmith, a millstone for the farmer, new ores and much more.

I think this should be enough to give everyone an idea what they would work on. If you want to complete or need further information this mod for me send me a pm.

Posted

It's a cool idea, but if all it does is handicap new player you're not going to have a very popular mod. You need to giv players a reason to get all this skill except for "now you can work at the normal speed youwoud have managed without this mod."

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.

  • 4 months later...
Posted

well, my topic is quite old already, and i didn't have much time to replay as i was busy finishing my final exams.

 

However i want to give it a last try.

I don't want to make people disappointed by annoyingly long mining times and levels just to be on vanilla-level again when reaching max level, but skills in vanilla minecraft are quite op in multiplayer. In singleplayer you can easily do everything by your own. Mining, farming, woodchopping, building alone isn't much of a problem and after a vew days of collecting materials you basically have everything you need. The only purpose other players have in minecraft is to collect materials even faster, building bigger buildings together or showing who's the damn boss in the server by building a bigger castle than your friends.

 

With my idea of this mod i want to archive 2 things i miss in vanilla minecraft. The first issue i'm trying to solve is the way how players have to interact with each other, but without these annyoing restrictions forcing you in a single job or role and prohibiting you to do anything else like some plugins ore mods do(Screw you "You can't hold an axe, because you are a miner"). Each player should be able to specialize a single skill to get quite a lot of advantages there, while he is still able to perform any action of any other skill, but muuuch slower than someone, who is specialized (so a level 300 woodchopper can chop down a while forest, while you, the mining-pro, who still has his wood chopping-level at ... lets say 12, are still strugeling in chopping down a few of this annoying large oak trees). So, if you want to make your caslte even more awesome by adding wooden floors you will have to trade your stones and ores with a woodchopper. The woodchopper now has a bunch ores needed for advanced tools, but his blacksmithing-level is quite low, so, if he doesn't want to use these stone-axe anymore, which he is barely able to craft himself, he has to go to a blacksmith, sell the ore and buy a diamond-axe from this guy.

 

the second issue i hate is closely related to the first one, however. Vanilla minecraft gets boring after a certain ammount of time. There is notthing you can do, if you finished your building-project you were dreaming of, if you are tired of fighting your opponents and if you have a couple of chests filled with diamonds. This mod won't be able to solve this problem completely, but I'm trying to implement some MMO-features to expand the "lategame". You are no longer a one-man-mining-machine , which is able to dig into the world and form it to your wishes. You need time to learn to use your tools and you have to found factions, make friends and trade. You can - and this is very important to me - still do everything on your own, but you need time to master your skills, while your reward for this strugge are dozens of new items. (imagine you start Skyrim or any MMO at maxlevel, wouldn't that be boring soon, too?)

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.