Fixes #861 Wireless Terminal notifies player, if it is unlinked

This commit is contained in:
thatsIch
2015-03-09 17:53:57 +01:00
parent 63a6037ad2
commit dd1ca1e286
5 changed files with 62 additions and 20 deletions
@@ -18,7 +18,9 @@
package appeng.core.features.registries;
import java.util.HashMap;
import java.util.Map;
import net.minecraftforge.common.MinecraftForge;
@@ -30,13 +32,19 @@ import appeng.api.features.ILocatable;
import appeng.api.features.ILocatableRegistry;
import appeng.util.Platform;
public class LocatableRegistry implements ILocatableRegistry
{
private final HashMap<Long, ILocatable> set;
public final class LocatableRegistry implements ILocatableRegistry
{
private final Map<Long, ILocatable> set;
public LocatableRegistry()
{
this.set = new HashMap<Long, ILocatable>();
MinecraftForge.EVENT_BUS.register( this );
}
@SubscribeEvent
public void updateLocatable(LocatableEventAnnounce e)
public void updateLocatable( LocatableEventAnnounce e )
{
if ( Platform.isClient() )
return; // IGNORE!
@@ -51,18 +59,18 @@ public class LocatableRegistry implements ILocatableRegistry
}
}
public LocatableRegistry() {
this.set = new HashMap<Long, ILocatable>();
MinecraftForge.EVENT_BUS.register( this );
}
/**
* Find a locate-able object by its serial.
*/
@Override
public Object findLocatableBySerial(long ser)
public Object findLocatableBySerial( long ser )
{
return this.set.get( ser );
}
@Override
public ILocatable getLocatableBy( long serial )
{
return this.set.get( serial );
}
}
@@ -18,24 +18,25 @@
package appeng.core.features.registries;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import appeng.api.AEApi;
import appeng.api.features.ILocatable;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.features.IWirelessTermRegistry;
import appeng.core.localization.PlayerMessages;
import appeng.core.sync.GuiBridge;
import appeng.util.Platform;
public class WirelessRegistry implements IWirelessTermRegistry
public final class WirelessRegistry implements IWirelessTermRegistry
{
final List<IWirelessTermHandler> handlers;
private final List<IWirelessTermHandler> handlers;
public WirelessRegistry() {
this.handlers = new ArrayList<IWirelessTermHandler>();
@@ -76,10 +77,25 @@ public class WirelessRegistry implements IWirelessTermRegistry
if ( Platform.isClient() )
return;
IWirelessTermHandler handler = this.getWirelessTerminalHandler( item );
if ( handler == null )
if ( !this.isWirelessTerminal( item ) )
{
player.addChatMessage( new ChatComponentText( "Item is not a wireless terminal." ) );
player.addChatMessage( PlayerMessages.DeviceNotWirelessTerminal.get() );
return;
}
final IWirelessTermHandler handler = this.getWirelessTerminalHandler( item );
final String unparsedKey = handler.getEncryptionKey( item );
if ( unparsedKey.length() == 0 )
{
player.addChatMessage( PlayerMessages.DeviceNotLinked.get() );
return;
}
final long parsedKey = Long.parseLong( unparsedKey );
final ILocatable securityStation = AEApi.instance().registries().locatable().getLocatableBy( parsedKey );
if ( securityStation == null )
{
player.addChatMessage( PlayerMessages.StationCanNotBeLocated.get() );
return;
}
@@ -25,7 +25,10 @@ public enum PlayerMessages
{
ChestCannotReadStorageCell, InvalidMachine, LoadedSettings, SavedSettings, MachineNotPowered,
isNowLocked, isNowUnlocked, AmmoDepleted, CommunicationError, OutOfRange, DeviceNotPowered, SettingCleared;
isNowLocked, isNowUnlocked,
AmmoDepleted,
CommunicationError, OutOfRange, DeviceNotPowered, DeviceNotWirelessTerminal, DeviceNotLinked, StationCanNotBeLocated,
SettingCleared,;
String getName()
{