Skip to content

Commit 9600390

Browse files
committed
Update 1.2.50-alpha1 (Fix up entity registry)
1 parent edbb264 commit 9600390

File tree

6 files changed

+34
-10
lines changed

6 files changed

+34
-10
lines changed

client/src/main/java/com/fox2code/foxloader/client/mixins/MixinNetClientHandler.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import com.fox2code.foxloader.registry.GameRegistryClient;
99
import net.minecraft.client.Minecraft;
1010
import net.minecraft.src.client.packets.*;
11+
import net.minecraft.src.game.entity.Entity;
12+
import net.minecraft.src.game.entity.EntityList;
13+
import net.minecraft.src.game.level.World;
1114
import net.minecraft.src.game.level.WorldClient;
1215
import org.spongepowered.asm.mixin.Mixin;
1316
import org.spongepowered.asm.mixin.Shadow;
@@ -48,11 +51,19 @@ public void onHandlePickupSpawn(Packet21PickupSpawn packet21, CallbackInfo ci) {
4851

4952
@Inject(method = "handleVehicleSpawn", at = @At("HEAD"))
5053
public void onHandleVehicleSpawn(Packet23VehicleSpawn packet23, CallbackInfo ci) {
54+
packet23.type = GameRegistryClient.entityTypeIdMappingIn[packet23.type];
5155
if (packet23.type == 70) {
5256
packet23.payload0 = GameRegistryClient.itemIdMappingIn[packet23.payload0];
5357
}
5458
}
5559

60+
@Redirect(method = "handleMobSpawn", at = @At(value = "INVOKE", target =
61+
"Lnet/minecraft/src/game/entity/EntityList;createEntity(ILnet/minecraft/src/game/level/World;)Lnet/minecraft/src/game/entity/Entity;"))
62+
public Entity onHandleMobSpawn(int i, World world) {
63+
if (i < 0) i += 256;
64+
return EntityList.createEntity(GameRegistryClient.entityTypeIdMappingIn[i], world);
65+
}
66+
5667
@Inject(method = "handleMultiBlockChange", at = @At("HEAD"))
5768
public void onHandleMultiBlockChange(Packet52MultiBlockChange packet52, CallbackInfo ci) {
5869
short[] types = packet52.typeArray;

client/src/main/java/com/fox2code/foxloader/registry/GameRegistryClient.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ private enum MappingState {
5353
blockIdMappingIn[i] = i;
5454
blockIdMappingOut[i] = i;
5555
}
56+
for (short i = 0; i < MAXIMUM_ENTITY_TYPE_ID; i++) {
57+
entityTypeIdMappingIn[i] = i;
58+
entityTypeIdMappingOut[i] = i;
59+
}
5660
}
5761

5862
public static void initialize() {
@@ -406,6 +410,10 @@ public static void resetMappings(boolean singlePlayer) {
406410
blockIdMappingIn[i] = i;
407411
blockIdMappingOut[i] = i;
408412
}
413+
for (short i = INITIAL_ENTITY_TYPE_ID; i < MAXIMUM_ENTITY_TYPE_ID; i++) {
414+
entityTypeIdMappingIn[i] = i;
415+
entityTypeIdMappingOut[i] = i;
416+
}
409417
} else {
410418
if (idMappingState == MappingState.SERVER) return;
411419
idMappingState = MappingState.SERVER;
@@ -421,8 +429,13 @@ public static void resetMappings(boolean singlePlayer) {
421429
itemIdMappingIn[i] = DEFAULT_FALLBACK_ITEM_ID;
422430
itemIdMappingOut[i] = DEFAULT_FALLBACK_ITEM_ID;
423431
}
432+
for (short i = INITIAL_ENTITY_TYPE_ID; i < MAXIMUM_ENTITY_TYPE_ID; i++) {
433+
entityTypeIdMappingIn[i] = DEFAULT_FALLBACK_ENTITY_TYPE_ID;
434+
entityTypeIdMappingOut[i] = DEFAULT_FALLBACK_ENTITY_TYPE_ID;
435+
}
424436
}
425437
Arrays.fill(itemIdMappingInNames, null);
438+
Arrays.fill(entityTypeIdMappingNames, null);
426439
}
427440

