Github API software updating fully implemented. Overlay color/alpha
control options added. Added ability to disable automatic software update. Fixed emoticon alignment bug for chat log viewer.
This commit is contained in:
parent
b3044fd600
commit
222de35e80
BIN
sigIRCv2.jar
BIN
sigIRCv2.jar
Binary file not shown.
@ -53,7 +53,7 @@ public class Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void enableWindowDrag(int mouseX, int mouseY) {
|
private void enableWindowDrag(int mouseX, int mouseY) {
|
||||||
if (!dragging && inDragBounds(mouseX,mouseY) && !DRAGGING) {
|
if (!sigIRC.overlayMode && !dragging && inDragBounds(mouseX,mouseY) && !DRAGGING) {
|
||||||
//Enable dragging.
|
//Enable dragging.
|
||||||
dragOffset = new Point((int)position.getX() - mouseX,(int)position.getY()-mouseY);
|
dragOffset = new Point((int)position.getX() - mouseX,(int)position.getY()-mouseY);
|
||||||
dragging=DRAGGING=true;
|
dragging=DRAGGING=true;
|
||||||
@ -87,13 +87,15 @@ public class Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void modifyCursor() {
|
private void modifyCursor() {
|
||||||
int cursortype = sigIRC.panel.getCursor().getType();
|
if (!sigIRC.overlayMode) {
|
||||||
if (inDragZone &&
|
int cursortype = sigIRC.panel.getCursor().getType();
|
||||||
cursortype!=Cursor.MOVE_CURSOR) {
|
if (inDragZone &&
|
||||||
sigIRC.panel.setCursor(new Cursor(Cursor.MOVE_CURSOR));
|
cursortype!=Cursor.MOVE_CURSOR) {
|
||||||
} else
|
sigIRC.panel.setCursor(new Cursor(Cursor.MOVE_CURSOR));
|
||||||
if (!inDragZone && cursortype!=Cursor.DEFAULT_CURSOR) {
|
} else
|
||||||
sigIRC.panel.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
if (!inDragZone && cursortype!=Cursor.DEFAULT_CURSOR) {
|
||||||
|
sigIRC.panel.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,13 +137,15 @@ public class Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void drawModuleHeader(Graphics g) {
|
private void drawModuleHeader(Graphics g) {
|
||||||
g.drawImage(Module.IMG_DRAGBAR,
|
if (!sigIRC.overlayMode) {
|
||||||
(int)position.getX()+2,
|
g.drawImage(Module.IMG_DRAGBAR,
|
||||||
(int)position.getY()-Module.IMG_DRAGBAR.getHeight(),
|
(int)position.getX()+2,
|
||||||
(int)position.getWidth()-4,
|
(int)position.getY()-Module.IMG_DRAGBAR.getHeight(),
|
||||||
Module.IMG_DRAGBAR.getHeight(),
|
(int)position.getWidth()-4,
|
||||||
sigIRC.panel);
|
Module.IMG_DRAGBAR.getHeight(),
|
||||||
DrawUtils.drawTextFont(g, sigIRC.panel.smallFont, (int)position.getX(), (int)position.getY()-titleHeight/2+4, Color.BLACK, this.name);
|
sigIRC.panel);
|
||||||
|
DrawUtils.drawTextFont(g, sigIRC.panel.smallFont, (int)position.getX(), (int)position.getY()-titleHeight/2+4, Color.BLACK, this.name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Rectangle2D getDrawBounds() {
|
private Rectangle2D getDrawBounds() {
|
||||||
|
@ -81,6 +81,9 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
|
|||||||
lastMouseY = -1;
|
lastMouseY = -1;
|
||||||
}*/
|
}*/
|
||||||
//
|
//
|
||||||
|
for (Module m : sigIRC.modules) {
|
||||||
|
m.draw(g);
|
||||||
|
}
|
||||||
for (int i=0;i<sigIRC.textobj.size();i++) {
|
for (int i=0;i<sigIRC.textobj.size();i++) {
|
||||||
if (sigIRC.textobj.get(i).isActive()) {
|
if (sigIRC.textobj.get(i).isActive()) {
|
||||||
if (sigIRC.overlayMode) {
|
if (sigIRC.overlayMode) {
|
||||||
@ -96,9 +99,6 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Module m : sigIRC.modules) {
|
|
||||||
m.draw(g);
|
|
||||||
}
|
|
||||||
for (int i=0;i<sigIRC.chatlogtwitchemoticons.size();i++) {
|
for (int i=0;i<sigIRC.chatlogtwitchemoticons.size();i++) {
|
||||||
if (sigIRC.chatlogtwitchemoticons.get(i).textRefIsVisible()) {
|
if (sigIRC.chatlogtwitchemoticons.get(i).textRefIsVisible()) {
|
||||||
sigIRC.chatlogtwitchemoticons.get(i).draw(g);
|
sigIRC.chatlogtwitchemoticons.get(i).draw(g);
|
||||||
@ -226,10 +226,12 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
|
|||||||
m.windowClosed(ev);
|
m.windowClosed(ev);
|
||||||
}
|
}
|
||||||
sigIRC.config.saveProperties();
|
sigIRC.config.saveProperties();
|
||||||
try {
|
if (sigIRC.autoUpdateProgram) {
|
||||||
FileUtils.copyFile(new File(sigIRC.PROGRAM_UPDATE_FILE), new File(sigIRC.BASEDIR+"sigIRCv2.jar"));
|
try {
|
||||||
} catch (IOException e) {
|
FileUtils.copyFile(new File(sigIRC.PROGRAM_UPDATE_FILE), new File(sigIRC.BASEDIR+"sigIRCv2.jar"));
|
||||||
e.printStackTrace();
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,17 +43,17 @@ public class ChatLogMessage {
|
|||||||
}
|
}
|
||||||
this.position.setLocation(this.position.getX(), this.position.getY()-messageDisplaySize.getY()+ChatLogModule.chatlogmodule.scrolllog_yoffset);
|
this.position.setLocation(this.position.getX(), this.position.getY()-messageDisplaySize.getY()+ChatLogModule.chatlogmodule.scrolllog_yoffset);
|
||||||
//System.out.println(displayMessage);
|
//System.out.println(displayMessage);
|
||||||
DetectUsername(displayMessage);
|
this.username = DetectUsername(displayMessage);
|
||||||
if (this.username!=null) {
|
if (this.username!=null) {
|
||||||
displayMessage.set(0,GetMessage(displayMessage.get(0)));
|
displayMessage.set(0,GetMessage(displayMessage.get(0)+" "));
|
||||||
usernameWidth = (int)TextUtils.calculateStringBoundsFont(this.username, sigIRC.panel.userFont).getWidth();
|
usernameWidth = (int)TextUtils.calculateStringBoundsFont(this.username, sigIRC.panel.userFont).getWidth();
|
||||||
}
|
}
|
||||||
for (int i=0;i<displayMessage.size();i++) {
|
for (int i=0;i<displayMessage.size();i++) {
|
||||||
displayMessage.set(i, ReplaceMessageWithEmoticons(displayMessage.get(i)+" ",i*MESSAGE_SPACING));
|
displayMessage.set(i, ReplaceMessageWithEmoticons(displayMessage.get(i)+" ",(i==0)?usernameWidth:0,i*MESSAGE_SPACING));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String ReplaceMessageWithEmoticons(String basemsg, int ypos) {
|
private String ReplaceMessageWithEmoticons(String basemsg, int xpos, int ypos) {
|
||||||
int marker = basemsg.indexOf(" ");
|
int marker = basemsg.indexOf(" ");
|
||||||
while (marker<basemsg.length()) {
|
while (marker<basemsg.length()) {
|
||||||
//Find a space.
|
//Find a space.
|
||||||
@ -64,7 +64,7 @@ public class ChatLogMessage {
|
|||||||
sigIRC.emoticons.addAll(sigIRC.emoticon_queue);
|
sigIRC.emoticons.addAll(sigIRC.emoticon_queue);
|
||||||
sigIRC.emoticon_queue.clear();
|
sigIRC.emoticon_queue.clear();
|
||||||
for (Emoticon e : sigIRC.emoticons) {
|
for (Emoticon e : sigIRC.emoticons) {
|
||||||
//System.out.println("Checking for emoticon "+e.getEmoteName());
|
//System.out.println("Checking for emoticon "+e.getEmoteName()+" vs \""+word+"\"");
|
||||||
try {
|
try {
|
||||||
if (e.getEmoteName().equals(word)) {
|
if (e.getEmoteName().equals(word)) {
|
||||||
if (e instanceof SubEmoticon) {
|
if (e instanceof SubEmoticon) {
|
||||||
@ -76,7 +76,7 @@ public class ChatLogMessage {
|
|||||||
}
|
}
|
||||||
//System.out.println(" Found one!");
|
//System.out.println(" Found one!");
|
||||||
basemsg = TextUtils.replaceFirst(basemsg, e.getEmoteName(), e.getSmallSpaceFiller());
|
basemsg = TextUtils.replaceFirst(basemsg, e.getEmoteName(), e.getSmallSpaceFiller());
|
||||||
GenerateEmoticon(marker+1, ypos, basemsg, e);
|
GenerateEmoticon(marker+1, xpos, ypos, basemsg, e);
|
||||||
space = basemsg.indexOf(" ", marker+1);
|
space = basemsg.indexOf(" ", marker+1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -94,11 +94,12 @@ public class ChatLogMessage {
|
|||||||
return basemsg;
|
return basemsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GenerateEmoticon(int textpos, int ypos, String basemsg, Emoticon e) {
|
private void GenerateEmoticon(int textpos, int xpos, int ypos, String basemsg, Emoticon e) {
|
||||||
String cutstring = basemsg.substring(0, textpos);
|
String cutstring = basemsg.substring(0, textpos);
|
||||||
double width = TextUtils.calculateStringBoundsFont(cutstring, sigIRC.panel.userFont).getWidth();
|
double width = TextUtils.calculateStringBoundsFont(cutstring, sigIRC.panel.userFont).getWidth();
|
||||||
//System.out.println("Width of '"+cutstring+"' is "+width);
|
//System.out.println("Width of '"+cutstring+"' is "+width);
|
||||||
sigIRC.createEmoticon(e, this, (int)(width), ypos+16);
|
//System.out.println("Offsetting emote by "+xpos+"+"+width);
|
||||||
|
sigIRC.createEmoticon(e, this, (int)(xpos+width), ypos+16);
|
||||||
//textMaxHeight = Math.max(textMaxHeight, e.getImage().getHeight());
|
//textMaxHeight = Math.max(textMaxHeight, e.getImage().getHeight());
|
||||||
//textMaxWidth = (int)(width + e.getImage().getWidth()+1);
|
//textMaxWidth = (int)(width + e.getImage().getWidth()+1);
|
||||||
}
|
}
|
||||||
@ -107,16 +108,17 @@ public class ChatLogMessage {
|
|||||||
String basemsg = " "+msg.substring(msg.indexOf(":")+2, msg.length())+" ";
|
String basemsg = " "+msg.substring(msg.indexOf(":")+2, msg.length())+" ";
|
||||||
//basemsg = ConvertMessageSymbols(basemsg);
|
//basemsg = ConvertMessageSymbols(basemsg);
|
||||||
//basemsg = ReplaceMessageWithEmoticons(basemsg);
|
//basemsg = ReplaceMessageWithEmoticons(basemsg);
|
||||||
return basemsg.replaceFirst(" ", "").substring(0,basemsg.length()-1);
|
return basemsg.substring(0,basemsg.length()-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DetectUsername(List<String> messages) {
|
private String DetectUsername(List<String> messages) {
|
||||||
if (messages.size()>0) {
|
if (messages.size()>0) {
|
||||||
String username = GetUsername(messages.get(0));
|
String username = GetUsername(messages.get(0));
|
||||||
if (username!=null) {
|
if (username!=null) {
|
||||||
this.username = username;
|
return username;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Color GetUserNameColor(String username) {
|
private Color GetUserNameColor(String username) {
|
||||||
@ -221,10 +223,12 @@ public class ChatLogMessage {
|
|||||||
|
|
||||||
public static void importMessages(String...logContents) {
|
public static void importMessages(String...logContents) {
|
||||||
for (String s : logContents) {
|
for (String s : logContents) {
|
||||||
if (ChatLogModule.chatlogmodule.messageHistory.size()>=ChatLogModule.messageHistoryCount) {
|
if (s!=null) {
|
||||||
ChatLogModule.chatlogmodule.messageHistory.remove(0).cleanup();
|
if (ChatLogModule.chatlogmodule.messageHistory.size()>=ChatLogModule.messageHistoryCount) {
|
||||||
|
ChatLogModule.chatlogmodule.messageHistory.remove(0).cleanup();
|
||||||
|
}
|
||||||
|
ChatLogModule.chatlogmodule.messageHistory.add(new ChatLogMessage(s));
|
||||||
}
|
}
|
||||||
ChatLogModule.chatlogmodule.messageHistory.add(new ChatLogMessage(s));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import javax.swing.SwingUtilities;
|
|||||||
import sig.Module;
|
import sig.Module;
|
||||||
import sig.sigIRC;
|
import sig.sigIRC;
|
||||||
import sig.modules.ChatLog.ChatLogMessage;
|
import sig.modules.ChatLog.ChatLogMessage;
|
||||||
|
import sig.utils.DrawUtils;
|
||||||
import sig.utils.FileUtils;
|
import sig.utils.FileUtils;
|
||||||
|
|
||||||
public class ChatLogModule extends Module{
|
public class ChatLogModule extends Module{
|
||||||
@ -27,11 +28,13 @@ public class ChatLogModule extends Module{
|
|||||||
boolean initialized=false;
|
boolean initialized=false;
|
||||||
public static ChatLogModule chatlogmodule;
|
public static ChatLogModule chatlogmodule;
|
||||||
public int scrolllog_yoffset = 0;
|
public int scrolllog_yoffset = 0;
|
||||||
|
public Color backgroundColor;
|
||||||
|
|
||||||
public ChatLogModule(Rectangle2D bounds, String moduleName) {
|
public ChatLogModule(Rectangle2D bounds, String moduleName) {
|
||||||
super(bounds, moduleName);
|
super(bounds, moduleName);
|
||||||
//Initialize();
|
//Initialize();
|
||||||
chatlogmodule = this;
|
chatlogmodule = this;
|
||||||
|
backgroundColor = DrawUtils.convertStringToColor(sigIRC.chatlogmodule_backgroundColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Initialize() {
|
private void Initialize() {
|
||||||
@ -45,7 +48,7 @@ public class ChatLogModule extends Module{
|
|||||||
logContents = Arrays.copyOfRange(logContents, logContents.length-messageHistoryCount-1, logContents.length);
|
logContents = Arrays.copyOfRange(logContents, logContents.length-messageHistoryCount-1, logContents.length);
|
||||||
}
|
}
|
||||||
ChatLogMessage.importMessages(logContents);
|
ChatLogMessage.importMessages(logContents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -72,7 +75,7 @@ public class ChatLogModule extends Module{
|
|||||||
|
|
||||||
public void draw(Graphics g) {
|
public void draw(Graphics g) {
|
||||||
super.draw(g);
|
super.draw(g);
|
||||||
g.setColor(new Color(195,195,195,255));
|
g.setColor(backgroundColor);
|
||||||
g.fill3DRect((int)position.getX(), (int)position.getY(), (int)position.getWidth(), (int)position.getHeight(), true);
|
g.fill3DRect((int)position.getX(), (int)position.getY(), (int)position.getWidth(), (int)position.getHeight(), true);
|
||||||
g.setColor(Color.BLACK);
|
g.setColor(Color.BLACK);
|
||||||
for (int i=0; i<messageHistory.size();i++) {
|
for (int i=0; i<messageHistory.size();i++) {
|
||||||
|
@ -119,6 +119,7 @@ public class sigIRC{
|
|||||||
public static String twitchmodule_newfollowerImgBackgroundColor="90,90,90";
|
public static String twitchmodule_newfollowerImgBackgroundColor="90,90,90";
|
||||||
public static String twitchmodule_newfollowerShadowTextColor="26,90,150";
|
public static String twitchmodule_newfollowerShadowTextColor="26,90,150";
|
||||||
public static String twitchmodule_newfollowerTextColor="255,255,255";
|
public static String twitchmodule_newfollowerTextColor="255,255,255";
|
||||||
|
public static String chatlogmodule_backgroundColor="195,195,195,255";
|
||||||
public static int twitchmodule_newfollowerImgLogoSize=32;
|
public static int twitchmodule_newfollowerImgLogoSize=32;
|
||||||
public static boolean testMode=false;
|
public static boolean testMode=false;
|
||||||
public final static String TWITCHEMOTEURL = "https://static-cdn.jtvnw.net/emoticons/v1/";
|
public final static String TWITCHEMOTEURL = "https://static-cdn.jtvnw.net/emoticons/v1/";
|
||||||
@ -182,6 +183,7 @@ public class sigIRC{
|
|||||||
chatlogmodule_Y = config.getInteger("CHATLOG_module_Y",312);
|
chatlogmodule_Y = config.getInteger("CHATLOG_module_Y",312);
|
||||||
chatlogmodule_width = config.getInteger("CHATLOG_module_width",320);
|
chatlogmodule_width = config.getInteger("CHATLOG_module_width",320);
|
||||||
chatlogmodule_height = config.getInteger("CHATLOG_module_height",312);
|
chatlogmodule_height = config.getInteger("CHATLOG_module_height",312);
|
||||||
|
chatlogmodule_backgroundColor = config.getProperty("CHATLOG_module_BackgroundColor", "195,195,195,255");
|
||||||
chatlogMessageHistory = config.getInteger("CHATLOG_module_MessageHistory",50);
|
chatlogMessageHistory = config.getInteger("CHATLOG_module_MessageHistory",50);
|
||||||
hardwareAcceleration = config.getBoolean("hardware_acceleration",true);
|
hardwareAcceleration = config.getBoolean("hardware_acceleration",true);
|
||||||
autoUpdateProgram = config.getBoolean("Automatically_Update_Program", true);
|
autoUpdateProgram = config.getBoolean("Automatically_Update_Program", true);
|
||||||
@ -229,7 +231,7 @@ public class sigIRC{
|
|||||||
public static void DownloadAllRequiredDependencies() {
|
public static void DownloadAllRequiredDependencies() {
|
||||||
FileManager manager = new FileManager("sigIRC/oauthToken.txt"); manager.verifyAndFetchFileFromServer();
|
FileManager manager = new FileManager("sigIRC/oauthToken.txt"); manager.verifyAndFetchFileFromServer();
|
||||||
manager = new FileManager("sigIRC/Emotes/",true); manager.verifyAndFetchFileFromServer();
|
manager = new FileManager("sigIRC/Emotes/",true); manager.verifyAndFetchFileFromServer();
|
||||||
manager = new FileManager("sigIRC/Emotes/subscribers.txt"); manager.verifyAndFetchFileFromServer();
|
manager = new FileManager("sigIRC/subscribers.txt"); manager.verifyAndFetchFileFromServer();
|
||||||
manager = new FileManager("sigIRC/logs/",true); manager.verifyAndFetchFileFromServer();
|
manager = new FileManager("sigIRC/logs/",true); manager.verifyAndFetchFileFromServer();
|
||||||
manager = new FileManager("sigIRC/sounds/",true); manager.verifyAndFetchFileFromServer();
|
manager = new FileManager("sigIRC/sounds/",true); manager.verifyAndFetchFileFromServer();
|
||||||
//manager = new FileManager("sigIRC/sounds/Glaceon_cry.wav"); manager.verifyAndFetchFileFromServer();
|
//manager = new FileManager("sigIRC/sounds/Glaceon_cry.wav"); manager.verifyAndFetchFileFromServer();
|
||||||
@ -270,6 +272,7 @@ public class sigIRC{
|
|||||||
long fileSize = GithubUtils.getSizeOfFileFromLatestGithubCommit("sigIRCv2.jar");
|
long fileSize = GithubUtils.getSizeOfFileFromLatestGithubCommit("sigIRCv2.jar");
|
||||||
System.out.println("File size on Github is "+fileSize);
|
System.out.println("File size on Github is "+fileSize);
|
||||||
if (fileSize!=programFile.length()) {
|
if (fileSize!=programFile.length()) {
|
||||||
|
System.out.println("File size on Github varies from currently running program... Downloading new program.");
|
||||||
try {
|
try {
|
||||||
if (programFile.exists()) {
|
if (programFile.exists()) {
|
||||||
programFile.delete();
|
programFile.delete();
|
||||||
@ -404,7 +407,7 @@ public class sigIRC{
|
|||||||
System.out.println("Emote "+id+" with name "+name);
|
System.out.println("Emote "+id+" with name "+name);
|
||||||
}
|
}
|
||||||
//System.out.println("Subscriber object: "+subemotes);
|
//System.out.println("Subscriber object: "+subemotes);
|
||||||
String[] channel_names = FileUtils.readFromFile(sigIRC.BASEDIR+"sigIRC/Emotes/subscribers.txt");
|
String[] channel_names = FileUtils.readFromFile(sigIRC.BASEDIR+"sigIRC/subscribers.txt");
|
||||||
subchannelCount = channel_names.length;
|
subchannelCount = channel_names.length;
|
||||||
//System.out.println("Expecting "+subchannelCount+" Channel IDs.");
|
//System.out.println("Expecting "+subchannelCount+" Channel IDs.");
|
||||||
for (String s : channel_names) {
|
for (String s : channel_names) {
|
||||||
|
@ -70,4 +70,24 @@ public class DrawUtils {
|
|||||||
Rectangle2D textBounds = TextUtils.calculateStringBoundsFont(text, font);
|
Rectangle2D textBounds = TextUtils.calculateStringBoundsFont(text, font);
|
||||||
g.drawString(as.getIterator(),(int)(x-textBounds.getWidth()/2),(int)(y+textBounds.getHeight()));
|
g.drawString(as.getIterator(),(int)(x-textBounds.getWidth()/2),(int)(y+textBounds.getHeight()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Color convertStringToColor(String s) {
|
||||||
|
String[] split = s.split(",");
|
||||||
|
if (split.length==3) {
|
||||||
|
return new Color(
|
||||||
|
Math.min(Math.abs(Integer.parseInt(split[0])),255),
|
||||||
|
Math.min(Math.abs(Integer.parseInt(split[1])),255),
|
||||||
|
Math.min(Math.abs(Integer.parseInt(split[2])),255));
|
||||||
|
} else
|
||||||
|
if (split.length==4) {
|
||||||
|
return new Color(
|
||||||
|
Math.min(Math.abs(Integer.parseInt(split[0])),255),
|
||||||
|
Math.min(Math.abs(Integer.parseInt(split[1])),255),
|
||||||
|
Math.min(Math.abs(Integer.parseInt(split[2])),255),
|
||||||
|
Math.min(Math.abs(Integer.parseInt(split[3])),255));
|
||||||
|
} else {
|
||||||
|
System.out.println("WARNING! Invalid Color string specified ("+s+").");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user