Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-19 21:10:10 +01:00
Added per player time support. Thanks eisental, Shamebot and needspeed10!
Dieser Commit ist enthalten in:
Ursprung
a70a5abc3d
Commit
cc1b0a005c
@ -483,6 +483,19 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
public long timeOffset = 0;
|
||||||
|
public boolean relativeTime = true;
|
||||||
|
|
||||||
|
public long getPlayerTime() {
|
||||||
|
if (relativeTime) {
|
||||||
|
// Adds timeOffset to the current server time.
|
||||||
|
return world.getTime() + timeOffset;
|
||||||
|
} else {
|
||||||
|
// Adds timeOffset to the beginning of this day.
|
||||||
|
return world.getTime() - (world.getTime() % 24000) + timeOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return super.toString() + "(" + name + " at " + locX + "," + locY + "," + locZ + ")";
|
return super.toString() + "(" + name + " at " + locX + "," + locY + "," + locZ + ")";
|
||||||
|
@ -177,7 +177,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
|
|||||||
|
|
||||||
File newWorld = new File(new File(name), dim);
|
File newWorld = new File(new File(name), dim);
|
||||||
File oldWorld = new File(new File(s), dim);
|
File oldWorld = new File(new File(s), dim);
|
||||||
|
|
||||||
if ((!newWorld.isDirectory()) && (oldWorld.isDirectory())) {
|
if ((!newWorld.isDirectory()) && (oldWorld.isDirectory())) {
|
||||||
log.info("---- Migration of old " + worldType + " folder required ----");
|
log.info("---- Migration of old " + worldType + " folder required ----");
|
||||||
log.info("Unfortunately due to the way that Minecraft implemented multiworld support in 1.6, Bukkit requires that you move your " + worldType + " folder to a new location in order to operate correctly.");
|
log.info("Unfortunately due to the way that Minecraft implemented multiworld support in 1.6, Bukkit requires that you move your " + worldType + " folder to a new location in order to operate correctly.");
|
||||||
@ -411,7 +411,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
|
|||||||
// CraftBukkit start - only send timeupdates to the people in that world
|
// CraftBukkit start - only send timeupdates to the people in that world
|
||||||
for (int i = 0; i < this.serverConfigurationManager.players.size(); ++i) {
|
for (int i = 0; i < this.serverConfigurationManager.players.size(); ++i) {
|
||||||
EntityPlayer entityplayer = (EntityPlayer) this.serverConfigurationManager.players.get(i);
|
EntityPlayer entityplayer = (EntityPlayer) this.serverConfigurationManager.players.get(i);
|
||||||
entityplayer.netServerHandler.sendPacket(new Packet4UpdateTime(entityplayer.world.getTime()));
|
entityplayer.netServerHandler.sendPacket(new Packet4UpdateTime(entityplayer.getPlayerTime())); // Add support for per player time
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ public class NetLoginHandler extends NetHandler {
|
|||||||
this.server.serverConfigurationManager.c(entityplayer);
|
this.server.serverConfigurationManager.c(entityplayer);
|
||||||
netserverhandler.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
|
netserverhandler.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
|
||||||
this.server.networkListenThread.a(netserverhandler);
|
this.server.networkListenThread.a(netserverhandler);
|
||||||
netserverhandler.sendPacket(new Packet4UpdateTime(worldserver.getTime()));
|
netserverhandler.sendPacket(new Packet4UpdateTime(entityplayer.getPlayerTime())); // CraftBukkit - add support for player specific time
|
||||||
entityplayer.syncInventory();
|
entityplayer.syncInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +424,7 @@ public class CraftWorld implements World {
|
|||||||
// Forces the client to update to the new time immediately
|
// Forces the client to update to the new time immediately
|
||||||
for (Player p: getPlayers()) {
|
for (Player p: getPlayers()) {
|
||||||
CraftPlayer cp = (CraftPlayer) p;
|
CraftPlayer cp = (CraftPlayer) p;
|
||||||
cp.getHandle().netServerHandler.sendPacket(new Packet4UpdateTime(time));
|
cp.getHandle().netServerHandler.sendPacket(new Packet4UpdateTime(cp.getHandle().getPlayerTime()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,4 +297,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|||||||
|
|
||||||
getHandle().netServerHandler.sendPacket(new Packet200Statistic(id, amount));
|
getHandle().netServerHandler.sendPacket(new Packet200Statistic(id, amount));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlayerTime(long time, boolean relative) {
|
||||||
|
getHandle().timeOffset = time;
|
||||||
|
getHandle().relativeTime = relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPlayerTimeOffset() {
|
||||||
|
return getHandle().timeOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPlayerTime() {
|
||||||
|
return getHandle().getPlayerTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPlayerTimeRelative() {
|
||||||
|
return getHandle().relativeTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetPlayerTime() {
|
||||||
|
setPlayerTime(0, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren