package net.glowstone.block.state;

import net.glowstone.block.GlowBlock;
import net.glowstone.block.GlowBlockState;
import net.glowstone.block.entity.TEBanner;
import org.apache.commons.lang3.Validate;
import org.bukkit.DyeColor;
import org.bukkit.block.Banner;
import org.bukkit.block.banner.Pattern;

import java.util.ArrayList;
import java.util.List;

public class GlowBanner extends GlowBlockState implements Banner {

    private DyeColor base;
    private List<Pattern> patterns = new ArrayList<>();

    public GlowBanner(GlowBlock block) {
        super(block);
        base = getTileEntity().getBase();
        patterns = getTileEntity().getPatterns();
    }

    private TEBanner getTileEntity() {
        return (TEBanner) getBlock().getTileEntity();
    }

    @Override
    public void setPattern(int i, Pattern pattern) {
        Validate.notNull(pattern, "Pattern cannot be null");
        patterns.set(i, pattern);
    }

    @Override
    public int numberOfPatterns() {
        return patterns.size();
    }

    @Override
    public DyeColor getBaseColor() {
        return base;
    }

    @Override
    public void setBaseColor(DyeColor dyeColor) {
        Validate.notNull(base, "Base cannot be null");
        this.base = base;
    }

    @Override
    public List<Pattern> getPatterns() {
        return patterns;
    }

    @Override
    public void setPatterns(List<Pattern> patterns) {
        this.patterns = patterns;
    }

    @Override
    public void addPattern(Pattern pattern) {
        Validate.notNull(pattern, "Pattern cannot be null");
        patterns.add(pattern);
    }

    @Override
    public Pattern getPattern(int i) {
        return patterns.get(i);
    }

    @Override
    public Pattern removePattern(int i) {
        return patterns.remove(i);
    }

    @Override
    public boolean update(boolean force, boolean applyPhysics) {
        boolean result = super.update(force, applyPhysics);
        if (result) {
            TEBanner banner = getTileEntity();
            banner.setBase(base);
            banner.setPatterns(patterns);
            getTileEntity().updateInRange();
        }
        return result;
    }

    @Override
    public boolean isPlaced() {
        return false;  //To change body of implemented methods use File | Settings | File Templates.
    }
}

@@ -1239,20 +1239,24 @@
 .base = 
-base
+dyeColor
 ;%0A    %7D%0A

Change to actually assign base to something