Jump to content

[1.12] How to get stuff from server when doing the client GUI


Samaritans

Recommended Posts

Hey all, I have a container for a tile entity that would render different things depends on a player UUID appended to the item that is required to open the gui. In the container, it calls a method to find player by UUID and determine what the render based on the entityPlayer.

 

However, when the getClientGuiElement is called, findPlayer returns null since its called on the client side, causing my GUI to render nothing. Is there a way to remedy this?

 

Code here:

public ContainerTarotTable(UUID uuid) {
   this.player = Util.findPlayer(uuid);
   if (player != null) {
      // do stuff with player rng and other stuff in a custom registry.
   }
}

Here's how EntityPlayer is obtained from uuid:

public static EntityPlayer findPlayer(UUID uuid) {
   for (WorldServer ws : DimensionManager.getWorlds()) {
      EntityPlayer player = ws.getPlayerEntityByUUID(uuid);
      if (player != null) return player;
   }
   return null;
}

 

Edit: I know that it sounds like something to handle using Packets, however I'm confused by how to implement such a thing. i can send a packet to server and use server to get the entityPlayer, but how would i pass it back to the client when creating this new ContainerTarotTable.

Edited by Samaritans
Link to comment
Share on other sites

29 minutes ago, diesieben07 said:

You can send a packet and then check if Minecraft#player.openContainer is your container. If so, put whatever data you received into that container.

So that'd be two packets right? One from client to server sending UUID over. and another from from server to client sending the EntityPlayer and on receiving the packet at client I check something like (sorry not at pc rn, psudo code here:)

if(Minecraft.getMinecraft().player.openContainer instance of ContainerTarotTable) {
	
	Minecraft.getMinecraft.player.openContainer.player = message.player;

}

but then what would I do? The container is already constructed my entire guiHandler here:

public class GuiHandler implements IGuiHandler {

	@Override
	public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
		TileEntity tile = world.getTileEntity(new BlockPos(x, y, z));
		if (tile instanceof TileEntityWitchesOven) return new ContainerWitchesOven(player.inventory, (TileEntityWitchesOven) tile);
		if (tile instanceof TileEntityDistillery) return new ContainerDistillery(player.inventory, (TileEntityDistillery) tile);
		if (tile instanceof TileEntitySpinningWheel) return new ContainerSpinningWheel(player.inventory, (TileEntitySpinningWheel) tile);
		if (tile instanceof TileEntityTarotTable) {
			ItemStack stack = player.getHeldItemMainhand();
			if (stack.getItem() instanceof ItemTarotCards && stack.hasTagCompound() && stack.getTagCompound().hasKey("readId")) {
				return new ContainerTarotTable(UUID.fromString(stack.getTagCompound().getString("readId")));
			}
		}
		if (tile instanceof TileEntityJuniperChest) return new ContainerJuniperChest(player.inventory, (TileEntityJuniperChest) tile);
		return null;
	}
	
	@Override
	public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
		TileEntity tile = world.getTileEntity(new BlockPos(x, y, z));
		if (tile instanceof TileEntityWitchesOven) return new GuiWitchesOven((ContainerWitchesOven) getServerGuiElement(ModGui.OVEN.ordinal(), player, world, x, y, z), player.inventory);
		if (tile instanceof TileEntityDistillery) return new GuiDistillery((ContainerDistillery) getServerGuiElement(ModGui.DISTILLERY.ordinal(), player, world, x, y, z));
		if (tile instanceof TileEntitySpinningWheel) return new GuiSpinningWheel((ContainerSpinningWheel) getServerGuiElement(ModGui.SPINNING_WHEEL.ordinal(), player, world, x, y, z));
		if (tile instanceof TileEntityTarotTable) return new GuiTarotTable((ContainerTarotTable) getServerGuiElement(ModGui.TAROT_TABLE.ordinal(), player, world, x, y, z));
		if (tile instanceof TileEntityJuniperChest) return new GuiJuniperChest((ContainerJuniperChest) getServerGuiElement(ModGui.JUNIPER_CHEST.ordinal(), player, world, x, y, z), player.inventory);
		return null;
	}
	
	public enum ModGui {
		OVEN, DISTILLERY, SPINNING_WHEEL, TAROT_TABLE, JUNIPER_CHEST
	}
}

 

