Skip to content

Commit 2d3e495

Browse files
Fixed metadata issues, added new config options to emulate world border, cleaned protocol code.
1 parent 7689769 commit 2d3e495

27 files changed

+546
-630
lines changed

common/src/main/java/com/viaversion/viarewind/ViaRewindConfig.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,17 @@ public int getMaxBookPageSize() {
5858
return getInt("max-book-page-length", 5000);
5959
}
6060

61-
@Override
61+
@Override
62+
public boolean isEmulateWorldBorder() {
63+
return getBoolean("emulate-world-border", true);
64+
}
65+
66+
@Override
67+
public String getWorldBorderParticle() {
68+
return getString("world-border-particle", "fireworksSpark");
69+
}
70+
71+
@Override
6272
public URL getDefaultConfigURL() {
6373
return getClass().getClassLoader().getResource("assets/viarewind/config.yml");
6474
}

common/src/main/java/com/viaversion/viarewind/api/ViaRewindConfig.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,18 @@ enum CooldownIndicator {
6969
* @return the max amount of characters
7070
*/
7171
int getMaxBookPageSize();
72+
73+
/**
74+
* Whether to emulate the 1.8+ world border for 1.7.x clients
75+
*
76+
* @return true if enabled
77+
*/
78+
boolean isEmulateWorldBorder();
79+
80+
/**
81+
* The particle to show the world border for the 1.8+ world border for 1.7.x clients
82+
*
83+
* @return the particle name (see https://wiki.vg/index.php?title=Protocol&oldid=7368#Particle_2)
84+
*/
85+
String getWorldBorderParticle();
7286
}

common/src/main/java/com/viaversion/viarewind/protocol/protocol1_7_6_10to1_8/Protocol1_7_6_10To1_8.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8;
2020

