Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Find out if a player has loaded the mod


Recommended Posts

I'm currently working on a mod for a server and I'd like to make sure that people who connect without the mod is disconnected, but I have no idea how I should do it, the mod will be installed on the server side and will have to be installed on the client side, but how do I know if it is well installed on the client side? 

Edited by SmokingDude
Link to post
Share on other sites
4 hours ago, ChampionAsh5357 said:

Any mod present on the server (assuming it doesn't have the ignore extension point set) must be present on the client to allow both to connect.

This is not true. This is only used in the server list display to show the server as compatible or incompatible (which is just a guess, it is not a surefire way to know if the server is compatible).

 

When connecting to a server, mods are not checked for compatibility. What is checked, is network channels and registry entries. If you want to check compatibility, add a network channel.

Link to post
Share on other sites

Create the channel on the server side.

When the client connects, if they don't create that same channel, they cannot connect.

You don't have to do anything besides create the channel.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to post
Share on other sites

private static final String PROTOCOL_VERSION = "1.0";

public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel(

    new ResourceLocation("cosmod", "main"),

    () -> PROTOCOL_VERSION,

    PROTOCOL_VERSION::equals,

    PROTOCOL_VERSION::equals

);

I actually have this in a class i don't have to specify i register the simpleimpl anywhere ? 

Link to post
Share on other sites

Calling newSimpleChannel is the registration. Hence doing it in some random static initializer is a bad idea. Do it at a known point in time, FMLCommonSetupEvent would be appropriate.

  • Thanks 1
Link to post
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.

Guest
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.



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Hello There! The finale is FINALLY here of this really wholesome video series! In this one we switch some things up and we surprise my one friend with a MINECRAFT ACCOUNT! Then we get back to the usual stuff where we surprise the ones who have Java Minecraft with their statues and everything! Sadly this little series was cut short because of the server shutting down but it was fun nonetheless! If you are looking for a wholesome/good vibe video series this is the one for you! I hope you all enjoy this video and if you did don't forget to like and sub for more!  
    • My forge 1.12.2 shows up in launcher and the tap shows up when I launches at the bottom of my screen. The game itself doesn't pop up on my screen. When launching forge again, it will just say that a game is already there. Can someone please help me solve this problem? I have already tried searching for multiple instances of minecraft using task manager, finding nothing. 
    • After looking through a ton of functions, I found the issue was that my entity was extending MonsterEntity, which extends MobEntity, which creates a GroundPathNavigator, which has a rules for canUpdatePath that include "this.mob.isOnGround()". My entity is a flying entity. Whoops. Solution was to simply override the createNavigation function, where I simply "return new FlyingPathNavigator(this, world);". Everything works fine now.
    • do you already have a custom recipe implemented? if not, you'll a class that'l hold the recipe and check for matches, the recipe inventory and the recipe serializer   then it's up to you to write the logic in your container. you can use of the world's recipe manager to see if a recipe inventory matches any recipe
    • I'm trying to write an AI Goal for an entity to move towards its target on each tick (with quite a few restrictions on when, which is why I need a new goal). It seemed to be working when I also added a WaterAvoidingRandomWalkingGoal, but I don't want the entity to move around randomly anymore, so I removed that. My code overrides the canUse function to determine whether or not it should start moving towards the target, and that ends with creating a path to the target, which always returns NULL, so nothing happens. Here's the relevant functions: public FloatingEyesGoal(EntityFloatingEyes e, double speed) { this.entity = e; this.random = e.getRandom(); this.speed = speed; this.setFlags(EnumSet.of(Flag.LOOK, Flag.MOVE, Flag.TARGET)); this.entity.getNavigation().setCanFloat(true); } @Override public boolean canUse() { LivingEntity target = this.entity.getTarget(); if (target == null || !target.isAlive() || !isFacingTargetBack()) return false; setTargetPos(target); this.path = this.entity.getNavigation().createPath(target, 0); // Logging this.path == null prints "true", and this.entity.getNavigation() == null prints "false" return this.path != null || isInRange(target); } @Override public boolean canContinueToUse() { LivingEntity target = this.entity.getTarget(); if (target == null || !target.isAlive() || !isFacingTargetBack()) return false; return !this.entity.getNavigation().isDone(); } @Override public void start() { this.entity.getNavigation().moveTo(this.path, this.speed); this.entity.setAggressive(true); this.ticksToMove = 0; } @Override public void stop() { LivingEntity target = this.entity.getTarget(); if (!EntityPredicates.NO_CREATIVE_OR_SPECTATOR.test(target)) { this.entity.setTarget(null); } this.entity.setAggressive(false); this.entity.getNavigation().stop(); this.targetPosX = 0.0D; this.targetPosY = 0.0D; this.targetPosZ = 0.0D; } @Override public void tick() { // Look at target LivingEntity target = this.entity.getTarget(); this.entity.getLookControl().setLookAt(target, 32.0F, 32.0F); setTargetPos(target); final double distance = this.entity.distanceToSqr(this.targetPosX, this.targetPosY, this.targetPosZ); this.ticksToMove--; LilSpooks.LOGGER.info(this.ticksToMove); if (this.ticksToMove <= 0 && this.entity.getSensing().canSee(target) && target.distanceToSqr(this.targetPosX, this.targetPosY, this.targetPosZ) >= 1.0D) { this.ticksToMove = 5 + this.random.nextInt(8); // Add extra time if eyes can't move to hopefully wait enough to try again (1 second). this.path = this.entity.getNavigation().createPath(new BlockPos(this.targetPosX, this.targetPosY, this.targetPosZ), 0); // Logging this.path == null returns "true" here as well if (!this.entity.getNavigation().moveTo(this.path, this.speed)) { this.ticksToMove += 20; } } this.attackTick = Math.max(this.attackTick - 1, 0); this.attemptAttack(target, distance); } protected void setTargetPos(LivingEntity target) { this.targetPosX = target.getX(); this.targetPosY = target.getBoundingBox().minY; this.targetPosZ = target.getZ(); } I have tried multiple ways of invoking createPath, I tried setting the moveControl of the entity with the goal to a new FlyingMovementController, and I've looked at how the createPath function works (though I can't figure out how to do a live debugging session, so I couldn't set a breakpoint at that code which would tell me exactly what causes it to be null). I tried my best to work through this for a few hours but I can't seem to figure it out. Any help is appreciated.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.