Jump to content

Pi Man

Members
  • Posts

    7
  • Joined

  • Last visited

Everything posted by Pi Man

  1. hey, thanks for the reply. so I tried importing from three different options under General, and none of them worked either. also import existing gradle didn't work even when NOT doing gradlew eclipse.
  2. trying to get a 1.14.4 workspace running so I can update from 1.12.2 to 1.14.4, but I can't get the workspace created. steps used: using Latest 1.14.4 Forge MDK version 28.1.111, new empty folder: "ReceiverMod_1.14.4" copy contents from unpacked MDK to "ReceiverMod_1.14.4" run "gradlew genEclipseRuns" in "ReceiverMod_1.14.4" run eclipse in "ReceiverMod_1.14.4/eclipse" Import Existing Gradle Project with folder "ReceiverMod_1.14.4" get error: !ENTRY org.eclipse.buildship.core 4 0 2020-01-04 19:46:03.977 !MESSAGE Synchronize Gradle projects with workspace failed due to an error configuring Eclipse. !STACK 0 org.eclipse.buildship.core.GradlePluginsRuntimeException: org.eclipse.core.internal.resources.ResourceException: Invalid project description. at org.eclipse.buildship.core.workspace.internal.DefaultWorkspaceOperations.includeProject(DefaultWorkspaceOperations.java:160) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.addExistingEclipseProjectToWorkspace(SynchronizeGradleBuildOperation.java:279) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeNonWorkspaceProject(SynchronizeGradleBuildOperation.java:268) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeGradleProjectWithWorkspaceProject(SynchronizeGradleBuildOperation.java:179) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$000(SynchronizeGradleBuildOperation.java:99) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$1.run(SynchronizeGradleBuildOperation.java:134) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2314) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeProjectsWithWorkspace(SynchronizeGradleBuildOperation.java:131) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.run(SynchronizeGradleBuildOperation.java:115) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.synchronizeBuild(SynchronizeGradleBuildsJob.java:85) at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.runToolingApiJob(SynchronizeGradleBuildsJob.java:73) at org.eclipse.buildship.core.util.progress.ToolingApiJob$1.run(ToolingApiJob.java:73) at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:62) at org.eclipse.buildship.core.util.progress.ToolingApiJob.run(ToolingApiJob.java:70) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: org.eclipse.core.internal.resources.ResourceException: Invalid project description. at org.eclipse.core.internal.resources.Project.checkDescription(Project.java:173) at org.eclipse.core.internal.resources.Project.assertCreateRequirements(Project.java:57) at org.eclipse.core.internal.resources.Project.create(Project.java:267) at org.eclipse.core.internal.resources.Project.create(Project.java:251) at org.eclipse.buildship.core.workspace.internal.DefaultWorkspaceOperations.includeProject(DefaultWorkspaceOperations.java:145) ... 15 more try again (clean out folder so it is empty) copy MDK run "gradlew genEclipseRuns" run "gradlew eclipse" run eclipse in "ReceiverMod_1.14.4/eclipse" Import Existing Gradle Project with folder"ReceiverMod_1.14.4" same error attached is eclipse log file not sure if I'm doing something wrong, or if this version of forge has an issue, or if something else is the issue might also be old eclipse or old gradle I guess. (if I import from "ReceiverMod_1.14.4/gradlew" it doesn't fail, but this is obviously the wrong folder) .log
  3. alright, so I got a solution so what I did was when trying to save a client I've been just sending the UUID, now when the client is offline and trying to be saved, I also send the nbt data of the client as well as the username. then on the receiving side, if the player is not found with the UUID, I call a proxy method to generate a "fake player" to take it's place. Common Proxy: public EntityPlayer loadPlayer(NBTTagCompound teamnbt, String key, World world) { GameProfile profile = FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerProfileCache().getProfileByUUID(UUID.fromString(teamnbt.getString(key))); EntityPlayerMP member = new EntityPlayerMP(FMLCommonHandler.instance().getMinecraftServerInstance(), (WorldServer) world, profile , new PlayerInteractionManager(world)); FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().setPlayerManager(new WorldServer[] {(WorldServer) world}); member.deserializeNBT(FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().getPlayerNBT(member)); member.mountEntityAndWakeUp(); return member; } Client Proxy: @Override public EntityPlayer loadPlayer(NBTTagCompound teamnbt, String key, World world) { EntityPlayer member; if (world.isRemote) { GameProfile profile = new GameProfile(UUID.fromString(teamnbt.getString(key)), teamnbt.getString(key + "name")); TileEntitySkull.updateGameprofile(profile); member = new EntityOtherPlayerMP(world, profile); member.deserializeNBT(teamnbt.getCompoundTag(key + "data")); member.setEntityId(teamnbt.getInteger(key + "id")); } else { member = super.loadPlayer(teamnbt, key, world); } return member; } Serializing: @Override public NBTTagCompound serialize() { requests.removeIf(request -> (request.getSender() == null || request.getReceiver() == null)); teams.removeIf(team -> team.size() < 2); NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound teamsnbt = new NBTTagCompound(); NBTTagCompound requestsnbt = new NBTTagCompound(); Integer i = 0; for (List<EntityPlayer> team : teams) { NBTTagCompound teamnbt = new NBTTagCompound(); Integer j = 0; for (EntityPlayer player : team) { if (player != null) { teamnbt.setString(j.toString(), player.getCachedUniqueIdString()); if (player instanceof EntityPlayerMP && ((EntityPlayerMP)player).hasDisconnected()) { teamnbt.setTag(j.toString() + "data", player.writeToNBT(new NBTTagCompound())); teamnbt.setInteger(j.toString() + "id", player.getEntityId()); teamnbt.setString(j.toString() + "name", player.getName()); } j++; } } teamnbt.setInteger("size", j); teamsnbt.setTag(i.toString(), teamnbt); i++; } i = 0; for (Request request : requests) { requestsnbt.setString(i.toString() + "sender", request.getSender().getCachedUniqueIdString()); requestsnbt.setString(i.toString() + "receiver", request.getReceiver().getCachedUniqueIdString()); i++; } nbt.setTag("teams", teamsnbt); nbt.setTag("requests", requestsnbt); nbt.setInteger("requestSize", i); System.out.println(nbt); return nbt; } Deserializing: @Override public void deserialize(NBTTagCompound nbt) { teams.clear(); requests.clear(); NBTTagCompound teamsnbt = nbt.getCompoundTag("teams"); NBTTagCompound requestsnbt = nbt.getCompoundTag("requests"); for (String key : teamsnbt.getKeySet()) { NBTTagCompound teamnbt = teamsnbt.getCompoundTag(key); List<EntityPlayer> team = new ArrayList<>(); int i2 = teamnbt.getInteger("size"); for (Integer i = 0; i < i2; i++) { EntityPlayer member = this.world.getPlayerEntityByUUID(UUID.fromString(teamnbt.getString(i.toString()))); if (member == null) { member = RWBYModels.proxy.loadPlayer(teamnbt, i.toString(), world); } team.add(member); } teams.add(team); } int i1 = nbt.getInteger("requestSize"); for (Integer i = 0; i < i1; i++) { EntityPlayer sender = world.getPlayerEntityByUUID(UUID.fromString(requestsnbt.getString(i.toString() + "sender"))); EntityPlayer receiver = world.getPlayerEntityByUUID(UUID.fromString(requestsnbt.getString(i.toString() + "receiver"))); requests.add(new Request(sender, receiver)); } }
  4. First of all I have been modding for just over a year now, but this is my first post. With that out of the way, on to the problem. I have a gui that lists players that have joined in a team with you (the teams are saved in a world capability), and it displays their aura (saved as a capability on the player). This works fine as long as every member of the team is on the server, however if there is a member of the team that is not on the server, opening this gui will cause a crash because the client can not find the player. the current offending line of code (line 254 of Team Capability class) this.world.getPlayerEntityByUUID(UUID.fromString(teamnbt.getString(teamkey))) when the team capability is being deserialized from nbt (after being sent from the server to the client) (world can be either a client world or server world) so my main question is, can you get an EntityPlayer instance of an offline player on the client? Can you get the data of an offline player on a client (similar to using player.dat on a server)? Is there another way to display the capability data on the client of the offline player? Team Capability class Gui class (this is an old screenshot with the same player in all four slots, but it serves it's purpose of showing why I want the capability data exposed) similar thread (but this only works on the server instead of the client I think) also completely unrelated but Player404 (which is a random player generated by the IDE) is actually registered to a real player https://mcuuid.net/?q=Player404
×
×
  • Create New...

Important Information

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