Metadata utilities
This commit is contained in:
		
							parent
							
								
									9e530ebed8
								
							
						
					
					
						commit
						f7fe6a3187
					
				
					 3 changed files with 32 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -63,6 +63,15 @@ public class EntityMeta implements EntityMetadataProvider {
 | 
			
		|||
        this.metadata = metadata;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public EntityMeta(EntityMeta other) {
 | 
			
		||||
        this(other.entityId, new Metadata(other.entityId));
 | 
			
		||||
        metadata.setMetaFromPacket(other.createPacket());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public EntityMeta(int entityId) {
 | 
			
		||||
        this(entityId, new Metadata(entityId));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setNotifyAboutChanges(boolean notifyAboutChanges) {
 | 
			
		||||
        metadata.setNotifyAboutChanges(notifyAboutChanges);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,13 +19,33 @@ public class Metadata {
 | 
			
		|||
 | 
			
		||||
    private final int entityId;
 | 
			
		||||
    private volatile boolean notifyAboutChanges = true;
 | 
			
		||||
    private final Map<Byte, EntityData> notNotifiedChanges = new HashMap<>();
 | 
			
		||||
    private final Map<Byte, EntityData> metadataMap = new ConcurrentHashMap<>();
 | 
			
		||||
    private final HashMap<Byte, EntityData> notNotifiedChanges = new HashMap<>();
 | 
			
		||||
    private final ConcurrentHashMap<Byte, EntityData> metadataMap = new ConcurrentHashMap<>();
 | 
			
		||||
 | 
			
		||||
    public Metadata(int entityId) {
 | 
			
		||||
        this.entityId = entityId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void copyTo(Metadata other) {
 | 
			
		||||
        other.clear();
 | 
			
		||||
        synchronized (other.notNotifiedChanges) {
 | 
			
		||||
            other.notNotifiedChanges.putAll(notNotifiedChanges);
 | 
			
		||||
        }
 | 
			
		||||
        other.metadataMap.putAll(metadataMap);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void copyFrom(Metadata other) {
 | 
			
		||||
        other.copyTo(this); // Scuffed pepelaugh
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Clears the internal metadata map, is not responsible for informing the clients entity view with the newly reset information
 | 
			
		||||
     */
 | 
			
		||||
    public void clear() {
 | 
			
		||||
        this.metadataMap.clear();
 | 
			
		||||
        this.notNotifiedChanges.clear();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public <T> T getIndex(byte index, @Nullable T defaultValue) {
 | 
			
		||||
        EntityData value = this.metadataMap.get(index);
 | 
			
		||||
        return value != null ? (T) value.getValue() : defaultValue;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
import java.io.ByteArrayOutputStream
 | 
			
		||||
 | 
			
		||||
val fullVersion = "3.0.0"
 | 
			
		||||
val fullVersion = "3.0.1"
 | 
			
		||||
val snapshot = true
 | 
			
		||||
 | 
			
		||||
group = "me.tofaa.entitylib"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue