Java tutorial
/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.network.packet.client; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import matteroverdrive.MatterOverdrive; import matteroverdrive.handler.MatterEntry; import matteroverdrive.network.packet.PacketAbstract; import net.minecraft.entity.player.EntityPlayer; import java.util.HashMap; import java.util.Map; /** * Created by Simeon on 5/9/2015. */ public class PacketUpdateMatterRegistry extends PacketAbstract { private static Map<String, MatterEntry> entries; public PacketUpdateMatterRegistry() { super(); } public PacketUpdateMatterRegistry(Map<String, MatterEntry> entries) { super(); PacketUpdateMatterRegistry.entries = entries; } @Override public void fromBytes(ByteBuf buf) { String key; int keySize; char[] keyChars; int size = buf.readInt(); entries = new HashMap<>(); for (int i = 0; i < size; i++) { keySize = buf.readInt(); keyChars = new char[keySize]; for (int c = 0; c < keySize; c++) { keyChars[c] = buf.readChar(); } key = String.copyValueOf(keyChars); entries.put(key, new MatterEntry(key, buf.readInt(), buf.readByte())); } } @Override public void toBytes(ByteBuf buf) { int size = entries.size(); buf.writeInt(size); for (Map.Entry<String, MatterEntry> entry : entries.entrySet()) { int keySize = entry.getKey().length(); buf.writeInt(keySize); char[] keyChars = entry.getKey().toCharArray(); for (int c = 0; c < keySize; c++) { buf.writeChar(keyChars[c]); } buf.writeInt(entry.getValue().getMatter()); buf.writeByte(entry.getValue().getType()); } } public static class ClientHandler extends AbstractClientPacketHandler<PacketUpdateMatterRegistry> { @Override public IMessage handleClientMessage(EntityPlayer player, PacketUpdateMatterRegistry message, MessageContext ctx) { MatterOverdrive.matterRegistry.setEntries(PacketUpdateMatterRegistry.entries); MatterOverdrive.matterRegistry.hasComplitedRegistration = true; return null; } } }