428441
public static void initializeMappings(ServerHello serverHello) {

common/src/main/java/com/fox2code/foxloader/loader/ModLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.util.logging.Logger;
3333

3434
public class ModLoader extends Mod {
35-
public static final boolean I_AM_EXPERIMENTAL = false; // Show text on client main menu
35+
public static final boolean I_AM_EXPERIMENTAL = true; // Show text on client main menu
3636
public static final boolean TEST_MODE = Boolean.getBoolean("foxloader.test-mode");
3737
private static final String INJECT_MOD = System.getProperty("foxloader.inject-mod");
3838
public static final boolean DEV_MODE = Boolean.getBoolean("foxloader.dev-mode");

common/src/main/java/com/fox2code/foxloader/loader/packet/ServerHello.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public ServerHello(HashMap<String, RegistryEntry> registryEntries,
4747
@Override
4848
public void readData(DataInputStream inStream) throws IOException {
4949
int serverHelloVersion = inStream.readUnsignedShort();
50-
int clientBackwardCompatibilityVersion = inStream.readUnsignedShort();
50+
int clientBackwardCompatibilityVersion = serverHelloVersion == 0 ? 0 : inStream.readUnsignedShort();
5151
if (SERVER_HELLO_VERSION < clientBackwardCompatibilityVersion) {
5252
throw new IOException("Client is critically out of date, please update FoxLoader.");
5353
}
@@ -77,11 +77,11 @@ public void readData(DataInputStream inStream) throws IOException {
7777
this.entityTypeRegistryEntries = new HashMap<>();
7878
ModLoader.getModLoaderLogger().log(Level.WARNING, "Server Hello: Too few bytes to read entity data.");
7979
} else {
80-
int entityEntries = inStream.readInt();
80+
int entityEntries = inStream.readUnsignedShort();
8181
entityTypeRegistryEntries = new HashMap<>(entityEntries);
8282
while (entityEntries-- > 0) {
8383
EntityTypeRegistryEntry entry = new EntityTypeRegistryEntry(
84-
inStream.readInt(), inStream.readInt(), inStream.readUTF());
84+
inStream.readUnsignedShort(), inStream.readUnsignedShort(), inStream.readUTF());
8585
this.entityTypeRegistryEntries.put(entry.name, entry);
8686
}
8787
}
@@ -106,10 +106,10 @@ public void writeData(DataOutputStream outStream) throws IOException {
106106
outStream.writeUTF(metadata.getValue());
107107
}
108108

109-
outStream.writeInt(this.entityTypeRegistryEntries.size());
109+
outStream.writeShort(this.entityTypeRegistryEntries.size());
110110
for (EntityTypeRegistryEntry entry : entityTypeRegistryEntries.values()) {
111-
outStream.writeInt(entry.realId);
112-
outStream.writeInt(entry.fallbackId);
111+
outStream.writeShort(entry.realId);
112+
outStream.writeShort(entry.fallbackId);
113113
outStream.writeUTF(entry.name);
114114
}
115115
}

common/src/main/java/com/fox2code/foxloader/registry/GameRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public abstract class GameRegistry {
1919
public static final int MAXIMUM_ITEM_ID = 8192; // Hard max: 31999
2020
public static final int INITIAL_ENTITY_TYPE_ID = 210;
2121
// Array size limit is fuzzy so lets avoid it.
22-
public static final int MAXIMUM_ENTITY_TYPE_ID = Integer.MAX_VALUE - Short.MAX_VALUE;
22+
public static final int MAXIMUM_ENTITY_TYPE_ID = 255; // Integer.MAX_VALUE - Short.MAX_VALUE;
2323
// Block ids but translated to item ids
2424
public static final int INITIAL_TRANSLATED_BLOCK_ID = convertBlockIdToItemId(INITIAL_BLOCK_ID);
2525
public static final int MAXIMUM_TRANSLATED_BLOCK_ID = convertBlockIdToItemId(MAXIMUM_BLOCK_ID);

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ org.gradle.parallel=true
33
org.gradle.jvmargs=-Xmx1024m -XX:-UseGCOverheadLimit -Dfile.encoding=UTF-8
44

55
# FoxLoader properties
6-
foxloader.version=1.2.49
7-
foxloader.lastReIndevTransformerChanges=1.2.49
6+
foxloader.version=1.2.50-alpha1
7+
foxloader.lastReIndevTransformerChanges=1.2.50
88
# https://www.jitpack.io/#com.fox2code/FoxLoader
99

1010
# ReIndev properties

0 commit comments

Comments
 (0)