Jump to content

[1.12.2] How would I send variable over network (using Simpleimpl) from command->server->remote client?


Nick82285

Recommended Posts

The synopsis is that I have a command that sends out data to the server in the form of a CharSequence (I used system.out to verify that this variable is only sent/initialized if I send it to the server first by the way of SimpleNetworkWrapper#sendToServer). I then need to be able to relay that variable to a remote client that's separate from the player who executed the command. Is there a simple way to implement this effectively?

 

Here's my netcode, please don't judge

https://pastebin.com/CrpEvtkY

 

I bet you that you can't guess what my code actually does (Joke)

 

 

Edit 1: Updated code based on Animefan8888/diesieben07. If you want to test it, I believe everything you need is in the paste (If not P.M me). My goal is to create a command that's executed by a command block/player to tell a connected client to create an overlay on the client specified in the command.
https://pastebin.com/irwqLW5q

 

Edit 2: I used the VLCJ (3.12.1), slf4j-api (1.7.25) and the installation directory for VLC media player in C:\Program Files\VideoLAN\VLC

Edited by Nick82285
put all classes into pastebin, fixed code
Link to comment
Share on other sites

55 minutes ago, Nick82285 said:

to a remote client that's separate from the player

I'm sorry what does this mean? Like it's not a player connected to the server?

 

56 minutes ago, Nick82285 said:

The synopsis is that I have a command that sends out data to the server in the form of a CharSequence

I have a problem with your question in particular. Commands are executed on the server. So the sequence goes more like this

Client sends chat message with command->Server receives message and executes command... here is where I'm confused. Now you need to send the string back to the client? Send the packet to the player who issued the command.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

16 minutes ago, diesieben07 said:

this should be done in preInit or init, not in a static initializer

Fair (I fixed it), Just following the example in the ForgeDocs for 1.12

21 minutes ago, diesieben07 said:

Your IDE should be warning you about this.

Fair as well (fixed as well), but doesn't :/ and I don't know why. It's Eclipse 2019 06. That and I'm not the best programmer.

 

31 minutes ago, diesieben07 said:

Your code is a giant security problem. You are allowing the server to send arbitrary paths to the client

I don't quite see that. This will only be used by command blocks and the commands won't be changed unless there is a rogue admin (potentially preventing a redirect to access system files). The client then checks if the local directory/local video file exists before executing on it.

 

Should I hard code in these directories or sync a json file (with a third party program, however this adds another security concern) to update these directories? It's kind of difficult if I need a fast working environment to do either.

 

Is there any way to get it to work?

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

    • When I try to install the forge installer it comes with several files instead of just one in executable java format
    • 0 I have recently started with Java and the implementation of Minecraft mods. I am currently working on a mod for 1.20.4-49.0.31 I'm trying to get the content of each slot in the console to be displayed when the inventory is opened, which works. In addition, I wanted to do the same with chests (in this case containers). However, I get in the output that there is Air at every slot of the chest, even if the chest is filled. Does anyone have experience with similar problems and could help me? package net.kaan.sortingmod; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.gui.screens.inventory.InventoryScreen; import net.minecraft.client.gui.screens.inventory.ContainerScreen; import net.minecraft.client.gui.screens.inventory.FurnaceScreen; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ScreenEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @Mod(SortingMod.MODID) public class SortingMod { public static final String MODID = "sortingmod"; public SortingMod() { // Register the client setup method FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff); // Register this class for Forge events MinecraftForge.EVENT_BUS.register(this); } private void doClientStuff(final FMLClientSetupEvent event) { // Any client-side setup can be done here } @SubscribeEvent public void onScreenOpen(ScreenEvent.Opening event) { Screen screen = event.getScreen(); if (screen instanceof InventoryScreen) { System.out.println("Player opened their inventory."); assert Minecraft.getInstance().player != null; printInventoryItems(Minecraft.getInstance().player); } else if (screen instanceof ContainerScreen) { System.out.println("Player opened a chest."); printContainerItems((ContainerScreen) screen); } } private void printInventoryItems(Player player) { AbstractContainerMenu menu = player.inventoryMenu; for (int i = 0; i < menu.slots.size(); i++) { ItemStack stack = menu.getSlot(i).getItem(); if (!stack.isEmpty()) { System.out.println("Slot " + i + ": " + stack.getCount() + "x " + stack.getHoverName().getString()); } } } private void printContainerItems(ContainerScreen screen) { AbstractContainerMenu menu = screen.getMenu(); System.out.println(menu.slots.size()); for (int i = 0; i < menu.slots.size(); i++) { ItemStack stack = menu.getSlot(i).getItem(); System.out.println("Slot " + i + ": " + stack.getCount() + "x " + stack.getHoverName().getString()); } } }  
    • I am wanting to add an axe to my mod though I do not want it to have a recipe, the reason for this being that I want you to only be able to find it in a structure. I have looked on both here and elsewhere on the internet and have found nothing... How would this be done?    (Video for reference.)    
    • file log:file:///C:/Users/natal/AppData/Roaming/.minecraft/logs/latest.log   Aternos log: https://mclo.gs/kzPaflO
  • Topics

×
×
  • Create New...

Important Information

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