Or do i just simple make a new Constructor for the Container and pass in EntityPlayer. And on client reciveiving message just set player.openGui = new ContainerTarotTable(entityPlayer); ?

 

Edited by Samaritans
Link to comment
Share on other sites

I'm still really lost tbh, can you help me more here @diesieben07, would really appreciate it? Here's my messages: 

 

Server -> Client:

public class TarotPlayerMessage implements IMessage {
   private EntityPlayer player;

   public TarotPlayerMessage() { }

   public TarotPlayerMessage(EntityPlayer player) {
      this.player = player;
   }

   @Override
   public void fromBytes(ByteBuf byteBuf) {
      this.player.deserializeNBT(ByteBufUtils.readTag(byteBuf));
   }

   @Override
   public void toBytes(ByteBuf byteBuf) {
      ByteBufUtils.writeTag(byteBuf, player.serializeNBT());
   }

   public static class Handler implements IMessageHandler<TarotPlayerMessage, IMessage> {
      @Override
      public IMessage onMessage(TarotPlayerMessage message, MessageContext ctx) {
         if (ctx.side.isClient()) {
            Minecraft.getMinecraft().addScheduledTask(() -> Minecraft.getMinecraft().player.openContainer = new ContainerTarotTable(message.player));
         }
         return null;
      }
   }
}

 

Client -> Server:

public class TarotMessage implements IMessage {
   private String uuid;

   public TarotMessage() { }

   public TarotMessage(String uuid) {
      this.uuid = uuid;
   }

   @Override
   public void fromBytes(ByteBuf byteBuf) {
      uuid = ByteBufUtils.readUTF8String(byteBuf);
   }

   @Override
   public void toBytes(ByteBuf byteBuf) {
      ByteBufUtils.writeUTF8String(byteBuf, uuid);
   }

   public static class Handler implements IMessageHandler<TarotMessage, IMessage> {
      @Override
      public IMessage onMessage(TarotMessage message, MessageContext ctx) {
         if (ctx.side.isServer()) {
            EntityPlayer player = Util.findPlayer(message.uuid);
            if (player != null) return new TarotPlayerMessage(player);
         }
         return null;
      }
   }
}

 

Don't think it works, also its got a null string not allowed error. 

Link to comment
Share on other sites

36 minutes ago, Samaritans said:

also its got a null string not allowed error. 

Then you are passing it a null string via the constructor.

 

But the real problem here is that you dont know what you are doing. What information are you trying to get on the client from the server?

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

5 minutes ago, Animefan8888 said:

Then you are passing it a null string via the constructor.

 

But the real problem here is that you dont know what you are doing. What information are you trying to get on the client from the server?

@Animefan8888 You're right, I'm not sure what I'm doing. I'm trying to get the EntityPlayer from Server so when the client calls opengui, it would make a new container using the EntityPlayer that was passed in.

Link to comment
Share on other sites

9 minutes ago, Samaritans said:

I'm trying to get the EntityPlayer from Server so when the client calls opengui, it would make a new container using the EntityPlayer that was passed in.

Is the player from the server the one that opened the container/gui?

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

51 minutes ago, Animefan8888 said:

Is the player from the server the one that opened the container/gui?

@Animefan8888 No, its an entityplayer obtained by using findPlayerbyUUID function and the UUID comes from an item in the player's hand when opening the GUI. Thus if i don't do packets, the findPlayerbyUUID returns null on client side and i get an empty GUI.

Link to comment
Share on other sites

12 minutes ago, Samaritans said:

Thus if i don't do packets, the findPlayerbyUUID returns null on client side and i get an empty GUI.

What do you need about the player? I assure that you cannot always obtain the EntityPlayer of that player on the client. However you can have specific values. 

 

Also you only need one packet server to client.

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

