TimeUpdate
This commit is contained in:
@@ -47,8 +47,10 @@ public class GameLoop extends Thread {
|
|||||||
|
|
||||||
/* --- --- --- */
|
/* --- --- --- */
|
||||||
|
|
||||||
long gameTime = gameTimer.getGameTime();
|
playerManager.getBroadcastChannel().sendTimeUpdate(
|
||||||
playerManager.getBroadcastChannel().sendTimeUpdate(gameTime);
|
gameTimer.getGameTime(),
|
||||||
|
gameTimer.getWorldAge()
|
||||||
|
);
|
||||||
|
|
||||||
/* --- --- --- */
|
/* --- --- --- */
|
||||||
|
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ public class BroadcastNetChannel implements NetChannel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendTimeUpdate(final long value) {
|
public void sendTimeUpdate(final long time, final long age) {
|
||||||
playerStream.forEach(player -> player.getChannel().sendTimeUpdate(value));
|
playerStream.forEach(player -> player.getChannel().sendTimeUpdate(time, age));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import mc.core.text.Text;
|
|||||||
|
|
||||||
public interface NetChannel {
|
public interface NetChannel {
|
||||||
void sendKeepAlive();
|
void sendKeepAlive();
|
||||||
void sendTimeUpdate(long value);
|
void sendTimeUpdate(long time, long age);
|
||||||
void sendChatMessage(Text text);
|
void sendChatMessage(Text text);
|
||||||
|
|
||||||
void writeAndFlush(SCPacket pkt);
|
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;
|
import lombok.Getter;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class IdleTime implements TimeProcessor {
|
public class IdleTime extends AbstractTimeProcessor {
|
||||||
@Getter
|
@Getter
|
||||||
private final long gameTime;
|
private final long gameTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ package mc.core.time;
|
|||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
|
||||||
public class RealTime implements TimeProcessor {
|
public class RealTime extends AbstractTimeProcessor {
|
||||||
private static final long DIFF = 21600L;
|
private static final long DIFF = 21600L;
|
||||||
private static final long HOUR24 = 86400L;
|
private static final long HOUR24 = 86400L;
|
||||||
private final Calendar calendar = Calendar.getInstance();
|
private final Calendar calendar = Calendar.getInstance();
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package mc.core.time;
|
package mc.core.time;
|
||||||
|
|
||||||
public class TimePerTick implements TimeProcessor {
|
public class TimePerTick extends AbstractTimeProcessor {
|
||||||
private long gameTime;
|
private long gameTime;
|
||||||
|
|
||||||
public void setStartGameTime(long value) {
|
public void setStartGameTime(long value) {
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ package mc.core.time;
|
|||||||
|
|
||||||
public interface TimeProcessor {
|
public interface TimeProcessor {
|
||||||
long getGameTime();
|
long getGameTime();
|
||||||
|
long getWorldAge();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public enum State {
|
|||||||
.put(KeepAlivePacket.class, 0x1F)
|
.put(KeepAlivePacket.class, 0x1F)
|
||||||
.put(JoinGamePacket.class, 0x23)
|
.put(JoinGamePacket.class, 0x23)
|
||||||
.put(SpawnPositionPacket.class, 0x46)
|
.put(SpawnPositionPacket.class, 0x46)
|
||||||
|
.put(TimeUpdatePacket.class, 0x47)
|
||||||
.put(PlayerAbilitiesPacket.class, 0x2C)
|
.put(PlayerAbilitiesPacket.class, 0x2C)
|
||||||
.put(PlayerPositionAndLookPacket.class, 0x2F)
|
.put(PlayerPositionAndLookPacket.class, 0x2F)
|
||||||
.build()
|
.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.NetChannel;
|
||||||
import mc.core.network.SCPacket;
|
import mc.core.network.SCPacket;
|
||||||
import mc.core.network.proto_1_12_2.packets.KeepAlivePacket;
|
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 mc.core.text.Text;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@@ -24,8 +25,8 @@ public class WrapperNetChannel implements NetChannel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendTimeUpdate(long value) {
|
public void sendTimeUpdate(long time, long age) {
|
||||||
|
writeAndFlush(new TimeUpdatePacket(time, age));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user