21+
import com.viaversion.viarewind.ViaRewind;
2122
import com.viaversion.viarewind.api.rewriter.ReplacementItemRewriter;
2223
import com.viaversion.viarewind.protocol.protocol1_7_2_5to1_7_6_10.ClientboundPackets1_7_2_5;
2324
import com.viaversion.viarewind.protocol.protocol1_7_2_5to1_7_6_10.ServerboundPackets1_7_2_5;
@@ -28,7 +29,6 @@
2829
import com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.rewriter.ReplacementItemRewriter1_7_6_10;
2930
import com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.storage.*;
3031
import com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.task.WorldBorderUpdateTask;
31-
import com.viaversion.viarewind.utils.Ticker;
3232
import com.viaversion.viaversion.api.Via;
3333
import com.viaversion.viaversion.api.connection.UserConnection;
3434
import com.viaversion.viaversion.api.platform.providers.ViaProviders;
@@ -118,13 +118,13 @@ public void transform(Direction direction, State state, PacketWrapper packetWrap
118118

119119
@Override
120120
public void init(UserConnection userConnection) {
121-
userConnection.put(new Windows(userConnection));
122-
userConnection.put(new EntityTracker(userConnection, this));
121+
userConnection.put(new WindowTracker(userConnection));
122+
userConnection.put(new EntityTracker(userConnection));
123123
userConnection.put(new PlayerPositionTracker(userConnection));
124124
userConnection.put(new GameProfileStorage(userConnection));
125125
userConnection.put(new Scoreboard(userConnection));
126126
userConnection.put(new CompressionStatusTracker(userConnection));
127-
userConnection.put(new WorldBorder(userConnection));
127+
userConnection.put(new WorldBorderEmulator(userConnection));
128128
userConnection.put(new PlayerAbilitiesTracker(userConnection));
129129
userConnection.put(new ClientWorld(userConnection));
130130
}
@@ -133,7 +133,9 @@ public void init(UserConnection userConnection) {
133133
public void register(ViaProviders providers) {
134134
providers.register(CompressionHandlerProvider.class, new TrackingCompressionHandlerProvider());
135135

136-
Via.getManager().getScheduler().scheduleRepeating(new WorldBorderUpdateTask(), 0L, 50L, TimeUnit.MILLISECONDS);
136+
if (ViaRewind.getConfig().isEmulateWorldBorder()) {
137+
Via.getManager().getScheduler().scheduleRepeating(new WorldBorderUpdateTask(), 0L, 50L, TimeUnit.MILLISECONDS);
138+
}
137139
}
138140

139141
@Override
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.model;
2+
3+
public class FurnaceData {
4+
5+
public short fuelLeft = 0;
6+
public short maxFuel = 0;
7+
public short progress = 0;
8+
public short maxProgress = 200;
9+
}

common/src/main/java/com/viaversion/viarewind/protocol/protocol1_7_6_10to1_8/model/MetaIndex1_7_6_10To1_8.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public enum MetaIndex1_7_6_10To1_8 {
108108
ENDER_CRYSTAL_HEALTH(Entity1_10Types.EntityType.ENDER_CRYSTAL, 8, MetaType1_7_6_10.Int, 9, MetaType1_8.Int),
109109
;
110110

111-
private static final HashMap<Pair<Entity1_10Types.EntityType, Integer>, MetaIndex1_7_6_10To1_8> metadataRewrites = new HashMap<>();
111+
private final static HashMap<Pair<Entity1_10Types.EntityType, Integer>, MetaIndex1_7_6_10To1_8> metadataRewrites = new HashMap<>();
112112

113113
static {
114114
for (MetaIndex1_7_6_10To1_8 index : MetaIndex1_7_6_10To1_8.values()) {

common/src/main/java/com/viaversion/viarewind/protocol/protocol1_7_6_10to1_8/model/ParticleIndex1_7_6_10.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public enum ParticleIndex1_7_6_10 {
6666

6767
public final String name;
6868
public final int extra;
69-
private static final HashMap<String, ParticleIndex1_7_6_10> particleMap = new HashMap<>();
69+
private final static HashMap<String, ParticleIndex1_7_6_10> particleMap = new HashMap<>();
7070

7171
ParticleIndex1_7_6_10(String name) {
7272
this(name, 0);

common/src/main/java/com/viaversion/viarewind/protocol/protocol1_7_6_10to1_8/packets/EntityPackets.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,15 @@
1818

1919
package com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.packets;
2020

21-
import com.google.common.collect.Lists;
22-
import com.google.common.primitives.Ints;
23-
import com.viaversion.viarewind.protocol.protocol1_7_2_5to1_7_6_10.ClientboundPackets1_7_2_5;
2421
import com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.Protocol1_7_6_10To1_8;
2522
import com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.storage.EntityTracker;
2623
import com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.storage.GameProfileStorage;
2724
import com.viaversion.viarewind.protocol.protocol1_7_6_10to1_8.types.Types1_7_6_10;
2825
import com.viaversion.viarewind.api.minecraft.EntityModel;
29-
import com.viaversion.viarewind.utils.PacketUtil;
3026
import com.viaversion.viaversion.api.minecraft.Position;
3127
import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types;
3228
import com.viaversion.viaversion.api.minecraft.item.Item;
3329
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
34-
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
3530
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
3631
import com.viaversion.viaversion.api.type.Type;
3732
import com.viaversion.viaversion.api.type.types.version.Types1_8;
@@ -222,7 +217,7 @@ public void register() {
222217
handler(wrapper -> {
223218
int entityId = wrapper.get(Type.INT, 0);
224219
EntityTracker tracker = wrapper.user().get(EntityTracker.class);
225-
Entity1_10Types.EntityType type = tracker.getClientEntityTypes().get(entityId);
220+
Entity1_10Types.EntityType type = tracker.getEntityMap().get(entityId);
226221
if (type == Entity1_10Types.EntityType.MINECART_ABSTRACT) { // TODO | Realign all entities?
227222
int y = wrapper.get(Type.INT, 2);
228223
y += 12;
@@ -298,13 +293,13 @@ public void register() {
298293
final List<Metadata> metadataList = wrapper.get(Types1_7_6_10.METADATA_LIST, 0);
299294

300295
final EntityTracker tracker = wrapper.user().get(EntityTracker.class);
301-
if (tracker.getClientEntityTypes().containsKey(entityId)) {
296+
if (tracker.getEntityMap().containsKey(entityId)) {
302297
final EntityModel<?> replacement = tracker.getEntityReplacement(entityId);
303298
if (replacement != null) {
304299
wrapper.cancel();
305300
replacement.updateMetadata(metadataList);
306301
} else {
307-
protocol.getMetadataRewriter().transform(tracker.getClientEntityTypes().get(entityId), metadataList);
302+
protocol.getMetadataRewriter().transform(tracker.getEntityMap().get(entityId), metadataList);
308303
if (metadataList.isEmpty()) {
309304
wrapper.cancel();
310305
}

0 commit comments

Comments
 (0)