@Animefan8888 well here's thefull constructor for the container:

public ContainerTarotTable(EntityPlayer player) {
   this.player = player;
   if (player != null) {
      List<Tarot> valid = GameRegistry.findRegistry(Tarot.class).getValuesCollection().stream().filter(f -> f.isCounted(this.player)).collect(Collectors.toList());
      if (!valid.isEmpty()) {
         while (!valid.isEmpty() && toRead.size() < 4) {
            int i = player.getRNG().nextInt(valid.size());
            toRead.add(valid.get(i));
            valid.remove(i);
         }
      }
   }
}

 

as you can see, i need the playerRNG and also using the player to filter stuff from my registry.

Link to comment
Share on other sites

37 minutes ago, Samaritans said:

 as you can see, i need the playerRNG and also using the player to filter stuff from my registry.

Well you dont need the rng on the client...you need the results of the rng. So you need two constructors one that takes a player(server side) and an empty one to use for when you create the gui. Then a packet needs to get sent with the rng information you've got on the server to the client.

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

1 hour ago, Animefan8888 said:

Well you dont need the rng on the client...you need the results of the rng. So you need two constructors one that takes a player(server side) and an empty one to use for when you create the gui. Then a packet needs to get sent with the rng information you've got on the server to the client.

@Animefan8888 Honestly still kinda confused but lemme try to word this:

1. Keep the constructor that uses entityplayer like i posted above.

2. Another Container constructor? (still not sure for what?)

3. Send packet from server to client with the rng info, but 

    #1. what do i do with my registry filter part that also needs my player?

    #2. sure i can process the stuff on the server, but how when would i even send that packet and where do i let the server do the work? so confused.

    #3. Where would i send that packet, like what would be in the handler?

 

I really tried reading the forge docs and still don't quite understand how to utilize the packets to open gui. All i can see by debug mode and breaks are:

1. When i right click to open the gui, the server calls getServerGuiElement and successfully gets the gui.

2. but when the client calls getClientGuiElement and i return a new GuiTarotTable(new ContainerTarotTable(...)) it renders nothing because findPlayer returns null.

 

I thought I need to send a packet at getClientGuiElement from client to server with the UUID and get entityPlayer inside the Message Handler. And then, another packet need to be sent back with the entityPlayer or at least the RNG result and the filtered List<Tarot>, but what would i do with the message is what I'm mostly confused with.

 

Sorry for the word wall, I've had this bug for days and kinda frustrating that I have no clue how to fix it :(

 

really appreciate your help! 

 

Edited by Samaritans
Link to comment
Share on other sites

13 minutes ago, Samaritans said:

Another Container constructor? (still not sure for what?)

For the client.

 

16 minutes ago, Samaritans said:

1. what do i do with my registry filter part that also needs my player?

The client shouldn't care.

 

16 minutes ago, Samaritans said:

when would i even send that packet

Once you get it.

 

16 minutes ago, Samaritans said:

and where do i let the server do the work?

I'm not sure what you mean by this. When do you get the information? You can do it in the constructor that takes a player.

18 minutes ago, Samaritans said:

Where would i send that packet

To the client.

 

19 minutes ago, Samaritans said:

like what would be in the handler?

You'd schedule it via Minecraft#scheduleTask and then you would get the openContainer field from the client player Minecraft#player. If the openContainer is an instanceof your Container. Then take the data out of the message and put it in the openContainer.

 

25 minutes ago, Samaritans said:

I thought I need to send a packet at getClientGuiElement from client to server with the UUID and get entityPlayer inside the Message Handler. And then, another packet need to be sent back with the entityPlayer or at least the RNG result and the filtered List<Tarot>, but what would i do with the message is what I'm mostly confused with.

This would just be a waste of packets. The server knows that a gui is opening and the uuid of the player in question and therefore is fully capable of sending the packet it needs.

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

@Animefan8888

 

Why shouldn't the client care, the List<Tarot> toRead is the list of stuff that's gonna be rendered on the Gui. Or do you mean I shall find entityPlayer and also the List<Tarot> in handler and then just send the toRead List back to the client? that kinda make sense.

 

