TimeUpdate
This commit is contained in:
@@ -47,8 +47,10 @@ public class GameLoop extends Thread {
|
||||
|
||||
/* --- --- --- */
|
||||
|
||||
long gameTime = gameTimer.getGameTime();
|
||||
playerManager.getBroadcastChannel().sendTimeUpdate(gameTime);
|
||||
playerManager.getBroadcastChannel().sendTimeUpdate(
|
||||
gameTimer.getGameTime(),
|
||||
gameTimer.getWorldAge()
|
||||
);
|
||||
|
||||
/* --- --- --- */
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
14
core/src/main/java/mc/core/time/AbstractTimeProcessor.java
Normal file
14
core/src/main/java/mc/core/time/AbstractTimeProcessor.java
Normal 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++;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -6,4 +6,5 @@ package mc.core.time;
|
||||
|
||||
public interface TimeProcessor {
|
||||
long getGameTime();
|
||||
long getWorldAge();
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user