Archived
0

TimeUpdate

This commit is contained in:
2018-06-24 13:33:16 +03:00
parent c7618e3222
commit 34a6322699
11 changed files with 56 additions and 10 deletions

View File

@@ -47,8 +47,10 @@ public class GameLoop extends Thread {
/* --- --- --- */
long gameTime = gameTimer.getGameTime();
playerManager.getBroadcastChannel().sendTimeUpdate(gameTime);
playerManager.getBroadcastChannel().sendTimeUpdate(
gameTimer.getGameTime(),
gameTimer.getWorldAge()
);
/* --- --- --- */

View File

@@ -20,8 +20,8 @@ public class BroadcastNetChannel implements NetChannel {
}
@Override
public void sendTimeUpdate(final long value) {
playerStream.forEach(player -> player.getChannel().sendTimeUpdate(value));
public void sendTimeUpdate(final long time, final long age) {
playerStream.forEach(player -> player.getChannel().sendTimeUpdate(time, age));
}
@Override

View File

@@ -8,7 +8,7 @@ import mc.core.text.Text;
public interface NetChannel {
void sendKeepAlive();
void sendTimeUpdate(long value);
void sendTimeUpdate(long time, long age);
void sendChatMessage(Text text);
void writeAndFlush(SCPacket pkt);

View File

@@ -0,0 +1,14 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2018-06-24
*/
package mc.core.time;
public abstract class AbstractTimeProcessor implements TimeProcessor {
private long worldAge = 0;
@Override
public long getWorldAge() {
return worldAge++;
}
}

View File

@@ -8,7 +8,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
public class IdleTime implements TimeProcessor {
public class IdleTime extends AbstractTimeProcessor {
@Getter
private final long gameTime;
}

View File

@@ -6,7 +6,7 @@ package mc.core.time;
import java.util.Calendar;
public class RealTime implements TimeProcessor {
public class RealTime extends AbstractTimeProcessor {
private static final long DIFF = 21600L;
private static final long HOUR24 = 86400L;
private final Calendar calendar = Calendar.getInstance();

View File

@@ -4,7 +4,7 @@
*/
package mc.core.time;
public class TimePerTick implements TimeProcessor {
public class TimePerTick extends AbstractTimeProcessor {
private long gameTime;
public void setStartGameTime(long value) {

View File

@@ -6,4 +6,5 @@ package mc.core.time;
public interface TimeProcessor {
long getGameTime();
long getWorldAge();
}

View File

@@ -60,6 +60,7 @@ public enum State {
.put(KeepAlivePacket.class, 0x1F)
.put(JoinGamePacket.class, 0x23)
.put(SpawnPositionPacket.class, 0x46)
.put(TimeUpdatePacket.class, 0x47)
.put(PlayerAbilitiesPacket.class, 0x2C)
.put(PlayerPositionAndLookPacket.class, 0x2F)
.build()

View File

@@ -0,0 +1,27 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2018-06-24
*/
package mc.core.network.proto_1_12_2.packets;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import mc.core.network.NetStream;
import mc.core.network.SCPacket;
@AllArgsConstructor
@NoArgsConstructor
@Setter
@ToString
public class TimeUpdatePacket implements SCPacket {
private long time;
private long worldage;
@Override
public void writeSelf(NetStream netStream) {
netStream.writeLong(worldage);
netStream.writeLong(time);
}
}

View File

@@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor;
import mc.core.network.NetChannel;
import mc.core.network.SCPacket;
import mc.core.network.proto_1_12_2.packets.KeepAlivePacket;
import mc.core.network.proto_1_12_2.packets.TimeUpdatePacket;
import mc.core.text.Text;
import java.util.Random;
@@ -24,8 +25,8 @@ public class WrapperNetChannel implements NetChannel {
}
@Override
public void sendTimeUpdate(long value) {
public void sendTimeUpdate(long time, long age) {
writeAndFlush(new TimeUpdatePacket(time, age));
}
@Override