But where in code would I call my network.sentTo(new ThisMessage(...)) to send this packet though? The constructor doesn't make sense because it's also called on the client side, do i send the packet to client when the getServerGuiElement in my GuiHandler?

 

Link to comment
Share on other sites

1 minute ago, Samaritans said:

The constructor doesn't make sense because it's also called on the client side

Thus the two constructors, though you could send it in getServerGuiElement.

 

1 minute ago, Samaritans said:

Or do you mean I shall find entityPlayer and also the List<Tarot> in handler and then just send the toRead List back to the client? that kinda make sense.

You can find them there or in the Container's constructor that takes a player. Then send the packet.

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

@Animefan8888

I think it's really important that I can somehow pass the EntityPlayer in my packet because its not only used in the container to get the List<Tarot> but also when rendering GUI to determine how to render my tarots. Here's guiRendering stuff:

Spoiler

@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
   mc.getTextureManager().bindTexture(TEX);
   int x = (width - xSize) / 2;
   int y = (height - ySize) / 2;
   drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
   for (int i = 0; i < container.toRead.size(); i++) {
      GlStateManager.pushMatrix();
      GlStateManager.color(1, 1, 1);
      Tarot tarot = container.toRead.get(i);
      mc.getTextureManager().bindTexture(tarot.texture);
      int cx = x + (i % 2 == 0 ? 48 : 126);
      int cy = y + (i / 2 == 0 ? 44 : 122);
      GlStateManager.pushMatrix();
      if (tarot.isReversed(container.player)) {
         GlStateManager.rotate(180, 0, 0, 1);
         drawCard(-cx, -cy, 48, 64);
      }
      else drawCard(cx, cy, 48, 64);
      GlStateManager.popMatrix();
      mc.getTextureManager().bindTexture(tarot.getNumber(container.player) < 0 ? TEX_FRAME : TEX_FRAME_NUMBER);
      drawCard(cx, cy, 50, 66);
      GlStateManager.popMatrix();
      if (tarot.getNumber(container.player) > -1) {
         int num = tarot.getNumber(container.player);
         String number = num > 99 ? "99+" : "" + num;
         drawCenteredString(mc.fontRenderer, number, cx, cy + 24, 0x7f7f7f);
      }
   }
}

As you can see the player is still used to determine what number to render the cards and if they should be rendered in reverse. (the tarot.getNumber or isReversed function checks a capability attached to the player by the mod). 

 

When i tried to send the packet with an Entityplayer by Serializing and then Deserializing, it gives me null string exception.

 

Then I just tried to send the List<tarot> and forget about the other rendering stuff for now, but this gives me a NullPointer Error Executing Task ``at net.minecraft.network.play.server.SPacketEntityHeadLook.getEntity(SPacketEntityHeadLook.java:56) ~[SPacketEntityHeadLook.class:?]``

 

Here's what i got in the packet:

Spoiler

public class TarotMessage implements IMessage {
   private List<Tarot> toRead = new ArrayList<>();

   public TarotMessage() { }

   public TarotMessage(String uuid) {
      EntityPlayer player = Util.findPlayer(uuid);
      List<Tarot> valid = GameRegistry.findRegistry(Tarot.class).getValuesCollection().stream().filter(f -> f.isCounted(player)).collect(Collectors.toList());
      if (!valid.isEmpty()) {
         while (!valid.isEmpty() && toRead.size() < 4) {
            int i = player.getRNG().nextInt(valid.size());
            toRead.add(valid.get(i));
            valid.remove(i);
         }
      }
   }

   @Override
   public void fromBytes(ByteBuf byteBuf) {
      this.toRead = ByteBufUtils.readRegistryEntries(byteBuf, GameRegistry.findRegistry(Tarot.class));
   }

   @Override
   public void toBytes(ByteBuf byteBuf) {
      ByteBufUtils.writeRegistryEntries(byteBuf, toRead);
   }

   public static class Handler implements IMessageHandler<TarotMessage, IMessage> {
      @Override
      public IMessage onMessage(TarotMessage message, MessageContext ctx) {
         if (ctx.side.isClient()) {
            Minecraft.getMinecraft().addScheduledTask(() -> {
               if(Minecraft.getMinecraft().player.openContainer instanceof ContainerTarotTable) {
                  ((ContainerTarotTable) Minecraft.getMinecraft().player.openContainer).toRead = message.toRead;
               }
            });
         }
         return null;
      }
   }
}

 The packet is sent in the GuiHandler under getServerGuiElement like this:

if(!world.isRemote) Bewitchment.network.sendTo(new TarotMessage(stack.getTagCompound().getString("readId")), (EntityPlayerMP) player);

 

Have I just done something fundamentally wrong and not achievable through packet and modify how my entire tarot system and GUI works?

 

Link to comment
Share on other sites

5 hours ago, Samaritans said:

Have I just done something fundamentally wrong and not achievable through packet and modify how my entire tarot system and GUI works?

No, because you can send the Capability data you need to render in the packet. As diesieben and I have both said it is impossible to always have the player on the client side. Therefore you can only send the data.

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

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

    • Hello, I want to add more memory to the RunClient gradle task. I added VM options into the configurations and put in "-Xms256m -Xmx2048m" but it doesn't work.
    • Hello, I'm trying to modify the effects of native enchantments for bows and arrows in Minecraft. After using a decompilation tool, I found that the specific implementations of native bow and arrow enchantments (including `ArrowDamageEnchantment`, `ArrowKnockbackEnchantment`, `ArrowFireEnchantment`, `ArrowInfiniteEnchantment`, `ArrowPiercingEnchantment`) do not contain any information about the enchantment effects (such as the `getDamageProtection` function for `ProtectionEnchantment`, `getDamageBonus` function for `DamageEnchantment`, etc.). Upon searching for the base class of arrows, `AbstractArrow`, I found a function named setEnchantmentEffectsFromEntity`, which seems to be used to retrieve the enchantment levels of the tool held by a `LivingEntity` and calculate the specific values of the enchantment effects. However, after testing with the following code, I found that this function is not being called:   @Mixin(AbstractArrow.class) public class ModifyArrowEnchantmentEffects {     private static final Logger LOGGER = LogUtils.getLogger();     @Inject(         method = "setEnchantmentEffectsFromEntity",         at = @At("HEAD")     )     private void logArrowEnchantmentEffectsFromEntity(CallbackInfo ci) {         LOGGER.info("Arrow enchantment effects from entity");     } }   Upon further investigation, I found that within the onHitEntity method, there are several lines of code:               if (!this.level().isClientSide &amp;&amp; entity1 instanceof LivingEntity) {                EnchantmentHelper.doPostHurtEffects(livingentity, entity1);                EnchantmentHelper.doPostDamageEffects((LivingEntity)entity1, livingentity);             }   These lines of code actually call the doPostHurt and doPostAttack methods of each enchantment in the enchantment list. However, this leads back to the issue because native bow and arrow enchantments do not implement these functions. Although their base class defines the functions, they are empty. At this point, I'm completely stumped and seeking assistance. Thank you.
    • I have been trying to make a server with forge but I keep running into an issue. I have jdk 22 installed as well as Java 8. here is the debug file  
    • it crashed again     What the console says : [00:02:03] [Server thread/INFO] [Easy NPC/]: [EntityManager] Server started! [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {iceandfire:fire_dragon_roost=true, iceandfire:fire_lily=true, iceandfire:spawn_dragon_skeleton_fire=true, iceandfire:lightning_dragon_roost=true, iceandfire:spawn_dragon_skeleton_lightning=true, iceandfire:ice_dragon_roost=true, iceandfire:ice_dragon_cave=true, iceandfire:lightning_dragon_cave=true, iceandfire:cyclops_cave=true, iceandfire:spawn_wandering_cyclops=true, iceandfire:spawn_sea_serpent=true, iceandfire:frost_lily=true, iceandfire:hydra_cave=true, iceandfire:lightning_lily=true, iceandfireixie_village=true, iceandfire:myrmex_hive_jungle=true, iceandfire:myrmex_hive_desert=true, iceandfire:silver_ore=true, iceandfire:siren_island=true, iceandfire:spawn_dragon_skeleton_ice=true, iceandfire:spawn_stymphalian_bird=true, iceandfire:fire_dragon_cave=true, iceandfire:sapphire_ore=true, iceandfire:spawn_hippocampus=true, iceandfire:spawn_death_worm=true} [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {TROLL_S=true, HIPPOGRYPH=true, AMPHITHERE=true, COCKATRICE=true, TROLL_M=true, DREAD_LICH=true, TROLL_F=true} [00:02:03] [Server thread/INFO] [ne.be.lo.WeaponRegistry/]: Encoded Weapon Attribute registry size (with package overhead): 41976 bytes (in 5 string chunks with the size of 10000) [00:02:03] [Server thread/INFO] [patchouli/]: Sending reload packet to clients [00:02:03] [Server thread/WARN] [voicechat/]: [voicechat] Running in offline mode - Voice chat encryption is not secure! [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Using server-ip as bind address: 0.0.0.0 [00:02:03] [Server thread/WARN] [ModernFix/]: Dedicated server took 22.521 seconds to load [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Voice chat server started at 0.0.0.0:25565 [00:02:03] [Server thread/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.player.Player from class tschipp.carryon.common.carry.CarryOnDataManager [00:02:03] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@2941ffd5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 0 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 1 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 2 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 3 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 4 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 6 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 7 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 8 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 9 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 10 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 11 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 12 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 13 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 14 [00:02:19] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@ebc7ef2 [00:02:19] [Server thread/INFO] [minecraft/PlayerList]: ZacAdos[/90.2.17.162:49242] logged in with entity id 1062 at (-1848.6727005281205, 221.0, -3054.2468255848935) [00:02:19] [Server thread/ERROR] [ModernFix/]: Skipping entity ID sync for com.talhanation.smallships.world.entity.ship.Ship: java.lang.NoClassDefFoundError: net/minecraft/client/CameraType [00:02:19] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos joined the game [00:02:19] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:19] [Server thread/INFO] [se.mi.te.da.DataManager/]: Sending data to client: ZacAdos [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Received secret request of - Gloop - ZacAdos (17) [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Sent secret to - Gloop - ZacAdos [00:02:21] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully authenticated player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully validated connection of player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Player - Gloop - ZacAdos (cc56befd-d376-3526-a760-340713c478bd) successfully connected to voice chat stop [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping the server [00:02:34] [Server thread/INFO] [mo.pl.ar.ArmourersWorkshop/]: stop local service [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping server [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving players [00:02:34] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: ZacAdos lost connection: Server closed [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos left the game [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving worlds [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (world): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage: All dimensions are saved [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopping IO worker... [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopped IO worker! [00:02:34] [Server thread/INFO] [Calio/]: Removing Dynamic Registries for: net.minecraft.server.dedicated.DedicatedServer@7dc879e1 [MineStrator Daemon]: Checking server disk space usage, this could take a few seconds... [MineStrator Daemon]: Updating process configuration files... [MineStrator Daemon]: Ensuring file permissions are set correctly, this could take a few seconds... [MineStrator Daemon]: Pulling Docker container image, this could take a few minutes to complete... [MineStrator Daemon]: Finished pulling Docker container image container@pterodactyl~ java -version openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing) container@pterodactyl~ java -Xms128M -Xmx6302M -Dterminal.jline=false -Dterminal.ansi=true -Djline.terminal=jline.UnsupportedTerminal -p libraries/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar:libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/net/minecraftforge/JarJarFileSystems/0.3.16/JarJarFileSystems-0.3.16.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar=cpw.mods.securejarhandler --add-opens java.base/java.lang.invoke=cpw.mods.securejarhandler --add-exports java.base/sun.security.util=cpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming -Djava.net.preferIPv6Addresses=system -DignoreList=bootstraplauncher-1.1.2.jar,securejarhandler-2.1.4.jar,asm-commons-9.5.jar,asm-util-9.5.jar,asm-analysis-9.5.jar,asm-tree-9.5.jar,asm-9.5.jar,JarJarFileSystems-0.3.16.jar -DlibraryDirectory=libraries -DlegacyClassPath=libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/net/minecraftforge/accesstransformers/8.0.4/accesstransformers-8.0.4.jar:libraries/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar:libraries/net/minecraftforge/eventbus/6.0.3/eventbus-6.0.3.jar:libraries/net/minecraftforge/forgespi/6.0.0/forgespi-6.0.0.jar:libraries/net/minecraftforge/coremods/5.0.1/coremods-5.0.1.jar:libraries/cpw/mods/modlauncher/10.0.8/modlauncher-10.0.8.jar:libraries/net/minecraftforge/unsafe/0.2.0/unsafe-0.2.0.jar:libraries/com/electronwill/night-config/core/3.6.4/core-3.6.4.jar:libraries/com/electronwill/night-config/toml/3.6.4/toml-3.6.4.jar:libraries/org/apache/maven/maven-artifact/3.8.5/maven-artifact-3.8.5.jar:libraries/net/jodah/typetools/0.8.3/typetools-0.8.3.jar:libraries/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar:libraries/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar:libraries/org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar:libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar:libraries/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar:libraries/net/minecraftforge/JarJarSelector/0.3.16/JarJarSelector-0.3.16.jar:libraries/net/minecraftforge/JarJarMetadata/0.3.16/JarJarMetadata-0.3.16.jar:libraries/net/minecraftforge/fmlloader/1.19.2-43.3.0/fmlloader-1.19.2-43.3.0.jar:libraries/net/minecraft/server/1.19.2-20220805.130853/server-1.19.2-20220805.130853-extra.jar:libraries/com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar:libraries/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar:libraries/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:libraries/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar:libraries/com/mojang/authlib/3.11.49/authlib-3.11.49.jar:libraries/com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar:libraries/com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar:libraries/com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar:libraries/com/mojang/logging/1.0.0/logging-1.0.0.jar:libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:libraries/io/netty/netty-buffer/4.1.77.Final/netty-buffer-4.1.77.Final.jar:libraries/io/netty/netty-codec/4.1.77.Final/netty-codec-4.1.77.Final.jar:libraries/io/netty/netty-common/4.1.77.Final/netty-common-4.1.77.Final.jar:libraries/io/netty/netty-handler/4.1.77.Final/netty-handler-4.1.77.Final.jar:libraries/io/netty/netty-resolver/4.1.77.Final/netty-resolver-4.1.77.Final.jar:libraries/io/netty/netty-transport/4.1.77.Final/netty-transport-4.1.77.Final.jar:libraries/io/netty/netty-transport-classes-epoll/4.1.77.Final/netty-transport-classes-epoll-4.1.77.Final.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-x86_64.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-aarch_64.jar:libraries/io/netty/netty-transport-native-unix-common/4.1.77.Final/netty-transport-native-unix-common-4.1.77.Final.jar:libraries/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar:libraries/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:libraries/net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:libraries/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:libraries/org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar:libraries/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar cpw.mods.bootstraplauncher.BootstrapLauncher --launchTarget forgeserver --fml.forgeVersion 43.3.0 --fml.mcVersion 1.19.2 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20220805.130853 [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [00:02:43] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [00:02:44] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection Latest log [29Mar2024 00:02:42.803] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [29Mar2024 00:02:42.805] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [29Mar2024 00:02:43.548] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [29Mar2024 00:02:43.876] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.878] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:44.033] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [29Mar2024 00:02:44.034] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [29Mar2024 00:02:44.034] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection
  • Topics

×
×
  • Create New...

Important Information

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