Skip to content
Permalink
Browse files
SMP Registered Player event anyone? When a player joins a "registered…
…_player_join" event will be queued on the computers that their bridge is attached (player must be wearing glasses that are registered to a bridge)
  • Loading branch information
theoriginalbit committed Sep 30, 2013
1 parent 36a7bd6 commit b982976
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 4 deletions.
@@ -8,6 +8,7 @@
import openperipheral.core.BasicMount;
import openperipheral.core.CommonProxy;
import openperipheral.core.ConfigSettings;
import openperipheral.core.ConnectionHandler;
import openperipheral.core.Mods;
import openperipheral.core.PeripheralHandler;
import openperipheral.core.TickHandler;
@@ -61,6 +62,7 @@
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.TickRegistry;
import cpw.mods.fml.relauncher.Side;
import dan200.computer.api.ComputerCraftAPI;
@@ -182,7 +184,7 @@ public void init(FMLInitializationEvent evt) {

TickRegistry.registerTickHandler(new TickHandler(), Side.SERVER);
ComputerCraftAPI.registerExternalPeripheral(TileEntity.class, peripheralHandler);

NetworkRegistry.instance().registerConnectionHandler(new ConnectionHandler());
}

}
@@ -0,0 +1,47 @@
package openperipheral.core;

import openperipheral.core.item.ItemGlasses;
import openperipheral.core.util.MiscUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.NetLoginHandler;
import net.minecraft.network.packet.NetHandler;
import net.minecraft.network.packet.Packet1Login;
import net.minecraft.server.MinecraftServer;
import cpw.mods.fml.common.network.IConnectionHandler;
import cpw.mods.fml.common.network.Player;

public class ConnectionHandler implements IConnectionHandler {
public static final String PLAYER_EVENT = "registered_player_join";

@Override
public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager) {
EntityPlayer realPlayer = netHandler.getPlayer();
ItemStack helmet = realPlayer.inventory.armorInventory[3];
if (helmet == null) return;
if (!MiscUtils.canBeGlasses(helmet)) return;
ItemGlasses glasses = ((ItemGlasses)helmet.getItem());
if (glasses.bridge != null) {
glasses.bridge.enqueueComputerEvent(PLAYER_EVENT, realPlayer.username);
}
}

@Override
public String connectionReceived(NetLoginHandler netHandler, INetworkManager manager) {
return null;
}

@Override
public void connectionOpened(NetHandler netClientHandler, String server, int port, INetworkManager manager) {}

@Override
public void connectionOpened(NetHandler netClientHandler, MinecraftServer server, INetworkManager manager) {}

@Override
public void connectionClosed(INetworkManager manager) {}

@Override
public void clientLoggedIn(NetHandler clientHandler, INetworkManager manager, Packet1Login login) {}

}
@@ -14,11 +14,13 @@
import openperipheral.core.ConfigSettings;
import openperipheral.core.util.MiscUtils;
import openperipheral.core.util.RecipeUtils;
import openperipheral.glasses.block.TileEntityGlassesBridge;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class ItemGlasses extends ItemArmor {

public TileEntityGlassesBridge bridge = null;

public ItemGlasses() {
super(ConfigSettings.glassesId, EnumArmorMaterial.CHAIN, 0, 0);
setMaxDamage(0);
@@ -27,14 +29,14 @@ public ItemGlasses() {
setCreativeTab(OpenPeripheral.tabOpenPeripheral);
setUnlocalizedName("openperipheral.glasses");
}

@Override
@SideOnly(Side.CLIENT)
public void getSubItems(int id, CreativeTabs tab, List subItems) {
subItems.add(new ItemStack(id, 1, 0));
subItems.add(RecipeUtils.getGuideItemStack());
}

@SideOnly(Side.CLIENT)
@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean par4) {
@@ -19,6 +19,7 @@
import openperipheral.core.interfaces.IAttachable;
import openperipheral.core.interfaces.IDrawable;
import openperipheral.core.interfaces.ISurface;
import openperipheral.core.item.ItemGlasses;
import openperipheral.core.util.MiscUtils;
import openperipheral.core.util.PacketChunker;
import openperipheral.core.util.StringUtils;
@@ -229,6 +230,12 @@ public void onChatCommand(String command, String username) {
username, getGuid(), computer.getAttachmentName() });
}
}

public void enqueueComputerEvent(String event, String playerName) {
for (IComputerAccess computer :computers) {
computer.queueEvent(event, new Object[] { playerName });
}
}

@Override
public void addComputer(IComputerAccess computer) {
@@ -296,6 +303,7 @@ public void writeDataToGlasses(ItemStack stack) {
openPTag.setInteger("d", worldObj.provider.dimensionId);
tag.setTag("openp", openPTag);
stack.setTagCompound(tag);
((ItemGlasses)stack.getItem()).bridge = this;
}

@Override

0 comments on commit b982976

Please sign in to comment.