Jump to content

1.7.10 - Help starting to mod for servers


mainsheep

Recommended Posts

Hello,

 

First of, let me introduce myself. I'm new to modding, but extremely motivated to walk the long mile and learn. I'm a 35 year old guy from Norway, who has been playing Minecraft on and off since alpha. I've also hosted a few FTB servers, but now I want to develop :)

 

Ive been trying to find tutorials on how to mod server side mods (like home, teleportation, protection, etc), but so far I've been unable to find anything that will get me on the right track. I'm not interested in learning how to create in-game blocks, items and such.

 

Any help to get me on the track to become a great java programmer and forge modder is much appreciated.

 

I've done tutorials from thenewboston + some others, and done the basic server command tutorial on forge, and I'm really pumped to learn more.

 

Thanks alot in advance :)

Link to comment
Share on other sites

It's good that you have put in effort to learn, and the desire is there. However, for server-side modding, Bukkit plugin development is what you want to look into, not Forge modding. Look up kennethbgoodin Bukkit tutorials on YouTube. They're great for beginners.

Maker of the Craft++ mod.

Link to comment
Share on other sites

While I can't give you any suggestions for tutorials(as I've never seen one), I thought I would warn you about some potential problems you may run into while trying to do utility development for modded servers.

 

Probably the biggest problem, is that many events you may want to use for things like protection simply don't exist in forge(such as endermen block interaction). Any missing events would need to created for yourself using ASM, which is a bytecode manipulation framework, and ASM is a little bit harder than just basic modding. The alternative to using ASM to create your own events, would be to do as Anon10W1z suggested, and use Cauldron for the server, allowing Bukkit plugins. While Bukkit has a much larger range of events, Cauldron doesn't always play nice with all mods, and Bukkit events have a tendency to not be triggered by modded items(GriefPrevention Bukkit plugin vs Thaumcraft wand of excavation).

 

Basically, Forge has infinite possibilities, but it'll take a lot of work to realize them. While Bukkit is easier, but will probably not interact with mods quite how you would like.

 

If you have any questions about specific things (Forge code/ASM/Bukkit theory) feel free to send me a message and I'll do my best to help you out, as I've gone into a lot of these things before.

Link to comment
Share on other sites

Hello and thank you guys for good answers.

 

The reason I wanted to do forge modding instead of bukkit is because of the DMCA takedown. I am guessing that bukkit will be replaced with something better in the future, and I didn't want to be reliant on cauldron.

 

Also, like you are saying, bukkit doesn't register item handling very well, and I wanted to do a protection plugin or mod.

 

Do any of you know if bukkit plugins will exist in the very near future without cauldron? I would not want to create something that will we out of date in a month.

 

Thanks again for the answers ☺

Link to comment
Share on other sites

Isn't spigot also affected by the takedown?

Yes.

 

Really? I got a 1.8 version not long ago and it's easy to set up a dev environment for it. The only thing I think is affected is that they can't put up download links, which is why you need to build the jar yourself. Unless something has changed in the past month or so (I don't keep up to date on it) then it should still work.

Link to comment
Share on other sites

Above is true.

 

Since official github source has been taken down along with downloads, Spigot team (what's left of it), is making updates by patcher distribution that doesn't contain "taken-down" code (the one that was affected by DMCA) therefore it's legal.

 

I wouldn't really count on ANYTHING bukkit-based. That era has ended the day, some selfish persona done DMCA.

 

Next era would be Sponge project (for now doesn't have actual server implementation, just in-dev API that works with Forge).

https://spongepowered.org/

If anything - invest you time in this. It comes with very good (still wip tho) docs, code and developers, and seems like it will lead in near future. Note that you can still code server mods with Forge.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

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

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

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