Skip to content

Commit

Permalink
Create MixinPacketBuffer
Browse files Browse the repository at this point in the history
As a result of this change, the integer item ID is sent (as variable length integer) instead of truncating to a short.

Closes #106
  • Loading branch information
sam-kirby committed Nov 18, 2019
1 parent a382465 commit 38e8105
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 3 deletions.
2 changes: 0 additions & 2 deletions src/main/java/org/dimdev/jeid/JEID.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ public void onPreInit(FMLPreInitializationEvent event) {
for (int i = 0; i < 5000; i++) {
Block block = new Block(Material.GROUND)
.setCreativeTab(CreativeTabs.BUILDING_BLOCKS)
.setRegistryName("block_" + i)
.setRegistryName(new ResourceLocation("jeid:block_" + i));

blockRegistry.register(block);
Expand All @@ -64,7 +63,6 @@ public void onPreInit(FMLPreInitializationEvent event) {
for (int i = 0; i < 40000; i++) {
Item item = new Item()
.setCreativeTab(CreativeTabs.FOOD)
.setRegistryName("item_" + i)
.setRegistryName(new ResourceLocation("jeid:item_" + i));

itemRegistry.register(item);
Expand Down
55 changes: 55 additions & 0 deletions src/main/java/org/dimdev/jeid/mixin/core/MixinPacketBuffer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.dimdev.jeid.mixin.core;

import io.netty.buffer.ByteBuf;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import javax.annotation.Nullable;
import java.io.IOException;

@Mixin(PacketBuffer.class)
public abstract class MixinPacketBuffer {
@Shadow public abstract byte readByte();

@Shadow public abstract short readShort();

@Shadow public abstract int readVarInt();

@Shadow @Nullable public abstract NBTTagCompound readCompoundTag() throws IOException;

@Shadow public abstract PacketBuffer writeVarInt(int input);

@Redirect(method = "writeItemStack", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketBuffer;writeShort(I)Lio/netty/buffer/ByteBuf;", ordinal = 0))
private ByteBuf writeIntItemId(PacketBuffer packetBuffer, int p_writeShort_1_) {
return this.writeVarInt(p_writeShort_1_);
}

@Redirect(method = "writeItemStack", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketBuffer;writeShort(I)Lio/netty/buffer/ByteBuf;", ordinal = 1))
private ByteBuf writeIntItemId1(PacketBuffer packetBuffer, int p_writeShort_1_) {
return this.writeVarInt(p_writeShort_1_);
}


@Inject(method = "readItemStack", at = @At(value = "HEAD"), cancellable = true)
private void readIntItemId(CallbackInfoReturnable<ItemStack> cir) throws IOException {
int i = this.readVarInt();

if (i < 0) {
cir.setReturnValue(ItemStack.EMPTY);
} else {
int j = this.readByte();
int k = this.readShort();
ItemStack itemstack = new ItemStack(Item.getItemById(i), j, k);
itemstack.getItem().readNBTShareTag(itemstack, this.readCompoundTag());
cir.setReturnValue(itemstack);
}
}
}
3 changes: 2 additions & 1 deletion src/main/resources/mixins.jeid.core.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"MixinChunkProviderServer",
"MixinWorldInfo",
"MixinEnchantmentHelper",
"MixinItemEnchantedBook"
"MixinItemEnchantedBook",
"MixinPacketBuffer"
],
"client": [
"client.MixinChunk",
Expand Down

0 comments on commit 38e8105

Please sign in to comment.