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(
playerManager.getBroadcastChannel().sendTimeUpdate(gameTime); gameTimer.getGameTime(),
gameTimer.getWorldAge()
);
/* --- --- --- */ /* --- --- --- */

View File

@@ -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

View File

@@ -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);

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; 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;
} }

View File

@@ -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();

View File

@@ -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) {

View File

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

View File

@@ -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()

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.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